PageRenderTime 124ms CodeModel.GetById 60ms app.highlight 5ms RepoModel.GetById 55ms app.codeStats 1ms

/gecko_api/include/nsIClassInfoImpl.h

http://firefox-mac-pdf.googlecode.com/
C++ Header | 400 lines | 323 code | 43 blank | 34 comment | 1 complexity | 0b96cb80480f7fbfab6610241296b778 MD5 | raw file
  1/* ***** BEGIN LICENSE BLOCK *****
  2 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
  3 *
  4 * The contents of this file are subject to the Mozilla Public License Version
  5 * 1.1 (the "License"); you may not use this file except in compliance with
  6 * the License. You may obtain a copy of the License at
  7 * http://www.mozilla.org/MPL/
  8 *
  9 * Software distributed under the License is distributed on an "AS IS" basis,
 10 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 11 * for the specific language governing rights and limitations under the
 12 * License.
 13 *
 14 * The Original Code is XPCOM.
 15 *
 16 * The Initial Developer of the Original Code is Netscape Communications Corp.
 17 * Portions created by the Initial Developer are Copyright (C) 2001
 18 * the Initial Developer. All Rights Reserved.
 19 *
 20 * Contributor(s):
 21 *
 22 * Alternatively, the contents of this file may be used under the terms of
 23 * either the GNU General Public License Version 2 or later (the "GPL"), or
 24 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
 25 * in which case the provisions of the GPL or the LGPL are applicable instead
 26 * of those above. If you wish to allow use of your version of this file only
 27 * under the terms of either the GPL or the LGPL, and not to allow others to
 28 * use your version of this file under the terms of the MPL, indicate your
 29 * decision by deleting the provisions above and replace them with the notice
 30 * and other provisions required by the GPL or the LGPL. If you do not delete
 31 * the provisions above, a recipient may use your version of this file under
 32 * the terms of any one of the MPL, the GPL or the LGPL.
 33 *
 34 * ***** END LICENSE BLOCK ***** */
 35
 36#ifndef nsIClassInfoImpl_h__
 37#define nsIClassInfoImpl_h__
 38
 39#include "nsIClassInfo.h"
 40
 41#define NS_CLASSINFO_NAME(_class) _class##_classInfoGlobal
 42#define NS_CI_INTERFACE_GETTER_NAME(_class) _class##_GetInterfacesHelper
 43
 44#define NS_DECL_CI_INTERFACE_GETTER(_class)                                   \
 45  extern NS_IMETHODIMP NS_CI_INTERFACE_GETTER_NAME(_class)(PRUint32 *,        \
 46                                                           nsIID ***);
 47
 48#define NS_DECL_CLASSINFO(_class)                                             \
 49  NS_DECL_CI_INTERFACE_GETTER(_class)                                         \
 50  nsIClassInfo *NS_CLASSINFO_NAME(_class);
 51
 52#define NS_IMPL_QUERY_CLASSINFO(_class)                                       \
 53  if ( aIID.Equals(NS_GET_IID(nsIClassInfo)) ) {                              \
 54    extern nsIClassInfo *NS_CLASSINFO_NAME(_class);                           \
 55    foundInterface = static_cast<nsIClassInfo*>(NS_CLASSINFO_NAME(_class));   \
 56  } else
 57
 58#define NS_CLASSINFO_HELPER_BEGIN(_class, _c)                                 \
 59NS_IMETHODIMP                                                                 \
 60NS_CI_INTERFACE_GETTER_NAME(_class)(PRUint32 *count, nsIID ***array)          \
 61{                                                                             \
 62    *count = _c;                                                              \
 63    *array = (nsIID **)nsMemory::Alloc(sizeof (nsIID *) * _c);
 64
 65#define NS_CLASSINFO_HELPER_ENTRY(_i, _interface)                             \
 66    (*array)[_i] = (nsIID *)nsMemory::Clone(&NS_GET_IID(_interface),          \
 67                                            sizeof(nsIID));
 68
 69#define NS_CLASSINFO_HELPER_END                                               \
 70    return NS_OK;                                                             \
 71}
 72
 73#define NS_IMPL_CI_INTERFACE_GETTER1(_class, _interface)                      \
 74   NS_CLASSINFO_HELPER_BEGIN(_class, 1)                                       \
 75     NS_CLASSINFO_HELPER_ENTRY(0, _interface)                                 \
 76   NS_CLASSINFO_HELPER_END
 77
 78#define NS_IMPL_QUERY_INTERFACE1_CI(_class, _i1)                              \
 79  NS_INTERFACE_MAP_BEGIN(_class)                                              \
 80    NS_INTERFACE_MAP_ENTRY(_i1)                                               \
 81    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1)                        \
 82    NS_IMPL_QUERY_CLASSINFO(_class)                                           \
 83  NS_INTERFACE_MAP_END
 84
 85#define NS_IMPL_ISUPPORTS1_CI(_class, _interface)                             \
 86  NS_IMPL_ADDREF(_class)                                                      \
 87  NS_IMPL_RELEASE(_class)                                                     \
 88  NS_IMPL_QUERY_INTERFACE1_CI(_class, _interface)                             \
 89  NS_IMPL_CI_INTERFACE_GETTER1(_class, _interface)
 90
 91#define NS_IMPL_CI_INTERFACE_GETTER2(_class, _i1, _i2)                        \
 92   NS_CLASSINFO_HELPER_BEGIN(_class, 2)                                       \
 93     NS_CLASSINFO_HELPER_ENTRY(0, _i1)                                        \
 94     NS_CLASSINFO_HELPER_ENTRY(1, _i2)                                        \
 95   NS_CLASSINFO_HELPER_END
 96
 97#define NS_IMPL_QUERY_INTERFACE2_CI(_class, _i1, _i2)                         \
 98  NS_INTERFACE_MAP_BEGIN(_class)                                              \
 99    NS_INTERFACE_MAP_ENTRY(_i1)                                               \
100    NS_INTERFACE_MAP_ENTRY(_i2)                                               \
101    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1)                        \
102    NS_IMPL_QUERY_CLASSINFO(_class)                                           \
103  NS_INTERFACE_MAP_END
104
105#define NS_IMPL_ISUPPORTS2_CI(_class, _i1, _i2)                               \
106  NS_IMPL_ADDREF(_class)                                                      \
107  NS_IMPL_RELEASE(_class)                                                     \
108  NS_IMPL_QUERY_INTERFACE2_CI(_class, _i1, _i2)                               \
109  NS_IMPL_CI_INTERFACE_GETTER2(_class, _i1, _i2)
110
111#define NS_IMPL_CI_INTERFACE_GETTER3(_class, _i1, _i2, _i3)                   \
112   NS_CLASSINFO_HELPER_BEGIN(_class, 3)                                       \
113     NS_CLASSINFO_HELPER_ENTRY(0, _i1)                                        \
114     NS_CLASSINFO_HELPER_ENTRY(1, _i2)                                        \
115     NS_CLASSINFO_HELPER_ENTRY(2, _i3)                                        \
116   NS_CLASSINFO_HELPER_END
117
118#define NS_IMPL_QUERY_INTERFACE3_CI(_class, _i1, _i2, _i3)                    \
119  NS_INTERFACE_MAP_BEGIN(_class)                                              \
120    NS_INTERFACE_MAP_ENTRY(_i1)                                               \
121    NS_INTERFACE_MAP_ENTRY(_i2)                                               \
122    NS_INTERFACE_MAP_ENTRY(_i3)                                               \
123    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1)                        \
124    NS_IMPL_QUERY_CLASSINFO(_class)                                           \
125  NS_INTERFACE_MAP_END
126
127#define NS_IMPL_ISUPPORTS3_CI(_class, _i1, _i2, _i3)                          \
128  NS_IMPL_ADDREF(_class)                                                      \
129  NS_IMPL_RELEASE(_class)                                                     \
130  NS_IMPL_QUERY_INTERFACE3_CI(_class, _i1, _i2, _i3)                          \
131  NS_IMPL_CI_INTERFACE_GETTER3(_class, _i1, _i2, _i3)
132
133#define NS_IMPL_CI_INTERFACE_GETTER4(_class, _i1, _i2, _i3, _i4)              \
134   NS_CLASSINFO_HELPER_BEGIN(_class, 4)                                       \
135     NS_CLASSINFO_HELPER_ENTRY(0, _i1)                                        \
136     NS_CLASSINFO_HELPER_ENTRY(1, _i2)                                        \
137     NS_CLASSINFO_HELPER_ENTRY(2, _i3)                                        \
138     NS_CLASSINFO_HELPER_ENTRY(3, _i4)                                        \
139   NS_CLASSINFO_HELPER_END
140
141#define NS_IMPL_QUERY_INTERFACE4_CI(_class, _i1, _i2, _i3, _i4)               \
142  NS_INTERFACE_MAP_BEGIN(_class)                                              \
143    NS_INTERFACE_MAP_ENTRY(_i1)                                               \
144    NS_INTERFACE_MAP_ENTRY(_i2)                                               \
145    NS_INTERFACE_MAP_ENTRY(_i3)                                               \
146    NS_INTERFACE_MAP_ENTRY(_i4)                                               \
147    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1)                        \
148    NS_IMPL_QUERY_CLASSINFO(_class)                                           \
149  NS_INTERFACE_MAP_END
150
151#define NS_IMPL_ISUPPORTS4_CI(_class, _i1, _i2, _i3, _i4)                     \
152  NS_IMPL_ADDREF(_class)                                                      \
153  NS_IMPL_RELEASE(_class)                                                     \
154  NS_IMPL_QUERY_INTERFACE4_CI(_class, _i1, _i2, _i3, _i4)                     \
155  NS_IMPL_CI_INTERFACE_GETTER4(_class, _i1, _i2, _i3, _i4)
156
157#define NS_IMPL_CI_INTERFACE_GETTER5(_class, _i1, _i2, _i3, _i4, _i5)         \
158   NS_CLASSINFO_HELPER_BEGIN(_class, 5)                                       \
159     NS_CLASSINFO_HELPER_ENTRY(0, _i1)                                        \
160     NS_CLASSINFO_HELPER_ENTRY(1, _i2)                                        \
161     NS_CLASSINFO_HELPER_ENTRY(2, _i3)                                        \
162     NS_CLASSINFO_HELPER_ENTRY(3, _i4)                                        \
163     NS_CLASSINFO_HELPER_ENTRY(4, _i5)                                        \
164   NS_CLASSINFO_HELPER_END
165
166#define NS_IMPL_QUERY_INTERFACE5_CI(_class, _i1, _i2, _i3, _i4, _i5)          \
167  NS_INTERFACE_MAP_BEGIN(_class)                                              \
168    NS_INTERFACE_MAP_ENTRY(_i1)                                               \
169    NS_INTERFACE_MAP_ENTRY(_i2)                                               \
170    NS_INTERFACE_MAP_ENTRY(_i3)                                               \
171    NS_INTERFACE_MAP_ENTRY(_i4)                                               \
172    NS_INTERFACE_MAP_ENTRY(_i5)                                               \
173    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1)                        \
174    NS_IMPL_QUERY_CLASSINFO(_class)                                           \
175  NS_INTERFACE_MAP_END
176
177#define NS_IMPL_ISUPPORTS5_CI(_class, _i1, _i2, _i3, _i4, _i5)                \
178  NS_IMPL_ADDREF(_class)                                                      \
179  NS_IMPL_RELEASE(_class)                                                     \
180  NS_IMPL_QUERY_INTERFACE5_CI(_class, _i1, _i2, _i3, _i4, _i5)                \
181  NS_IMPL_CI_INTERFACE_GETTER5(_class, _i1, _i2, _i3, _i4, _i5)
182
183#define NS_IMPL_CI_INTERFACE_GETTER6(_class, _i1, _i2, _i3, _i4, _i5, _i6)    \
184   NS_CLASSINFO_HELPER_BEGIN(_class, 6)                                       \
185     NS_CLASSINFO_HELPER_ENTRY(0, _i1)                                        \
186     NS_CLASSINFO_HELPER_ENTRY(1, _i2)                                        \
187     NS_CLASSINFO_HELPER_ENTRY(2, _i3)                                        \
188     NS_CLASSINFO_HELPER_ENTRY(3, _i4)                                        \
189     NS_CLASSINFO_HELPER_ENTRY(4, _i5)                                        \
190     NS_CLASSINFO_HELPER_ENTRY(5, _i6)                                        \
191   NS_CLASSINFO_HELPER_END
192
193#define NS_IMPL_QUERY_INTERFACE6_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6)     \
194  NS_INTERFACE_MAP_BEGIN(_class)                                              \
195    NS_INTERFACE_MAP_ENTRY(_i1)                                               \
196    NS_INTERFACE_MAP_ENTRY(_i2)                                               \
197    NS_INTERFACE_MAP_ENTRY(_i3)                                               \
198    NS_INTERFACE_MAP_ENTRY(_i4)                                               \
199    NS_INTERFACE_MAP_ENTRY(_i5)                                               \
200    NS_INTERFACE_MAP_ENTRY(_i6)                                               \
201    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1)                        \
202    NS_IMPL_QUERY_CLASSINFO(_class)                                           \
203  NS_INTERFACE_MAP_END
204
205#define NS_IMPL_ISUPPORTS6_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6)           \
206  NS_IMPL_ADDREF(_class)                                                      \
207  NS_IMPL_RELEASE(_class)                                                     \
208  NS_IMPL_QUERY_INTERFACE6_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6)           \
209  NS_IMPL_CI_INTERFACE_GETTER6(_class, _i1, _i2, _i3, _i4, _i5, _i6)
210
211#define NS_IMPL_CI_INTERFACE_GETTER7(_class, _i1, _i2, _i3, _i4, _i5, _i6,    \
212                                     _i7)                                     \
213   NS_CLASSINFO_HELPER_BEGIN(_class, 7)                                       \
214     NS_CLASSINFO_HELPER_ENTRY(0, _i1)                                        \
215     NS_CLASSINFO_HELPER_ENTRY(1, _i2)                                        \
216     NS_CLASSINFO_HELPER_ENTRY(2, _i3)                                        \
217     NS_CLASSINFO_HELPER_ENTRY(3, _i4)                                        \
218     NS_CLASSINFO_HELPER_ENTRY(4, _i5)                                        \
219     NS_CLASSINFO_HELPER_ENTRY(5, _i6)                                        \
220     NS_CLASSINFO_HELPER_ENTRY(6, _i7)                                        \
221   NS_CLASSINFO_HELPER_END
222
223#define NS_IMPL_QUERY_INTERFACE7_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6,     \
224                                    _i7)                                      \
225  NS_INTERFACE_MAP_BEGIN(_class)                                              \
226    NS_INTERFACE_MAP_ENTRY(_i1)                                               \
227    NS_INTERFACE_MAP_ENTRY(_i2)                                               \
228    NS_INTERFACE_MAP_ENTRY(_i3)                                               \
229    NS_INTERFACE_MAP_ENTRY(_i4)                                               \
230    NS_INTERFACE_MAP_ENTRY(_i5)                                               \
231    NS_INTERFACE_MAP_ENTRY(_i6)                                               \
232    NS_INTERFACE_MAP_ENTRY(_i7)                                               \
233    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1)                        \
234    NS_IMPL_QUERY_CLASSINFO(_class)                                           \
235  NS_INTERFACE_MAP_END
236
237#define NS_IMPL_ISUPPORTS7_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7)      \
238  NS_IMPL_ADDREF(_class)                                                      \
239  NS_IMPL_RELEASE(_class)                                                     \
240  NS_IMPL_QUERY_INTERFACE7_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7)      \
241  NS_IMPL_CI_INTERFACE_GETTER7(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7)
242
243#define NS_IMPL_CI_INTERFACE_GETTER8(_class, _i1, _i2, _i3, _i4, _i5, _i6,    \
244                                     _i7, _i8)                                \
245   NS_CLASSINFO_HELPER_BEGIN(_class, 8)                                       \
246     NS_CLASSINFO_HELPER_ENTRY(0, _i1)                                        \
247     NS_CLASSINFO_HELPER_ENTRY(1, _i2)                                        \
248     NS_CLASSINFO_HELPER_ENTRY(2, _i3)                                        \
249     NS_CLASSINFO_HELPER_ENTRY(3, _i4)                                        \
250     NS_CLASSINFO_HELPER_ENTRY(4, _i5)                                        \
251     NS_CLASSINFO_HELPER_ENTRY(5, _i6)                                        \
252     NS_CLASSINFO_HELPER_ENTRY(6, _i7)                                        \
253     NS_CLASSINFO_HELPER_ENTRY(7, _i8)                                        \
254   NS_CLASSINFO_HELPER_END
255
256#define NS_IMPL_QUERY_INTERFACE8_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6,     \
257                                    _i7, _i8)                                 \
258  NS_INTERFACE_MAP_BEGIN(_class)                                              \
259    NS_INTERFACE_MAP_ENTRY(_i1)                                               \
260    NS_INTERFACE_MAP_ENTRY(_i2)                                               \
261    NS_INTERFACE_MAP_ENTRY(_i3)                                               \
262    NS_INTERFACE_MAP_ENTRY(_i4)                                               \
263    NS_INTERFACE_MAP_ENTRY(_i5)                                               \
264    NS_INTERFACE_MAP_ENTRY(_i6)                                               \
265    NS_INTERFACE_MAP_ENTRY(_i7)                                               \
266    NS_INTERFACE_MAP_ENTRY(_i8)                                               \
267    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1)                        \
268    NS_IMPL_QUERY_CLASSINFO(_class)                                           \
269  NS_INTERFACE_MAP_END
270
271#define NS_IMPL_ISUPPORTS8_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, _i8) \
272  NS_IMPL_ADDREF(_class)                                                      \
273  NS_IMPL_RELEASE(_class)                                                     \
274  NS_IMPL_QUERY_INTERFACE8_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, _i8) \
275  NS_IMPL_CI_INTERFACE_GETTER8(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, _i8)
276
277#define NS_IMPL_CI_INTERFACE_GETTER9(_class, _i1, _i2, _i3, _i4, _i5, _i6,    \
278                                     _i7, _i8, _i9)                           \
279   NS_CLASSINFO_HELPER_BEGIN(_class, 9)                                       \
280     NS_CLASSINFO_HELPER_ENTRY(0, _i1)                                        \
281     NS_CLASSINFO_HELPER_ENTRY(1, _i2)                                        \
282     NS_CLASSINFO_HELPER_ENTRY(2, _i3)                                        \
283     NS_CLASSINFO_HELPER_ENTRY(3, _i4)                                        \
284     NS_CLASSINFO_HELPER_ENTRY(4, _i5)                                        \
285     NS_CLASSINFO_HELPER_ENTRY(5, _i6)                                        \
286     NS_CLASSINFO_HELPER_ENTRY(6, _i7)                                        \
287     NS_CLASSINFO_HELPER_ENTRY(7, _i8)                                        \
288     NS_CLASSINFO_HELPER_ENTRY(8, _i9)                                        \
289   NS_CLASSINFO_HELPER_END
290
291#define NS_IMPL_QUERY_INTERFACE9_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6,     \
292                                    _i7, _i8, _i9)                            \
293  NS_INTERFACE_MAP_BEGIN(_class)                                              \
294    NS_INTERFACE_MAP_ENTRY(_i1)                                               \
295    NS_INTERFACE_MAP_ENTRY(_i2)                                               \
296    NS_INTERFACE_MAP_ENTRY(_i3)                                               \
297    NS_INTERFACE_MAP_ENTRY(_i4)                                               \
298    NS_INTERFACE_MAP_ENTRY(_i5)                                               \
299    NS_INTERFACE_MAP_ENTRY(_i6)                                               \
300    NS_INTERFACE_MAP_ENTRY(_i7)                                               \
301    NS_INTERFACE_MAP_ENTRY(_i8)                                               \
302    NS_INTERFACE_MAP_ENTRY(_i9)                                               \
303    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1)                        \
304    NS_IMPL_QUERY_CLASSINFO(_class)                                           \
305  NS_INTERFACE_MAP_END
306
307#define NS_IMPL_ISUPPORTS9_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7,      \
308                              _i8, _i9)                                       \
309  NS_IMPL_ADDREF(_class)                                                      \
310  NS_IMPL_RELEASE(_class)                                                     \
311  NS_IMPL_QUERY_INTERFACE9_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7,      \
312                              _i8, _i9)                                       \
313  NS_IMPL_CI_INTERFACE_GETTER9(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7,     \
314                               _i8, _i9)
315
316#define NS_IMPL_CI_INTERFACE_GETTER10(_class, _i1, _i2, _i3, _i4, _i5, _i6,   \
317                                      _i7, _i8, _i9, _i10)                    \
318   NS_CLASSINFO_HELPER_BEGIN(_class, 10)                                      \
319     NS_CLASSINFO_HELPER_ENTRY(0, _i1)                                        \
320     NS_CLASSINFO_HELPER_ENTRY(1, _i2)                                        \
321     NS_CLASSINFO_HELPER_ENTRY(2, _i3)                                        \
322     NS_CLASSINFO_HELPER_ENTRY(3, _i4)                                        \
323     NS_CLASSINFO_HELPER_ENTRY(4, _i5)                                        \
324     NS_CLASSINFO_HELPER_ENTRY(5, _i6)                                        \
325     NS_CLASSINFO_HELPER_ENTRY(6, _i7)                                        \
326     NS_CLASSINFO_HELPER_ENTRY(7, _i8)                                        \
327     NS_CLASSINFO_HELPER_ENTRY(8, _i9)                                        \
328     NS_CLASSINFO_HELPER_ENTRY(9, _i10)                                       \
329   NS_CLASSINFO_HELPER_END
330
331#define NS_IMPL_CI_INTERFACE_GETTER11(_class, _i1, _i2, _i3, _i4, _i5, _i6,   \
332                                      _i7, _i8, _i9, _i10, _i11)              \
333   NS_CLASSINFO_HELPER_BEGIN(_class, 11)                                      \
334     NS_CLASSINFO_HELPER_ENTRY(0, _i1)                                        \
335     NS_CLASSINFO_HELPER_ENTRY(1, _i2)                                        \
336     NS_CLASSINFO_HELPER_ENTRY(2, _i3)                                        \
337     NS_CLASSINFO_HELPER_ENTRY(3, _i4)                                        \
338     NS_CLASSINFO_HELPER_ENTRY(4, _i5)                                        \
339     NS_CLASSINFO_HELPER_ENTRY(5, _i6)                                        \
340     NS_CLASSINFO_HELPER_ENTRY(6, _i7)                                        \
341     NS_CLASSINFO_HELPER_ENTRY(7, _i8)                                        \
342     NS_CLASSINFO_HELPER_ENTRY(8, _i9)                                        \
343     NS_CLASSINFO_HELPER_ENTRY(9, _i10)                                       \
344     NS_CLASSINFO_HELPER_ENTRY(10, _i11)                                      \
345   NS_CLASSINFO_HELPER_END
346
347#define NS_IMPL_QUERY_INTERFACE10_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6,    \
348                                     _i7, _i8, _i9, _i10)                     \
349  NS_INTERFACE_MAP_BEGIN(_class)                                              \
350    NS_INTERFACE_MAP_ENTRY(_i1)                                               \
351    NS_INTERFACE_MAP_ENTRY(_i2)                                               \
352    NS_INTERFACE_MAP_ENTRY(_i3)                                               \
353    NS_INTERFACE_MAP_ENTRY(_i4)                                               \
354    NS_INTERFACE_MAP_ENTRY(_i5)                                               \
355    NS_INTERFACE_MAP_ENTRY(_i6)                                               \
356    NS_INTERFACE_MAP_ENTRY(_i7)                                               \
357    NS_INTERFACE_MAP_ENTRY(_i8)                                               \
358    NS_INTERFACE_MAP_ENTRY(_i9)                                               \
359    NS_INTERFACE_MAP_ENTRY(_i10)                                              \
360    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1)                        \
361    NS_IMPL_QUERY_CLASSINFO(_class)                                           \
362  NS_INTERFACE_MAP_END
363
364#define NS_IMPL_QUERY_INTERFACE11_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6,    \
365                                     _i7, _i8, _i9, _i10, _i11)               \
366  NS_INTERFACE_MAP_BEGIN(_class)                                              \
367    NS_INTERFACE_MAP_ENTRY(_i1)                                               \
368    NS_INTERFACE_MAP_ENTRY(_i2)                                               \
369    NS_INTERFACE_MAP_ENTRY(_i3)                                               \
370    NS_INTERFACE_MAP_ENTRY(_i4)                                               \
371    NS_INTERFACE_MAP_ENTRY(_i5)                                               \
372    NS_INTERFACE_MAP_ENTRY(_i6)                                               \
373    NS_INTERFACE_MAP_ENTRY(_i7)                                               \
374    NS_INTERFACE_MAP_ENTRY(_i8)                                               \
375    NS_INTERFACE_MAP_ENTRY(_i9)                                               \
376    NS_INTERFACE_MAP_ENTRY(_i10)                                              \
377    NS_INTERFACE_MAP_ENTRY(_i11)                                              \
378    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1)                        \
379    NS_IMPL_QUERY_CLASSINFO(_class)                                           \
380  NS_INTERFACE_MAP_END
381
382#define NS_IMPL_ISUPPORTS10_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7,     \
383                               _i8, _i9, _i10)                                \
384  NS_IMPL_ADDREF(_class)                                                      \
385  NS_IMPL_RELEASE(_class)                                                     \
386  NS_IMPL_QUERY_INTERFACE10_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7,     \
387                               _i8, _i9, _i10)                                \
388  NS_IMPL_CI_INTERFACE_GETTER10(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7,    \
389                                _i8, _i9, _i10)
390
391#define NS_IMPL_ISUPPORTS11_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7,     \
392                               _i8, _i9, _i10, _i11)                          \
393  NS_IMPL_ADDREF(_class)                                                      \
394  NS_IMPL_RELEASE(_class)                                                     \
395  NS_IMPL_QUERY_INTERFACE11_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7,     \
396                               _i8, _i9, _i10, _i11)                          \
397  NS_IMPL_CI_INTERFACE_GETTER11(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7,    \
398                                _i8, _i9, _i10, _i11)
399
400#endif // nsIClassInfoImpl_h__