This file is indexed.

/usr/include/thunderbird/nsITableEditor.h is in thunderbird-dev 1:52.8.0-1~deb8u1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM ../../../dist/idl/nsITableEditor.idl
 */

#ifndef __gen_nsITableEditor_h__
#define __gen_nsITableEditor_h__


#ifndef __gen_nsISupports_h__
#include "nsISupports.h"
#endif

/* For IDL files that don't want to include root IDL files. */
#ifndef NS_NO_VTABLE
#define NS_NO_VTABLE
#endif
class nsIDOMNode; /* forward declaration */

class nsIDOMElement; /* forward declaration */

class nsIDOMRange; /* forward declaration */


/* starting interface:    nsITableEditor */
#define NS_ITABLEEDITOR_IID_STR "4805e684-49b9-11d3-9ce4-ed60bd6cb5bc"

#define NS_ITABLEEDITOR_IID \
  {0x4805e684, 0x49b9, 0x11d3, \
    { 0x9c, 0xe4, 0xed, 0x60, 0xbd, 0x6c, 0xb5, 0xbc }}

class NS_NO_VTABLE nsITableEditor : public nsISupports {
 public:

  NS_DECLARE_STATIC_IID_ACCESSOR(NS_ITABLEEDITOR_IID)

  enum {
    eNoSearch = 0,
    ePreviousColumn = 1,
    ePreviousRow = 2
  };

  /* void insertTableCell (in long aNumber, in boolean aAfter); */
  NS_IMETHOD InsertTableCell(int32_t aNumber, bool aAfter) = 0;

  /* void insertTableColumn (in long aNumber, in boolean aAfter); */
  NS_IMETHOD InsertTableColumn(int32_t aNumber, bool aAfter) = 0;

  /* void insertTableRow (in long aNumber, in boolean aAfter); */
  NS_IMETHOD InsertTableRow(int32_t aNumber, bool aAfter) = 0;

  /* void deleteTable (); */
  NS_IMETHOD DeleteTable(void) = 0;

  /* void deleteTableCellContents (); */
  NS_IMETHOD DeleteTableCellContents(void) = 0;

  /* void deleteTableCell (in long aNumber); */
  NS_IMETHOD DeleteTableCell(int32_t aNumber) = 0;

  /* void deleteTableColumn (in long aNumber); */
  NS_IMETHOD DeleteTableColumn(int32_t aNumber) = 0;

  /* void deleteTableRow (in long aNumber); */
  NS_IMETHOD DeleteTableRow(int32_t aNumber) = 0;

  /* void selectTableCell (); */
  NS_IMETHOD SelectTableCell(void) = 0;

  /* void selectBlockOfCells (in nsIDOMElement aStartCell, in nsIDOMElement aEndCell); */
  NS_IMETHOD SelectBlockOfCells(nsIDOMElement *aStartCell, nsIDOMElement *aEndCell) = 0;

  /* void selectTableRow (); */
  NS_IMETHOD SelectTableRow(void) = 0;

  /* void selectTableColumn (); */
  NS_IMETHOD SelectTableColumn(void) = 0;

  /* void selectTable (); */
  NS_IMETHOD SelectTable(void) = 0;

  /* void selectAllTableCells (); */
  NS_IMETHOD SelectAllTableCells(void) = 0;

  /* nsIDOMElement switchTableCellHeaderType (in nsIDOMElement aSourceCell); */
  NS_IMETHOD SwitchTableCellHeaderType(nsIDOMElement *aSourceCell, nsIDOMElement * *_retval) = 0;

  /* void joinTableCells (in boolean aMergeNonContiguousContents); */
  NS_IMETHOD JoinTableCells(bool aMergeNonContiguousContents) = 0;

  /* void splitTableCell (); */
  NS_IMETHOD SplitTableCell(void) = 0;

  /* void normalizeTable (in nsIDOMElement aTable); */
  NS_IMETHOD NormalizeTable(nsIDOMElement *aTable) = 0;

  /* void getCellIndexes (in nsIDOMElement aCell, out long aRowIndex, out long aColIndex); */
  NS_IMETHOD GetCellIndexes(nsIDOMElement *aCell, int32_t *aRowIndex, int32_t *aColIndex) = 0;

  /* void getTableSize (in nsIDOMElement aTable, out long aRowCount, out long aColCount); */
  NS_IMETHOD GetTableSize(nsIDOMElement *aTable, int32_t *aRowCount, int32_t *aColCount) = 0;

  /* nsIDOMElement getCellAt (in nsIDOMElement aTable, in long aRowIndex, in long aColIndex); */
  NS_IMETHOD GetCellAt(nsIDOMElement *aTable, int32_t aRowIndex, int32_t aColIndex, nsIDOMElement * *_retval) = 0;

  /* void getCellDataAt (in nsIDOMElement aTable, in long aRowIndex, in long aColIndex, out nsIDOMElement aCell, out long aStartRowIndex, out long aStartColIndex, out long aRowSpan, out long aColSpan, out long aActualRowSpan, out long aActualColSpan, out boolean aIsSelected); */
  NS_IMETHOD GetCellDataAt(nsIDOMElement *aTable, int32_t aRowIndex, int32_t aColIndex, nsIDOMElement * *aCell, int32_t *aStartRowIndex, int32_t *aStartColIndex, int32_t *aRowSpan, int32_t *aColSpan, int32_t *aActualRowSpan, int32_t *aActualColSpan, bool *aIsSelected) = 0;

  /* nsIDOMNode getFirstRow (in nsIDOMElement aTableElement); */
  NS_IMETHOD GetFirstRow(nsIDOMElement *aTableElement, nsIDOMNode * *_retval) = 0;

  /* nsIDOMNode getNextRow (in nsIDOMNode aTableElement); */
  NS_IMETHOD GetNextRow(nsIDOMNode *aTableElement, nsIDOMNode * *_retval) = 0;

  /* void setSelectionAfterTableEdit (in nsIDOMElement aTable, in long aRow, in long aCol, in long aDirection, in boolean aSelected); */
  NS_IMETHOD SetSelectionAfterTableEdit(nsIDOMElement *aTable, int32_t aRow, int32_t aCol, int32_t aDirection, bool aSelected) = 0;

  /* nsIDOMElement getSelectedOrParentTableElement (out AString aTagName, out long aCount); */
  NS_IMETHOD GetSelectedOrParentTableElement(nsAString & aTagName, int32_t *aCount, nsIDOMElement * *_retval) = 0;

  /* uint32_t getSelectedCellsType (in nsIDOMElement aElement); */
  NS_IMETHOD GetSelectedCellsType(nsIDOMElement *aElement, uint32_t *_retval) = 0;

  /* nsIDOMElement getFirstSelectedCell (out nsIDOMRange aRange); */
  NS_IMETHOD GetFirstSelectedCell(nsIDOMRange * *aRange, nsIDOMElement * *_retval) = 0;

  /* nsIDOMElement getFirstSelectedCellInTable (out long aRowIndex, out long aColIndex); */
  NS_IMETHOD GetFirstSelectedCellInTable(int32_t *aRowIndex, int32_t *aColIndex, nsIDOMElement * *_retval) = 0;

  /* nsIDOMElement getNextSelectedCell (out nsIDOMRange aRange); */
  NS_IMETHOD GetNextSelectedCell(nsIDOMRange * *aRange, nsIDOMElement * *_retval) = 0;

};

  NS_DEFINE_STATIC_IID_ACCESSOR(nsITableEditor, NS_ITABLEEDITOR_IID)

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSITABLEEDITOR \
  NS_IMETHOD InsertTableCell(int32_t aNumber, bool aAfter) override; \
  NS_IMETHOD InsertTableColumn(int32_t aNumber, bool aAfter) override; \
  NS_IMETHOD InsertTableRow(int32_t aNumber, bool aAfter) override; \
  NS_IMETHOD DeleteTable(void) override; \
  NS_IMETHOD DeleteTableCellContents(void) override; \
  NS_IMETHOD DeleteTableCell(int32_t aNumber) override; \
  NS_IMETHOD DeleteTableColumn(int32_t aNumber) override; \
  NS_IMETHOD DeleteTableRow(int32_t aNumber) override; \
  NS_IMETHOD SelectTableCell(void) override; \
  NS_IMETHOD SelectBlockOfCells(nsIDOMElement *aStartCell, nsIDOMElement *aEndCell) override; \
  NS_IMETHOD SelectTableRow(void) override; \
  NS_IMETHOD SelectTableColumn(void) override; \
  NS_IMETHOD SelectTable(void) override; \
  NS_IMETHOD SelectAllTableCells(void) override; \
  NS_IMETHOD SwitchTableCellHeaderType(nsIDOMElement *aSourceCell, nsIDOMElement * *_retval) override; \
  NS_IMETHOD JoinTableCells(bool aMergeNonContiguousContents) override; \
  NS_IMETHOD SplitTableCell(void) override; \
  NS_IMETHOD NormalizeTable(nsIDOMElement *aTable) override; \
  NS_IMETHOD GetCellIndexes(nsIDOMElement *aCell, int32_t *aRowIndex, int32_t *aColIndex) override; \
  NS_IMETHOD GetTableSize(nsIDOMElement *aTable, int32_t *aRowCount, int32_t *aColCount) override; \
  NS_IMETHOD GetCellAt(nsIDOMElement *aTable, int32_t aRowIndex, int32_t aColIndex, nsIDOMElement * *_retval) override; \
  NS_IMETHOD GetCellDataAt(nsIDOMElement *aTable, int32_t aRowIndex, int32_t aColIndex, nsIDOMElement * *aCell, int32_t *aStartRowIndex, int32_t *aStartColIndex, int32_t *aRowSpan, int32_t *aColSpan, int32_t *aActualRowSpan, int32_t *aActualColSpan, bool *aIsSelected) override; \
  NS_IMETHOD GetFirstRow(nsIDOMElement *aTableElement, nsIDOMNode * *_retval) override; \
  NS_IMETHOD GetNextRow(nsIDOMNode *aTableElement, nsIDOMNode * *_retval) override; \
  NS_IMETHOD SetSelectionAfterTableEdit(nsIDOMElement *aTable, int32_t aRow, int32_t aCol, int32_t aDirection, bool aSelected) override; \
  NS_IMETHOD GetSelectedOrParentTableElement(nsAString & aTagName, int32_t *aCount, nsIDOMElement * *_retval) override; \
  NS_IMETHOD GetSelectedCellsType(nsIDOMElement *aElement, uint32_t *_retval) override; \
  NS_IMETHOD GetFirstSelectedCell(nsIDOMRange * *aRange, nsIDOMElement * *_retval) override; \
  NS_IMETHOD GetFirstSelectedCellInTable(int32_t *aRowIndex, int32_t *aColIndex, nsIDOMElement * *_retval) override; \
  NS_IMETHOD GetNextSelectedCell(nsIDOMRange * *aRange, nsIDOMElement * *_retval) override; 

/* Use this macro when declaring the members of this interface when the
   class doesn't implement the interface. This is useful for forwarding. */
#define NS_DECL_NON_VIRTUAL_NSITABLEEDITOR \
  NS_METHOD InsertTableCell(int32_t aNumber, bool aAfter); \
  NS_METHOD InsertTableColumn(int32_t aNumber, bool aAfter); \
  NS_METHOD InsertTableRow(int32_t aNumber, bool aAfter); \
  NS_METHOD DeleteTable(void); \
  NS_METHOD DeleteTableCellContents(void); \
  NS_METHOD DeleteTableCell(int32_t aNumber); \
  NS_METHOD DeleteTableColumn(int32_t aNumber); \
  NS_METHOD DeleteTableRow(int32_t aNumber); \
  NS_METHOD SelectTableCell(void); \
  NS_METHOD SelectBlockOfCells(nsIDOMElement *aStartCell, nsIDOMElement *aEndCell); \
  NS_METHOD SelectTableRow(void); \
  NS_METHOD SelectTableColumn(void); \
  NS_METHOD SelectTable(void); \
  NS_METHOD SelectAllTableCells(void); \
  NS_METHOD SwitchTableCellHeaderType(nsIDOMElement *aSourceCell, nsIDOMElement * *_retval); \
  NS_METHOD JoinTableCells(bool aMergeNonContiguousContents); \
  NS_METHOD SplitTableCell(void); \
  NS_METHOD NormalizeTable(nsIDOMElement *aTable); \
  NS_METHOD GetCellIndexes(nsIDOMElement *aCell, int32_t *aRowIndex, int32_t *aColIndex); \
  NS_METHOD GetTableSize(nsIDOMElement *aTable, int32_t *aRowCount, int32_t *aColCount); \
  NS_METHOD GetCellAt(nsIDOMElement *aTable, int32_t aRowIndex, int32_t aColIndex, nsIDOMElement * *_retval); \
  NS_METHOD GetCellDataAt(nsIDOMElement *aTable, int32_t aRowIndex, int32_t aColIndex, nsIDOMElement * *aCell, int32_t *aStartRowIndex, int32_t *aStartColIndex, int32_t *aRowSpan, int32_t *aColSpan, int32_t *aActualRowSpan, int32_t *aActualColSpan, bool *aIsSelected); \
  NS_METHOD GetFirstRow(nsIDOMElement *aTableElement, nsIDOMNode * *_retval); \
  NS_METHOD GetNextRow(nsIDOMNode *aTableElement, nsIDOMNode * *_retval); \
  NS_METHOD SetSelectionAfterTableEdit(nsIDOMElement *aTable, int32_t aRow, int32_t aCol, int32_t aDirection, bool aSelected); \
  NS_METHOD GetSelectedOrParentTableElement(nsAString & aTagName, int32_t *aCount, nsIDOMElement * *_retval); \
  NS_METHOD GetSelectedCellsType(nsIDOMElement *aElement, uint32_t *_retval); \
  NS_METHOD GetFirstSelectedCell(nsIDOMRange * *aRange, nsIDOMElement * *_retval); \
  NS_METHOD GetFirstSelectedCellInTable(int32_t *aRowIndex, int32_t *aColIndex, nsIDOMElement * *_retval); \
  NS_METHOD GetNextSelectedCell(nsIDOMRange * *aRange, nsIDOMElement * *_retval); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSITABLEEDITOR(_to) \
  NS_IMETHOD InsertTableCell(int32_t aNumber, bool aAfter) override { return _to InsertTableCell(aNumber, aAfter); } \
  NS_IMETHOD InsertTableColumn(int32_t aNumber, bool aAfter) override { return _to InsertTableColumn(aNumber, aAfter); } \
  NS_IMETHOD InsertTableRow(int32_t aNumber, bool aAfter) override { return _to InsertTableRow(aNumber, aAfter); } \
  NS_IMETHOD DeleteTable(void) override { return _to DeleteTable(); } \
  NS_IMETHOD DeleteTableCellContents(void) override { return _to DeleteTableCellContents(); } \
  NS_IMETHOD DeleteTableCell(int32_t aNumber) override { return _to DeleteTableCell(aNumber); } \
  NS_IMETHOD DeleteTableColumn(int32_t aNumber) override { return _to DeleteTableColumn(aNumber); } \
  NS_IMETHOD DeleteTableRow(int32_t aNumber) override { return _to DeleteTableRow(aNumber); } \
  NS_IMETHOD SelectTableCell(void) override { return _to SelectTableCell(); } \
  NS_IMETHOD SelectBlockOfCells(nsIDOMElement *aStartCell, nsIDOMElement *aEndCell) override { return _to SelectBlockOfCells(aStartCell, aEndCell); } \
  NS_IMETHOD SelectTableRow(void) override { return _to SelectTableRow(); } \
  NS_IMETHOD SelectTableColumn(void) override { return _to SelectTableColumn(); } \
  NS_IMETHOD SelectTable(void) override { return _to SelectTable(); } \
  NS_IMETHOD SelectAllTableCells(void) override { return _to SelectAllTableCells(); } \
  NS_IMETHOD SwitchTableCellHeaderType(nsIDOMElement *aSourceCell, nsIDOMElement * *_retval) override { return _to SwitchTableCellHeaderType(aSourceCell, _retval); } \
  NS_IMETHOD JoinTableCells(bool aMergeNonContiguousContents) override { return _to JoinTableCells(aMergeNonContiguousContents); } \
  NS_IMETHOD SplitTableCell(void) override { return _to SplitTableCell(); } \
  NS_IMETHOD NormalizeTable(nsIDOMElement *aTable) override { return _to NormalizeTable(aTable); } \
  NS_IMETHOD GetCellIndexes(nsIDOMElement *aCell, int32_t *aRowIndex, int32_t *aColIndex) override { return _to GetCellIndexes(aCell, aRowIndex, aColIndex); } \
  NS_IMETHOD GetTableSize(nsIDOMElement *aTable, int32_t *aRowCount, int32_t *aColCount) override { return _to GetTableSize(aTable, aRowCount, aColCount); } \
  NS_IMETHOD GetCellAt(nsIDOMElement *aTable, int32_t aRowIndex, int32_t aColIndex, nsIDOMElement * *_retval) override { return _to GetCellAt(aTable, aRowIndex, aColIndex, _retval); } \
  NS_IMETHOD GetCellDataAt(nsIDOMElement *aTable, int32_t aRowIndex, int32_t aColIndex, nsIDOMElement * *aCell, int32_t *aStartRowIndex, int32_t *aStartColIndex, int32_t *aRowSpan, int32_t *aColSpan, int32_t *aActualRowSpan, int32_t *aActualColSpan, bool *aIsSelected) override { return _to GetCellDataAt(aTable, aRowIndex, aColIndex, aCell, aStartRowIndex, aStartColIndex, aRowSpan, aColSpan, aActualRowSpan, aActualColSpan, aIsSelected); } \
  NS_IMETHOD GetFirstRow(nsIDOMElement *aTableElement, nsIDOMNode * *_retval) override { return _to GetFirstRow(aTableElement, _retval); } \
  NS_IMETHOD GetNextRow(nsIDOMNode *aTableElement, nsIDOMNode * *_retval) override { return _to GetNextRow(aTableElement, _retval); } \
  NS_IMETHOD SetSelectionAfterTableEdit(nsIDOMElement *aTable, int32_t aRow, int32_t aCol, int32_t aDirection, bool aSelected) override { return _to SetSelectionAfterTableEdit(aTable, aRow, aCol, aDirection, aSelected); } \
  NS_IMETHOD GetSelectedOrParentTableElement(nsAString & aTagName, int32_t *aCount, nsIDOMElement * *_retval) override { return _to GetSelectedOrParentTableElement(aTagName, aCount, _retval); } \
  NS_IMETHOD GetSelectedCellsType(nsIDOMElement *aElement, uint32_t *_retval) override { return _to GetSelectedCellsType(aElement, _retval); } \
  NS_IMETHOD GetFirstSelectedCell(nsIDOMRange * *aRange, nsIDOMElement * *_retval) override { return _to GetFirstSelectedCell(aRange, _retval); } \
  NS_IMETHOD GetFirstSelectedCellInTable(int32_t *aRowIndex, int32_t *aColIndex, nsIDOMElement * *_retval) override { return _to GetFirstSelectedCellInTable(aRowIndex, aColIndex, _retval); } \
  NS_IMETHOD GetNextSelectedCell(nsIDOMRange * *aRange, nsIDOMElement * *_retval) override { return _to GetNextSelectedCell(aRange, _retval); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSITABLEEDITOR(_to) \
  NS_IMETHOD InsertTableCell(int32_t aNumber, bool aAfter) override { return !_to ? NS_ERROR_NULL_POINTER : _to->InsertTableCell(aNumber, aAfter); } \
  NS_IMETHOD InsertTableColumn(int32_t aNumber, bool aAfter) override { return !_to ? NS_ERROR_NULL_POINTER : _to->InsertTableColumn(aNumber, aAfter); } \
  NS_IMETHOD InsertTableRow(int32_t aNumber, bool aAfter) override { return !_to ? NS_ERROR_NULL_POINTER : _to->InsertTableRow(aNumber, aAfter); } \
  NS_IMETHOD DeleteTable(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteTable(); } \
  NS_IMETHOD DeleteTableCellContents(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteTableCellContents(); } \
  NS_IMETHOD DeleteTableCell(int32_t aNumber) override { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteTableCell(aNumber); } \
  NS_IMETHOD DeleteTableColumn(int32_t aNumber) override { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteTableColumn(aNumber); } \
  NS_IMETHOD DeleteTableRow(int32_t aNumber) override { return !_to ? NS_ERROR_NULL_POINTER : _to->DeleteTableRow(aNumber); } \
  NS_IMETHOD SelectTableCell(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SelectTableCell(); } \
  NS_IMETHOD SelectBlockOfCells(nsIDOMElement *aStartCell, nsIDOMElement *aEndCell) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SelectBlockOfCells(aStartCell, aEndCell); } \
  NS_IMETHOD SelectTableRow(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SelectTableRow(); } \
  NS_IMETHOD SelectTableColumn(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SelectTableColumn(); } \
  NS_IMETHOD SelectTable(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SelectTable(); } \
  NS_IMETHOD SelectAllTableCells(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SelectAllTableCells(); } \
  NS_IMETHOD SwitchTableCellHeaderType(nsIDOMElement *aSourceCell, nsIDOMElement * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SwitchTableCellHeaderType(aSourceCell, _retval); } \
  NS_IMETHOD JoinTableCells(bool aMergeNonContiguousContents) override { return !_to ? NS_ERROR_NULL_POINTER : _to->JoinTableCells(aMergeNonContiguousContents); } \
  NS_IMETHOD SplitTableCell(void) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SplitTableCell(); } \
  NS_IMETHOD NormalizeTable(nsIDOMElement *aTable) override { return !_to ? NS_ERROR_NULL_POINTER : _to->NormalizeTable(aTable); } \
  NS_IMETHOD GetCellIndexes(nsIDOMElement *aCell, int32_t *aRowIndex, int32_t *aColIndex) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCellIndexes(aCell, aRowIndex, aColIndex); } \
  NS_IMETHOD GetTableSize(nsIDOMElement *aTable, int32_t *aRowCount, int32_t *aColCount) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetTableSize(aTable, aRowCount, aColCount); } \
  NS_IMETHOD GetCellAt(nsIDOMElement *aTable, int32_t aRowIndex, int32_t aColIndex, nsIDOMElement * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCellAt(aTable, aRowIndex, aColIndex, _retval); } \
  NS_IMETHOD GetCellDataAt(nsIDOMElement *aTable, int32_t aRowIndex, int32_t aColIndex, nsIDOMElement * *aCell, int32_t *aStartRowIndex, int32_t *aStartColIndex, int32_t *aRowSpan, int32_t *aColSpan, int32_t *aActualRowSpan, int32_t *aActualColSpan, bool *aIsSelected) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetCellDataAt(aTable, aRowIndex, aColIndex, aCell, aStartRowIndex, aStartColIndex, aRowSpan, aColSpan, aActualRowSpan, aActualColSpan, aIsSelected); } \
  NS_IMETHOD GetFirstRow(nsIDOMElement *aTableElement, nsIDOMNode * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFirstRow(aTableElement, _retval); } \
  NS_IMETHOD GetNextRow(nsIDOMNode *aTableElement, nsIDOMNode * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNextRow(aTableElement, _retval); } \
  NS_IMETHOD SetSelectionAfterTableEdit(nsIDOMElement *aTable, int32_t aRow, int32_t aCol, int32_t aDirection, bool aSelected) override { return !_to ? NS_ERROR_NULL_POINTER : _to->SetSelectionAfterTableEdit(aTable, aRow, aCol, aDirection, aSelected); } \
  NS_IMETHOD GetSelectedOrParentTableElement(nsAString & aTagName, int32_t *aCount, nsIDOMElement * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSelectedOrParentTableElement(aTagName, aCount, _retval); } \
  NS_IMETHOD GetSelectedCellsType(nsIDOMElement *aElement, uint32_t *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetSelectedCellsType(aElement, _retval); } \
  NS_IMETHOD GetFirstSelectedCell(nsIDOMRange * *aRange, nsIDOMElement * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFirstSelectedCell(aRange, _retval); } \
  NS_IMETHOD GetFirstSelectedCellInTable(int32_t *aRowIndex, int32_t *aColIndex, nsIDOMElement * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetFirstSelectedCellInTable(aRowIndex, aColIndex, _retval); } \
  NS_IMETHOD GetNextSelectedCell(nsIDOMRange * *aRange, nsIDOMElement * *_retval) override { return !_to ? NS_ERROR_NULL_POINTER : _to->GetNextSelectedCell(aRange, _retval); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsTableEditor : public nsITableEditor
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSITABLEEDITOR

  nsTableEditor();

private:
  ~nsTableEditor();

protected:
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS(nsTableEditor, nsITableEditor)

nsTableEditor::nsTableEditor()
{
  /* member initializers and constructor code */
}

nsTableEditor::~nsTableEditor()
{
  /* destructor code */
}

/* void insertTableCell (in long aNumber, in boolean aAfter); */
NS_IMETHODIMP nsTableEditor::InsertTableCell(int32_t aNumber, bool aAfter)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void insertTableColumn (in long aNumber, in boolean aAfter); */
NS_IMETHODIMP nsTableEditor::InsertTableColumn(int32_t aNumber, bool aAfter)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void insertTableRow (in long aNumber, in boolean aAfter); */
NS_IMETHODIMP nsTableEditor::InsertTableRow(int32_t aNumber, bool aAfter)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteTable (); */
NS_IMETHODIMP nsTableEditor::DeleteTable()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteTableCellContents (); */
NS_IMETHODIMP nsTableEditor::DeleteTableCellContents()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteTableCell (in long aNumber); */
NS_IMETHODIMP nsTableEditor::DeleteTableCell(int32_t aNumber)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteTableColumn (in long aNumber); */
NS_IMETHODIMP nsTableEditor::DeleteTableColumn(int32_t aNumber)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void deleteTableRow (in long aNumber); */
NS_IMETHODIMP nsTableEditor::DeleteTableRow(int32_t aNumber)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void selectTableCell (); */
NS_IMETHODIMP nsTableEditor::SelectTableCell()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void selectBlockOfCells (in nsIDOMElement aStartCell, in nsIDOMElement aEndCell); */
NS_IMETHODIMP nsTableEditor::SelectBlockOfCells(nsIDOMElement *aStartCell, nsIDOMElement *aEndCell)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void selectTableRow (); */
NS_IMETHODIMP nsTableEditor::SelectTableRow()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void selectTableColumn (); */
NS_IMETHODIMP nsTableEditor::SelectTableColumn()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void selectTable (); */
NS_IMETHODIMP nsTableEditor::SelectTable()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void selectAllTableCells (); */
NS_IMETHODIMP nsTableEditor::SelectAllTableCells()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIDOMElement switchTableCellHeaderType (in nsIDOMElement aSourceCell); */
NS_IMETHODIMP nsTableEditor::SwitchTableCellHeaderType(nsIDOMElement *aSourceCell, nsIDOMElement * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void joinTableCells (in boolean aMergeNonContiguousContents); */
NS_IMETHODIMP nsTableEditor::JoinTableCells(bool aMergeNonContiguousContents)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void splitTableCell (); */
NS_IMETHODIMP nsTableEditor::SplitTableCell()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void normalizeTable (in nsIDOMElement aTable); */
NS_IMETHODIMP nsTableEditor::NormalizeTable(nsIDOMElement *aTable)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getCellIndexes (in nsIDOMElement aCell, out long aRowIndex, out long aColIndex); */
NS_IMETHODIMP nsTableEditor::GetCellIndexes(nsIDOMElement *aCell, int32_t *aRowIndex, int32_t *aColIndex)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getTableSize (in nsIDOMElement aTable, out long aRowCount, out long aColCount); */
NS_IMETHODIMP nsTableEditor::GetTableSize(nsIDOMElement *aTable, int32_t *aRowCount, int32_t *aColCount)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIDOMElement getCellAt (in nsIDOMElement aTable, in long aRowIndex, in long aColIndex); */
NS_IMETHODIMP nsTableEditor::GetCellAt(nsIDOMElement *aTable, int32_t aRowIndex, int32_t aColIndex, nsIDOMElement * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void getCellDataAt (in nsIDOMElement aTable, in long aRowIndex, in long aColIndex, out nsIDOMElement aCell, out long aStartRowIndex, out long aStartColIndex, out long aRowSpan, out long aColSpan, out long aActualRowSpan, out long aActualColSpan, out boolean aIsSelected); */
NS_IMETHODIMP nsTableEditor::GetCellDataAt(nsIDOMElement *aTable, int32_t aRowIndex, int32_t aColIndex, nsIDOMElement * *aCell, int32_t *aStartRowIndex, int32_t *aStartColIndex, int32_t *aRowSpan, int32_t *aColSpan, int32_t *aActualRowSpan, int32_t *aActualColSpan, bool *aIsSelected)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIDOMNode getFirstRow (in nsIDOMElement aTableElement); */
NS_IMETHODIMP nsTableEditor::GetFirstRow(nsIDOMElement *aTableElement, nsIDOMNode * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIDOMNode getNextRow (in nsIDOMNode aTableElement); */
NS_IMETHODIMP nsTableEditor::GetNextRow(nsIDOMNode *aTableElement, nsIDOMNode * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setSelectionAfterTableEdit (in nsIDOMElement aTable, in long aRow, in long aCol, in long aDirection, in boolean aSelected); */
NS_IMETHODIMP nsTableEditor::SetSelectionAfterTableEdit(nsIDOMElement *aTable, int32_t aRow, int32_t aCol, int32_t aDirection, bool aSelected)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIDOMElement getSelectedOrParentTableElement (out AString aTagName, out long aCount); */
NS_IMETHODIMP nsTableEditor::GetSelectedOrParentTableElement(nsAString & aTagName, int32_t *aCount, nsIDOMElement * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* uint32_t getSelectedCellsType (in nsIDOMElement aElement); */
NS_IMETHODIMP nsTableEditor::GetSelectedCellsType(nsIDOMElement *aElement, uint32_t *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIDOMElement getFirstSelectedCell (out nsIDOMRange aRange); */
NS_IMETHODIMP nsTableEditor::GetFirstSelectedCell(nsIDOMRange * *aRange, nsIDOMElement * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIDOMElement getFirstSelectedCellInTable (out long aRowIndex, out long aColIndex); */
NS_IMETHODIMP nsTableEditor::GetFirstSelectedCellInTable(int32_t *aRowIndex, int32_t *aColIndex, nsIDOMElement * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* nsIDOMElement getNextSelectedCell (out nsIDOMRange aRange); */
NS_IMETHODIMP nsTableEditor::GetNextSelectedCell(nsIDOMRange * *aRange, nsIDOMElement * *_retval)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif


#endif /* __gen_nsITableEditor_h__ */