Bug 470455 - test_database_sync_embed_visits.js leaks, r=sdwilsh
[wine-gecko.git] / xpcom / glue / nsIClassInfoImpl.h
blob6b5d4a5fae00e7470c20b172bae7b3758720ef32
1 /* ***** BEGIN LICENSE BLOCK *****
2 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
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/
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.
14 * The Original Code is XPCOM.
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.
20 * Contributor(s):
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.
34 * ***** END LICENSE BLOCK ***** */
36 #ifndef nsIClassInfoImpl_h__
37 #define nsIClassInfoImpl_h__
39 #include "nsIClassInfo.h"
41 #define NS_CLASSINFO_NAME(_class) _class##_classInfoGlobal
42 #define NS_CI_INTERFACE_GETTER_NAME(_class) _class##_GetInterfacesHelper
44 #define NS_DECL_CI_INTERFACE_GETTER(_class) \
45 extern NS_IMETHODIMP NS_CI_INTERFACE_GETTER_NAME(_class) \
46 (PRUint32 * NS_OUTPARAM, nsIID *** NS_OUTPARAM);
48 #define NS_DECL_CLASSINFO(_class) \
49 NS_DECL_CI_INTERFACE_GETTER(_class) \
50 nsIClassInfo *NS_CLASSINFO_NAME(_class);
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
58 #define NS_CLASSINFO_HELPER_BEGIN(_class, _c) \
59 NS_IMETHODIMP \
60 NS_CI_INTERFACE_GETTER_NAME(_class)(PRUint32 *count NS_OUTPARAM, \
61 nsIID ***array NS_OUTPARAM) \
62 { \
63 *count = _c; \
64 *array = (nsIID **)nsMemory::Alloc(sizeof (nsIID *) * _c);
66 #define NS_CLASSINFO_HELPER_ENTRY(_i, _interface) \
67 (*array)[_i] = (nsIID *)nsMemory::Clone(&NS_GET_IID(_interface), \
68 sizeof(nsIID));
70 #define NS_CLASSINFO_HELPER_END \
71 return NS_OK; \
74 #define NS_IMPL_CI_INTERFACE_GETTER1(_class, _interface) \
75 NS_CLASSINFO_HELPER_BEGIN(_class, 1) \
76 NS_CLASSINFO_HELPER_ENTRY(0, _interface) \
77 NS_CLASSINFO_HELPER_END
79 #define NS_IMPL_QUERY_INTERFACE1_CI(_class, _i1) \
80 NS_INTERFACE_MAP_BEGIN(_class) \
81 NS_INTERFACE_MAP_ENTRY(_i1) \
82 NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1) \
83 NS_IMPL_QUERY_CLASSINFO(_class) \
84 NS_INTERFACE_MAP_END
86 #define NS_IMPL_ISUPPORTS1_CI(_class, _interface) \
87 NS_IMPL_ADDREF(_class) \
88 NS_IMPL_RELEASE(_class) \
89 NS_IMPL_QUERY_INTERFACE1_CI(_class, _interface) \
90 NS_IMPL_CI_INTERFACE_GETTER1(_class, _interface)
92 #define NS_IMPL_CI_INTERFACE_GETTER2(_class, _i1, _i2) \
93 NS_CLASSINFO_HELPER_BEGIN(_class, 2) \
94 NS_CLASSINFO_HELPER_ENTRY(0, _i1) \
95 NS_CLASSINFO_HELPER_ENTRY(1, _i2) \
96 NS_CLASSINFO_HELPER_END
98 #define NS_IMPL_QUERY_INTERFACE2_CI(_class, _i1, _i2) \
99 NS_INTERFACE_MAP_BEGIN(_class) \
100 NS_INTERFACE_MAP_ENTRY(_i1) \
101 NS_INTERFACE_MAP_ENTRY(_i2) \
102 NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1) \
103 NS_IMPL_QUERY_CLASSINFO(_class) \
104 NS_INTERFACE_MAP_END
106 #define NS_IMPL_ISUPPORTS2_CI(_class, _i1, _i2) \
107 NS_IMPL_ADDREF(_class) \
108 NS_IMPL_RELEASE(_class) \
109 NS_IMPL_QUERY_INTERFACE2_CI(_class, _i1, _i2) \
110 NS_IMPL_CI_INTERFACE_GETTER2(_class, _i1, _i2)
112 #define NS_IMPL_CI_INTERFACE_GETTER3(_class, _i1, _i2, _i3) \
113 NS_CLASSINFO_HELPER_BEGIN(_class, 3) \
114 NS_CLASSINFO_HELPER_ENTRY(0, _i1) \
115 NS_CLASSINFO_HELPER_ENTRY(1, _i2) \
116 NS_CLASSINFO_HELPER_ENTRY(2, _i3) \
117 NS_CLASSINFO_HELPER_END
119 #define NS_IMPL_QUERY_INTERFACE3_CI(_class, _i1, _i2, _i3) \
120 NS_INTERFACE_MAP_BEGIN(_class) \
121 NS_INTERFACE_MAP_ENTRY(_i1) \
122 NS_INTERFACE_MAP_ENTRY(_i2) \
123 NS_INTERFACE_MAP_ENTRY(_i3) \
124 NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1) \
125 NS_IMPL_QUERY_CLASSINFO(_class) \
126 NS_INTERFACE_MAP_END
128 #define NS_IMPL_ISUPPORTS3_CI(_class, _i1, _i2, _i3) \
129 NS_IMPL_ADDREF(_class) \
130 NS_IMPL_RELEASE(_class) \
131 NS_IMPL_QUERY_INTERFACE3_CI(_class, _i1, _i2, _i3) \
132 NS_IMPL_CI_INTERFACE_GETTER3(_class, _i1, _i2, _i3)
134 #define NS_IMPL_CI_INTERFACE_GETTER4(_class, _i1, _i2, _i3, _i4) \
135 NS_CLASSINFO_HELPER_BEGIN(_class, 4) \
136 NS_CLASSINFO_HELPER_ENTRY(0, _i1) \
137 NS_CLASSINFO_HELPER_ENTRY(1, _i2) \
138 NS_CLASSINFO_HELPER_ENTRY(2, _i3) \
139 NS_CLASSINFO_HELPER_ENTRY(3, _i4) \
140 NS_CLASSINFO_HELPER_END
142 #define NS_IMPL_QUERY_INTERFACE4_CI(_class, _i1, _i2, _i3, _i4) \
143 NS_INTERFACE_MAP_BEGIN(_class) \
144 NS_INTERFACE_MAP_ENTRY(_i1) \
145 NS_INTERFACE_MAP_ENTRY(_i2) \
146 NS_INTERFACE_MAP_ENTRY(_i3) \
147 NS_INTERFACE_MAP_ENTRY(_i4) \
148 NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1) \
149 NS_IMPL_QUERY_CLASSINFO(_class) \
150 NS_INTERFACE_MAP_END
152 #define NS_IMPL_ISUPPORTS4_CI(_class, _i1, _i2, _i3, _i4) \
153 NS_IMPL_ADDREF(_class) \
154 NS_IMPL_RELEASE(_class) \
155 NS_IMPL_QUERY_INTERFACE4_CI(_class, _i1, _i2, _i3, _i4) \
156 NS_IMPL_CI_INTERFACE_GETTER4(_class, _i1, _i2, _i3, _i4)
158 #define NS_IMPL_CI_INTERFACE_GETTER5(_class, _i1, _i2, _i3, _i4, _i5) \
159 NS_CLASSINFO_HELPER_BEGIN(_class, 5) \
160 NS_CLASSINFO_HELPER_ENTRY(0, _i1) \
161 NS_CLASSINFO_HELPER_ENTRY(1, _i2) \
162 NS_CLASSINFO_HELPER_ENTRY(2, _i3) \
163 NS_CLASSINFO_HELPER_ENTRY(3, _i4) \
164 NS_CLASSINFO_HELPER_ENTRY(4, _i5) \
165 NS_CLASSINFO_HELPER_END
167 #define NS_IMPL_QUERY_INTERFACE5_CI(_class, _i1, _i2, _i3, _i4, _i5) \
168 NS_INTERFACE_MAP_BEGIN(_class) \
169 NS_INTERFACE_MAP_ENTRY(_i1) \
170 NS_INTERFACE_MAP_ENTRY(_i2) \
171 NS_INTERFACE_MAP_ENTRY(_i3) \
172 NS_INTERFACE_MAP_ENTRY(_i4) \
173 NS_INTERFACE_MAP_ENTRY(_i5) \
174 NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1) \
175 NS_IMPL_QUERY_CLASSINFO(_class) \
176 NS_INTERFACE_MAP_END
178 #define NS_IMPL_ISUPPORTS5_CI(_class, _i1, _i2, _i3, _i4, _i5) \
179 NS_IMPL_ADDREF(_class) \
180 NS_IMPL_RELEASE(_class) \
181 NS_IMPL_QUERY_INTERFACE5_CI(_class, _i1, _i2, _i3, _i4, _i5) \
182 NS_IMPL_CI_INTERFACE_GETTER5(_class, _i1, _i2, _i3, _i4, _i5)
184 #define NS_IMPL_CI_INTERFACE_GETTER6(_class, _i1, _i2, _i3, _i4, _i5, _i6) \
185 NS_CLASSINFO_HELPER_BEGIN(_class, 6) \
186 NS_CLASSINFO_HELPER_ENTRY(0, _i1) \
187 NS_CLASSINFO_HELPER_ENTRY(1, _i2) \
188 NS_CLASSINFO_HELPER_ENTRY(2, _i3) \
189 NS_CLASSINFO_HELPER_ENTRY(3, _i4) \
190 NS_CLASSINFO_HELPER_ENTRY(4, _i5) \
191 NS_CLASSINFO_HELPER_ENTRY(5, _i6) \
192 NS_CLASSINFO_HELPER_END
194 #define NS_IMPL_QUERY_INTERFACE6_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6) \
195 NS_INTERFACE_MAP_BEGIN(_class) \
196 NS_INTERFACE_MAP_ENTRY(_i1) \
197 NS_INTERFACE_MAP_ENTRY(_i2) \
198 NS_INTERFACE_MAP_ENTRY(_i3) \
199 NS_INTERFACE_MAP_ENTRY(_i4) \
200 NS_INTERFACE_MAP_ENTRY(_i5) \
201 NS_INTERFACE_MAP_ENTRY(_i6) \
202 NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1) \
203 NS_IMPL_QUERY_CLASSINFO(_class) \
204 NS_INTERFACE_MAP_END
206 #define NS_IMPL_ISUPPORTS6_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6) \
207 NS_IMPL_ADDREF(_class) \
208 NS_IMPL_RELEASE(_class) \
209 NS_IMPL_QUERY_INTERFACE6_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6) \
210 NS_IMPL_CI_INTERFACE_GETTER6(_class, _i1, _i2, _i3, _i4, _i5, _i6)
212 #define NS_IMPL_CI_INTERFACE_GETTER7(_class, _i1, _i2, _i3, _i4, _i5, _i6, \
213 _i7) \
214 NS_CLASSINFO_HELPER_BEGIN(_class, 7) \
215 NS_CLASSINFO_HELPER_ENTRY(0, _i1) \
216 NS_CLASSINFO_HELPER_ENTRY(1, _i2) \
217 NS_CLASSINFO_HELPER_ENTRY(2, _i3) \
218 NS_CLASSINFO_HELPER_ENTRY(3, _i4) \
219 NS_CLASSINFO_HELPER_ENTRY(4, _i5) \
220 NS_CLASSINFO_HELPER_ENTRY(5, _i6) \
221 NS_CLASSINFO_HELPER_ENTRY(6, _i7) \
222 NS_CLASSINFO_HELPER_END
224 #define NS_IMPL_QUERY_INTERFACE7_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, \
225 _i7) \
226 NS_INTERFACE_MAP_BEGIN(_class) \
227 NS_INTERFACE_MAP_ENTRY(_i1) \
228 NS_INTERFACE_MAP_ENTRY(_i2) \
229 NS_INTERFACE_MAP_ENTRY(_i3) \
230 NS_INTERFACE_MAP_ENTRY(_i4) \
231 NS_INTERFACE_MAP_ENTRY(_i5) \
232 NS_INTERFACE_MAP_ENTRY(_i6) \
233 NS_INTERFACE_MAP_ENTRY(_i7) \
234 NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1) \
235 NS_IMPL_QUERY_CLASSINFO(_class) \
236 NS_INTERFACE_MAP_END
238 #define NS_IMPL_ISUPPORTS7_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7) \
239 NS_IMPL_ADDREF(_class) \
240 NS_IMPL_RELEASE(_class) \
241 NS_IMPL_QUERY_INTERFACE7_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7) \
242 NS_IMPL_CI_INTERFACE_GETTER7(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7)
244 #define NS_IMPL_CI_INTERFACE_GETTER8(_class, _i1, _i2, _i3, _i4, _i5, _i6, \
245 _i7, _i8) \
246 NS_CLASSINFO_HELPER_BEGIN(_class, 8) \
247 NS_CLASSINFO_HELPER_ENTRY(0, _i1) \
248 NS_CLASSINFO_HELPER_ENTRY(1, _i2) \
249 NS_CLASSINFO_HELPER_ENTRY(2, _i3) \
250 NS_CLASSINFO_HELPER_ENTRY(3, _i4) \
251 NS_CLASSINFO_HELPER_ENTRY(4, _i5) \
252 NS_CLASSINFO_HELPER_ENTRY(5, _i6) \
253 NS_CLASSINFO_HELPER_ENTRY(6, _i7) \
254 NS_CLASSINFO_HELPER_ENTRY(7, _i8) \
255 NS_CLASSINFO_HELPER_END
257 #define NS_IMPL_QUERY_INTERFACE8_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, \
258 _i7, _i8) \
259 NS_INTERFACE_MAP_BEGIN(_class) \
260 NS_INTERFACE_MAP_ENTRY(_i1) \
261 NS_INTERFACE_MAP_ENTRY(_i2) \
262 NS_INTERFACE_MAP_ENTRY(_i3) \
263 NS_INTERFACE_MAP_ENTRY(_i4) \
264 NS_INTERFACE_MAP_ENTRY(_i5) \
265 NS_INTERFACE_MAP_ENTRY(_i6) \
266 NS_INTERFACE_MAP_ENTRY(_i7) \
267 NS_INTERFACE_MAP_ENTRY(_i8) \
268 NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1) \
269 NS_IMPL_QUERY_CLASSINFO(_class) \
270 NS_INTERFACE_MAP_END
272 #define NS_IMPL_ISUPPORTS8_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, _i8) \
273 NS_IMPL_ADDREF(_class) \
274 NS_IMPL_RELEASE(_class) \
275 NS_IMPL_QUERY_INTERFACE8_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, _i8) \
276 NS_IMPL_CI_INTERFACE_GETTER8(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, _i8)
278 #define NS_IMPL_CI_INTERFACE_GETTER9(_class, _i1, _i2, _i3, _i4, _i5, _i6, \
279 _i7, _i8, _i9) \
280 NS_CLASSINFO_HELPER_BEGIN(_class, 9) \
281 NS_CLASSINFO_HELPER_ENTRY(0, _i1) \
282 NS_CLASSINFO_HELPER_ENTRY(1, _i2) \
283 NS_CLASSINFO_HELPER_ENTRY(2, _i3) \
284 NS_CLASSINFO_HELPER_ENTRY(3, _i4) \
285 NS_CLASSINFO_HELPER_ENTRY(4, _i5) \
286 NS_CLASSINFO_HELPER_ENTRY(5, _i6) \
287 NS_CLASSINFO_HELPER_ENTRY(6, _i7) \
288 NS_CLASSINFO_HELPER_ENTRY(7, _i8) \
289 NS_CLASSINFO_HELPER_ENTRY(8, _i9) \
290 NS_CLASSINFO_HELPER_END
292 #define NS_IMPL_QUERY_INTERFACE9_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, \
293 _i7, _i8, _i9) \
294 NS_INTERFACE_MAP_BEGIN(_class) \
295 NS_INTERFACE_MAP_ENTRY(_i1) \
296 NS_INTERFACE_MAP_ENTRY(_i2) \
297 NS_INTERFACE_MAP_ENTRY(_i3) \
298 NS_INTERFACE_MAP_ENTRY(_i4) \
299 NS_INTERFACE_MAP_ENTRY(_i5) \
300 NS_INTERFACE_MAP_ENTRY(_i6) \
301 NS_INTERFACE_MAP_ENTRY(_i7) \
302 NS_INTERFACE_MAP_ENTRY(_i8) \
303 NS_INTERFACE_MAP_ENTRY(_i9) \
304 NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1) \
305 NS_IMPL_QUERY_CLASSINFO(_class) \
306 NS_INTERFACE_MAP_END
308 #define NS_IMPL_ISUPPORTS9_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, \
309 _i8, _i9) \
310 NS_IMPL_ADDREF(_class) \
311 NS_IMPL_RELEASE(_class) \
312 NS_IMPL_QUERY_INTERFACE9_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, \
313 _i8, _i9) \
314 NS_IMPL_CI_INTERFACE_GETTER9(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, \
315 _i8, _i9)
317 #define NS_IMPL_CI_INTERFACE_GETTER10(_class, _i1, _i2, _i3, _i4, _i5, _i6, \
318 _i7, _i8, _i9, _i10) \
319 NS_CLASSINFO_HELPER_BEGIN(_class, 10) \
320 NS_CLASSINFO_HELPER_ENTRY(0, _i1) \
321 NS_CLASSINFO_HELPER_ENTRY(1, _i2) \
322 NS_CLASSINFO_HELPER_ENTRY(2, _i3) \
323 NS_CLASSINFO_HELPER_ENTRY(3, _i4) \
324 NS_CLASSINFO_HELPER_ENTRY(4, _i5) \
325 NS_CLASSINFO_HELPER_ENTRY(5, _i6) \
326 NS_CLASSINFO_HELPER_ENTRY(6, _i7) \
327 NS_CLASSINFO_HELPER_ENTRY(7, _i8) \
328 NS_CLASSINFO_HELPER_ENTRY(8, _i9) \
329 NS_CLASSINFO_HELPER_ENTRY(9, _i10) \
330 NS_CLASSINFO_HELPER_END
332 #define NS_IMPL_CI_INTERFACE_GETTER11(_class, _i1, _i2, _i3, _i4, _i5, _i6, \
333 _i7, _i8, _i9, _i10, _i11) \
334 NS_CLASSINFO_HELPER_BEGIN(_class, 11) \
335 NS_CLASSINFO_HELPER_ENTRY(0, _i1) \
336 NS_CLASSINFO_HELPER_ENTRY(1, _i2) \
337 NS_CLASSINFO_HELPER_ENTRY(2, _i3) \
338 NS_CLASSINFO_HELPER_ENTRY(3, _i4) \
339 NS_CLASSINFO_HELPER_ENTRY(4, _i5) \
340 NS_CLASSINFO_HELPER_ENTRY(5, _i6) \
341 NS_CLASSINFO_HELPER_ENTRY(6, _i7) \
342 NS_CLASSINFO_HELPER_ENTRY(7, _i8) \
343 NS_CLASSINFO_HELPER_ENTRY(8, _i9) \
344 NS_CLASSINFO_HELPER_ENTRY(9, _i10) \
345 NS_CLASSINFO_HELPER_ENTRY(10, _i11) \
346 NS_CLASSINFO_HELPER_END
348 #define NS_IMPL_QUERY_INTERFACE10_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, \
349 _i7, _i8, _i9, _i10) \
350 NS_INTERFACE_MAP_BEGIN(_class) \
351 NS_INTERFACE_MAP_ENTRY(_i1) \
352 NS_INTERFACE_MAP_ENTRY(_i2) \
353 NS_INTERFACE_MAP_ENTRY(_i3) \
354 NS_INTERFACE_MAP_ENTRY(_i4) \
355 NS_INTERFACE_MAP_ENTRY(_i5) \
356 NS_INTERFACE_MAP_ENTRY(_i6) \
357 NS_INTERFACE_MAP_ENTRY(_i7) \
358 NS_INTERFACE_MAP_ENTRY(_i8) \
359 NS_INTERFACE_MAP_ENTRY(_i9) \
360 NS_INTERFACE_MAP_ENTRY(_i10) \
361 NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1) \
362 NS_IMPL_QUERY_CLASSINFO(_class) \
363 NS_INTERFACE_MAP_END
365 #define NS_IMPL_QUERY_INTERFACE11_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, \
366 _i7, _i8, _i9, _i10, _i11) \
367 NS_INTERFACE_MAP_BEGIN(_class) \
368 NS_INTERFACE_MAP_ENTRY(_i1) \
369 NS_INTERFACE_MAP_ENTRY(_i2) \
370 NS_INTERFACE_MAP_ENTRY(_i3) \
371 NS_INTERFACE_MAP_ENTRY(_i4) \
372 NS_INTERFACE_MAP_ENTRY(_i5) \
373 NS_INTERFACE_MAP_ENTRY(_i6) \
374 NS_INTERFACE_MAP_ENTRY(_i7) \
375 NS_INTERFACE_MAP_ENTRY(_i8) \
376 NS_INTERFACE_MAP_ENTRY(_i9) \
377 NS_INTERFACE_MAP_ENTRY(_i10) \
378 NS_INTERFACE_MAP_ENTRY(_i11) \
379 NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1) \
380 NS_IMPL_QUERY_CLASSINFO(_class) \
381 NS_INTERFACE_MAP_END
383 #define NS_IMPL_ISUPPORTS10_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, \
384 _i8, _i9, _i10) \
385 NS_IMPL_ADDREF(_class) \
386 NS_IMPL_RELEASE(_class) \
387 NS_IMPL_QUERY_INTERFACE10_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, \
388 _i8, _i9, _i10) \
389 NS_IMPL_CI_INTERFACE_GETTER10(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, \
390 _i8, _i9, _i10)
392 #define NS_IMPL_ISUPPORTS11_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, \
393 _i8, _i9, _i10, _i11) \
394 NS_IMPL_ADDREF(_class) \
395 NS_IMPL_RELEASE(_class) \
396 NS_IMPL_QUERY_INTERFACE11_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, \
397 _i8, _i9, _i10, _i11) \
398 NS_IMPL_CI_INTERFACE_GETTER11(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, \
399 _i8, _i9, _i10, _i11)
401 #endif // nsIClassInfoImpl_h__