Bug 900908 - Part 2: Add variadic variants of numbered macros in nsIClassInfoImpl.h. r=froydnj

The old numbered macros are still present, but simply forward to the variadic
macro. They will be removed after all instances of the numbered macros have
been converted.
This commit is contained in:
Birunthan Mohanathas 2014-04-24 11:21:00 +02:00
parent 0983aefecd
commit 55e230eaba

View File

@ -6,6 +6,9 @@
#define nsIClassInfoImpl_h__
#include "mozilla/Alignment.h"
#include "mozilla/Assertions.h"
#include "mozilla/MacroArgs.h"
#include "mozilla/MacroForEach.h"
#include "nsIClassInfo.h"
#include "nsISupportsImpl.h"
@ -136,341 +139,110 @@ NS_IMETHODIMP \
NS_CI_INTERFACE_GETTER_NAME(_class)(uint32_t *count, nsIID ***array) \
{ \
*count = _c; \
*array = (nsIID **)nsMemory::Alloc(sizeof (nsIID *) * _c);
*array = (nsIID **)nsMemory::Alloc(sizeof (nsIID *) * _c); \
uint32_t i = 0;
#define NS_CLASSINFO_HELPER_ENTRY(_i, _interface) \
(*array)[_i] = (nsIID *)nsMemory::Clone(&NS_GET_IID(_interface), \
#define NS_CLASSINFO_HELPER_ENTRY(_interface) \
(*array)[i++] = (nsIID*)nsMemory::Clone(&NS_GET_IID(_interface), \
sizeof(nsIID));
#define NS_CLASSINFO_HELPER_END \
MOZ_ASSERT(i == *count, "Incorrent number of entries"); \
return NS_OK; \
}
#define NS_IMPL_CI_INTERFACE_GETTER1(_class, _interface) \
NS_CLASSINFO_HELPER_BEGIN(_class, 1) \
NS_CLASSINFO_HELPER_ENTRY(0, _interface) \
NS_CLASSINFO_HELPER_END
#define NS_IMPL_CI_INTERFACE_GETTER(aClass, ...) \
MOZ_STATIC_ASSERT_VALID_ARG_COUNT(__VA_ARGS__); \
NS_CLASSINFO_HELPER_BEGIN(aClass, \
MOZ_PASTE_PREFIX_AND_ARG_COUNT(/* No prefix */, \
__VA_ARGS__)) \
MOZ_FOR_EACH(NS_CLASSINFO_HELPER_ENTRY, (), (__VA_ARGS__)) \
NS_CLASSINFO_HELPER_END
#define NS_IMPL_QUERY_INTERFACE1_CI(_class, _i1) \
NS_INTERFACE_MAP_BEGIN(_class) \
NS_INTERFACE_MAP_ENTRY(_i1) \
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1) \
NS_IMPL_QUERY_CLASSINFO(_class) \
// TODO: Remove these after changing everything to the variadic variant.
#define NS_IMPL_CI_INTERFACE_GETTER1(aClass, ...) \
NS_IMPL_CI_INTERFACE_GETTER(aClass, __VA_ARGS__)
#define NS_IMPL_CI_INTERFACE_GETTER2(aClass, ...) \
NS_IMPL_CI_INTERFACE_GETTER(aClass, __VA_ARGS__)
#define NS_IMPL_CI_INTERFACE_GETTER3(aClass, ...) \
NS_IMPL_CI_INTERFACE_GETTER(aClass, __VA_ARGS__)
#define NS_IMPL_CI_INTERFACE_GETTER4(aClass, ...) \
NS_IMPL_CI_INTERFACE_GETTER(aClass, __VA_ARGS__)
#define NS_IMPL_CI_INTERFACE_GETTER5(aClass, ...) \
NS_IMPL_CI_INTERFACE_GETTER(aClass, __VA_ARGS__)
#define NS_IMPL_CI_INTERFACE_GETTER6(aClass, ...) \
NS_IMPL_CI_INTERFACE_GETTER(aClass, __VA_ARGS__)
#define NS_IMPL_CI_INTERFACE_GETTER7(aClass, ...) \
NS_IMPL_CI_INTERFACE_GETTER(aClass, __VA_ARGS__)
#define NS_IMPL_CI_INTERFACE_GETTER8(aClass, ...) \
NS_IMPL_CI_INTERFACE_GETTER(aClass, __VA_ARGS__)
#define NS_IMPL_CI_INTERFACE_GETTER9(aClass, ...) \
NS_IMPL_CI_INTERFACE_GETTER(aClass, __VA_ARGS__)
#define NS_IMPL_CI_INTERFACE_GETTER10(aClass, ...) \
NS_IMPL_CI_INTERFACE_GETTER(aClass, __VA_ARGS__)
#define NS_IMPL_CI_INTERFACE_GETTER11(aClass, ...) \
NS_IMPL_CI_INTERFACE_GETTER(aClass, __VA_ARGS__)
#define NS_IMPL_QUERY_INTERFACE_CI(aClass, ...) \
MOZ_STATIC_ASSERT_VALID_ARG_COUNT(__VA_ARGS__); \
NS_INTERFACE_MAP_BEGIN(aClass) \
MOZ_FOR_EACH(NS_INTERFACE_MAP_ENTRY, (), (__VA_ARGS__)) \
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, MOZ_ARG_1(__VA_ARGS__)) \
NS_IMPL_QUERY_CLASSINFO(aClass) \
NS_INTERFACE_MAP_END
#define NS_IMPL_ISUPPORTS1_CI(_class, _interface) \
NS_IMPL_ADDREF(_class) \
NS_IMPL_RELEASE(_class) \
NS_IMPL_QUERY_INTERFACE1_CI(_class, _interface) \
NS_IMPL_CI_INTERFACE_GETTER1(_class, _interface)
// TODO: Remove these after changing everything to the variadic variant.
#define NS_IMPL_QUERY_INTERFACE1_CI(aClass, ...) \
NS_IMPL_QUERY_INTERFACE_CI(aClass, __VA_ARGS__)
#define NS_IMPL_QUERY_INTERFACE2_CI(aClass, ...) \
NS_IMPL_QUERY_INTERFACE_CI(aClass, __VA_ARGS__)
#define NS_IMPL_QUERY_INTERFACE3_CI(aClass, ...) \
NS_IMPL_QUERY_INTERFACE_CI(aClass, __VA_ARGS__)
#define NS_IMPL_QUERY_INTERFACE4_CI(aClass, ...) \
NS_IMPL_QUERY_INTERFACE_CI(aClass, __VA_ARGS__)
#define NS_IMPL_QUERY_INTERFACE5_CI(aClass, ...) \
NS_IMPL_QUERY_INTERFACE_CI(aClass, __VA_ARGS__)
#define NS_IMPL_QUERY_INTERFACE6_CI(aClass, ...) \
NS_IMPL_QUERY_INTERFACE_CI(aClass, __VA_ARGS__)
#define NS_IMPL_QUERY_INTERFACE7_CI(aClass, ...) \
NS_IMPL_QUERY_INTERFACE_CI(aClass, __VA_ARGS__)
#define NS_IMPL_QUERY_INTERFACE8_CI(aClass, ...) \
NS_IMPL_QUERY_INTERFACE_CI(aClass, __VA_ARGS__)
#define NS_IMPL_QUERY_INTERFACE9_CI(aClass, ...) \
NS_IMPL_QUERY_INTERFACE_CI(aClass, __VA_ARGS__)
#define NS_IMPL_QUERY_INTERFACE10_CI(aClass, ...) \
NS_IMPL_QUERY_INTERFACE_CI(aClass, __VA_ARGS__)
#define NS_IMPL_QUERY_INTERFACE11_CI(aClass, ...) \
NS_IMPL_QUERY_INTERFACE_CI(aClass, __VA_ARGS__)
#define NS_IMPL_CI_INTERFACE_GETTER2(_class, _i1, _i2) \
NS_CLASSINFO_HELPER_BEGIN(_class, 2) \
NS_CLASSINFO_HELPER_ENTRY(0, _i1) \
NS_CLASSINFO_HELPER_ENTRY(1, _i2) \
NS_CLASSINFO_HELPER_END
#define NS_IMPL_ISUPPORTS_CI(aClass, ...) \
NS_IMPL_ADDREF(aClass) \
NS_IMPL_RELEASE(aClass) \
NS_IMPL_QUERY_INTERFACE_CI(aClass, __VA_ARGS__) \
NS_IMPL_CI_INTERFACE_GETTER(aClass, __VA_ARGS__)
#define NS_IMPL_QUERY_INTERFACE2_CI(_class, _i1, _i2) \
NS_INTERFACE_MAP_BEGIN(_class) \
NS_INTERFACE_MAP_ENTRY(_i1) \
NS_INTERFACE_MAP_ENTRY(_i2) \
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1) \
NS_IMPL_QUERY_CLASSINFO(_class) \
NS_INTERFACE_MAP_END
#define NS_IMPL_ISUPPORTS2_CI(_class, _i1, _i2) \
NS_IMPL_ADDREF(_class) \
NS_IMPL_RELEASE(_class) \
NS_IMPL_QUERY_INTERFACE2_CI(_class, _i1, _i2) \
NS_IMPL_CI_INTERFACE_GETTER2(_class, _i1, _i2)
#define NS_IMPL_CI_INTERFACE_GETTER3(_class, _i1, _i2, _i3) \
NS_CLASSINFO_HELPER_BEGIN(_class, 3) \
NS_CLASSINFO_HELPER_ENTRY(0, _i1) \
NS_CLASSINFO_HELPER_ENTRY(1, _i2) \
NS_CLASSINFO_HELPER_ENTRY(2, _i3) \
NS_CLASSINFO_HELPER_END
#define NS_IMPL_QUERY_INTERFACE3_CI(_class, _i1, _i2, _i3) \
NS_INTERFACE_MAP_BEGIN(_class) \
NS_INTERFACE_MAP_ENTRY(_i1) \
NS_INTERFACE_MAP_ENTRY(_i2) \
NS_INTERFACE_MAP_ENTRY(_i3) \
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1) \
NS_IMPL_QUERY_CLASSINFO(_class) \
NS_INTERFACE_MAP_END
#define NS_IMPL_ISUPPORTS3_CI(_class, _i1, _i2, _i3) \
NS_IMPL_ADDREF(_class) \
NS_IMPL_RELEASE(_class) \
NS_IMPL_QUERY_INTERFACE3_CI(_class, _i1, _i2, _i3) \
NS_IMPL_CI_INTERFACE_GETTER3(_class, _i1, _i2, _i3)
#define NS_IMPL_CI_INTERFACE_GETTER4(_class, _i1, _i2, _i3, _i4) \
NS_CLASSINFO_HELPER_BEGIN(_class, 4) \
NS_CLASSINFO_HELPER_ENTRY(0, _i1) \
NS_CLASSINFO_HELPER_ENTRY(1, _i2) \
NS_CLASSINFO_HELPER_ENTRY(2, _i3) \
NS_CLASSINFO_HELPER_ENTRY(3, _i4) \
NS_CLASSINFO_HELPER_END
#define NS_IMPL_QUERY_INTERFACE4_CI(_class, _i1, _i2, _i3, _i4) \
NS_INTERFACE_MAP_BEGIN(_class) \
NS_INTERFACE_MAP_ENTRY(_i1) \
NS_INTERFACE_MAP_ENTRY(_i2) \
NS_INTERFACE_MAP_ENTRY(_i3) \
NS_INTERFACE_MAP_ENTRY(_i4) \
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1) \
NS_IMPL_QUERY_CLASSINFO(_class) \
NS_INTERFACE_MAP_END
#define NS_IMPL_ISUPPORTS4_CI(_class, _i1, _i2, _i3, _i4) \
NS_IMPL_ADDREF(_class) \
NS_IMPL_RELEASE(_class) \
NS_IMPL_QUERY_INTERFACE4_CI(_class, _i1, _i2, _i3, _i4) \
NS_IMPL_CI_INTERFACE_GETTER4(_class, _i1, _i2, _i3, _i4)
#define NS_IMPL_CI_INTERFACE_GETTER5(_class, _i1, _i2, _i3, _i4, _i5) \
NS_CLASSINFO_HELPER_BEGIN(_class, 5) \
NS_CLASSINFO_HELPER_ENTRY(0, _i1) \
NS_CLASSINFO_HELPER_ENTRY(1, _i2) \
NS_CLASSINFO_HELPER_ENTRY(2, _i3) \
NS_CLASSINFO_HELPER_ENTRY(3, _i4) \
NS_CLASSINFO_HELPER_ENTRY(4, _i5) \
NS_CLASSINFO_HELPER_END
#define NS_IMPL_QUERY_INTERFACE5_CI(_class, _i1, _i2, _i3, _i4, _i5) \
NS_INTERFACE_MAP_BEGIN(_class) \
NS_INTERFACE_MAP_ENTRY(_i1) \
NS_INTERFACE_MAP_ENTRY(_i2) \
NS_INTERFACE_MAP_ENTRY(_i3) \
NS_INTERFACE_MAP_ENTRY(_i4) \
NS_INTERFACE_MAP_ENTRY(_i5) \
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1) \
NS_IMPL_QUERY_CLASSINFO(_class) \
NS_INTERFACE_MAP_END
#define NS_IMPL_ISUPPORTS5_CI(_class, _i1, _i2, _i3, _i4, _i5) \
NS_IMPL_ADDREF(_class) \
NS_IMPL_RELEASE(_class) \
NS_IMPL_QUERY_INTERFACE5_CI(_class, _i1, _i2, _i3, _i4, _i5) \
NS_IMPL_CI_INTERFACE_GETTER5(_class, _i1, _i2, _i3, _i4, _i5)
#define NS_IMPL_CI_INTERFACE_GETTER6(_class, _i1, _i2, _i3, _i4, _i5, _i6) \
NS_CLASSINFO_HELPER_BEGIN(_class, 6) \
NS_CLASSINFO_HELPER_ENTRY(0, _i1) \
NS_CLASSINFO_HELPER_ENTRY(1, _i2) \
NS_CLASSINFO_HELPER_ENTRY(2, _i3) \
NS_CLASSINFO_HELPER_ENTRY(3, _i4) \
NS_CLASSINFO_HELPER_ENTRY(4, _i5) \
NS_CLASSINFO_HELPER_ENTRY(5, _i6) \
NS_CLASSINFO_HELPER_END
#define NS_IMPL_QUERY_INTERFACE6_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6) \
NS_INTERFACE_MAP_BEGIN(_class) \
NS_INTERFACE_MAP_ENTRY(_i1) \
NS_INTERFACE_MAP_ENTRY(_i2) \
NS_INTERFACE_MAP_ENTRY(_i3) \
NS_INTERFACE_MAP_ENTRY(_i4) \
NS_INTERFACE_MAP_ENTRY(_i5) \
NS_INTERFACE_MAP_ENTRY(_i6) \
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1) \
NS_IMPL_QUERY_CLASSINFO(_class) \
NS_INTERFACE_MAP_END
#define NS_IMPL_ISUPPORTS6_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6) \
NS_IMPL_ADDREF(_class) \
NS_IMPL_RELEASE(_class) \
NS_IMPL_QUERY_INTERFACE6_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6) \
NS_IMPL_CI_INTERFACE_GETTER6(_class, _i1, _i2, _i3, _i4, _i5, _i6)
#define NS_IMPL_CI_INTERFACE_GETTER7(_class, _i1, _i2, _i3, _i4, _i5, _i6, \
_i7) \
NS_CLASSINFO_HELPER_BEGIN(_class, 7) \
NS_CLASSINFO_HELPER_ENTRY(0, _i1) \
NS_CLASSINFO_HELPER_ENTRY(1, _i2) \
NS_CLASSINFO_HELPER_ENTRY(2, _i3) \
NS_CLASSINFO_HELPER_ENTRY(3, _i4) \
NS_CLASSINFO_HELPER_ENTRY(4, _i5) \
NS_CLASSINFO_HELPER_ENTRY(5, _i6) \
NS_CLASSINFO_HELPER_ENTRY(6, _i7) \
NS_CLASSINFO_HELPER_END
#define NS_IMPL_QUERY_INTERFACE7_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, \
_i7) \
NS_INTERFACE_MAP_BEGIN(_class) \
NS_INTERFACE_MAP_ENTRY(_i1) \
NS_INTERFACE_MAP_ENTRY(_i2) \
NS_INTERFACE_MAP_ENTRY(_i3) \
NS_INTERFACE_MAP_ENTRY(_i4) \
NS_INTERFACE_MAP_ENTRY(_i5) \
NS_INTERFACE_MAP_ENTRY(_i6) \
NS_INTERFACE_MAP_ENTRY(_i7) \
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1) \
NS_IMPL_QUERY_CLASSINFO(_class) \
NS_INTERFACE_MAP_END
#define NS_IMPL_ISUPPORTS7_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7) \
NS_IMPL_ADDREF(_class) \
NS_IMPL_RELEASE(_class) \
NS_IMPL_QUERY_INTERFACE7_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7) \
NS_IMPL_CI_INTERFACE_GETTER7(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7)
#define NS_IMPL_CI_INTERFACE_GETTER8(_class, _i1, _i2, _i3, _i4, _i5, _i6, \
_i7, _i8) \
NS_CLASSINFO_HELPER_BEGIN(_class, 8) \
NS_CLASSINFO_HELPER_ENTRY(0, _i1) \
NS_CLASSINFO_HELPER_ENTRY(1, _i2) \
NS_CLASSINFO_HELPER_ENTRY(2, _i3) \
NS_CLASSINFO_HELPER_ENTRY(3, _i4) \
NS_CLASSINFO_HELPER_ENTRY(4, _i5) \
NS_CLASSINFO_HELPER_ENTRY(5, _i6) \
NS_CLASSINFO_HELPER_ENTRY(6, _i7) \
NS_CLASSINFO_HELPER_ENTRY(7, _i8) \
NS_CLASSINFO_HELPER_END
#define NS_IMPL_QUERY_INTERFACE8_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, \
_i7, _i8) \
NS_INTERFACE_MAP_BEGIN(_class) \
NS_INTERFACE_MAP_ENTRY(_i1) \
NS_INTERFACE_MAP_ENTRY(_i2) \
NS_INTERFACE_MAP_ENTRY(_i3) \
NS_INTERFACE_MAP_ENTRY(_i4) \
NS_INTERFACE_MAP_ENTRY(_i5) \
NS_INTERFACE_MAP_ENTRY(_i6) \
NS_INTERFACE_MAP_ENTRY(_i7) \
NS_INTERFACE_MAP_ENTRY(_i8) \
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1) \
NS_IMPL_QUERY_CLASSINFO(_class) \
NS_INTERFACE_MAP_END
#define NS_IMPL_ISUPPORTS8_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, _i8) \
NS_IMPL_ADDREF(_class) \
NS_IMPL_RELEASE(_class) \
NS_IMPL_QUERY_INTERFACE8_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, _i8) \
NS_IMPL_CI_INTERFACE_GETTER8(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, _i8)
#define NS_IMPL_CI_INTERFACE_GETTER9(_class, _i1, _i2, _i3, _i4, _i5, _i6, \
_i7, _i8, _i9) \
NS_CLASSINFO_HELPER_BEGIN(_class, 9) \
NS_CLASSINFO_HELPER_ENTRY(0, _i1) \
NS_CLASSINFO_HELPER_ENTRY(1, _i2) \
NS_CLASSINFO_HELPER_ENTRY(2, _i3) \
NS_CLASSINFO_HELPER_ENTRY(3, _i4) \
NS_CLASSINFO_HELPER_ENTRY(4, _i5) \
NS_CLASSINFO_HELPER_ENTRY(5, _i6) \
NS_CLASSINFO_HELPER_ENTRY(6, _i7) \
NS_CLASSINFO_HELPER_ENTRY(7, _i8) \
NS_CLASSINFO_HELPER_ENTRY(8, _i9) \
NS_CLASSINFO_HELPER_END
#define NS_IMPL_QUERY_INTERFACE9_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, \
_i7, _i8, _i9) \
NS_INTERFACE_MAP_BEGIN(_class) \
NS_INTERFACE_MAP_ENTRY(_i1) \
NS_INTERFACE_MAP_ENTRY(_i2) \
NS_INTERFACE_MAP_ENTRY(_i3) \
NS_INTERFACE_MAP_ENTRY(_i4) \
NS_INTERFACE_MAP_ENTRY(_i5) \
NS_INTERFACE_MAP_ENTRY(_i6) \
NS_INTERFACE_MAP_ENTRY(_i7) \
NS_INTERFACE_MAP_ENTRY(_i8) \
NS_INTERFACE_MAP_ENTRY(_i9) \
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1) \
NS_IMPL_QUERY_CLASSINFO(_class) \
NS_INTERFACE_MAP_END
#define NS_IMPL_ISUPPORTS9_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, \
_i8, _i9) \
NS_IMPL_ADDREF(_class) \
NS_IMPL_RELEASE(_class) \
NS_IMPL_QUERY_INTERFACE9_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, \
_i8, _i9) \
NS_IMPL_CI_INTERFACE_GETTER9(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, \
_i8, _i9)
#define NS_IMPL_CI_INTERFACE_GETTER10(_class, _i1, _i2, _i3, _i4, _i5, _i6, \
_i7, _i8, _i9, _i10) \
NS_CLASSINFO_HELPER_BEGIN(_class, 10) \
NS_CLASSINFO_HELPER_ENTRY(0, _i1) \
NS_CLASSINFO_HELPER_ENTRY(1, _i2) \
NS_CLASSINFO_HELPER_ENTRY(2, _i3) \
NS_CLASSINFO_HELPER_ENTRY(3, _i4) \
NS_CLASSINFO_HELPER_ENTRY(4, _i5) \
NS_CLASSINFO_HELPER_ENTRY(5, _i6) \
NS_CLASSINFO_HELPER_ENTRY(6, _i7) \
NS_CLASSINFO_HELPER_ENTRY(7, _i8) \
NS_CLASSINFO_HELPER_ENTRY(8, _i9) \
NS_CLASSINFO_HELPER_ENTRY(9, _i10) \
NS_CLASSINFO_HELPER_END
#define NS_IMPL_CI_INTERFACE_GETTER11(_class, _i1, _i2, _i3, _i4, _i5, _i6, \
_i7, _i8, _i9, _i10, _i11) \
NS_CLASSINFO_HELPER_BEGIN(_class, 11) \
NS_CLASSINFO_HELPER_ENTRY(0, _i1) \
NS_CLASSINFO_HELPER_ENTRY(1, _i2) \
NS_CLASSINFO_HELPER_ENTRY(2, _i3) \
NS_CLASSINFO_HELPER_ENTRY(3, _i4) \
NS_CLASSINFO_HELPER_ENTRY(4, _i5) \
NS_CLASSINFO_HELPER_ENTRY(5, _i6) \
NS_CLASSINFO_HELPER_ENTRY(6, _i7) \
NS_CLASSINFO_HELPER_ENTRY(7, _i8) \
NS_CLASSINFO_HELPER_ENTRY(8, _i9) \
NS_CLASSINFO_HELPER_ENTRY(9, _i10) \
NS_CLASSINFO_HELPER_ENTRY(10, _i11) \
NS_CLASSINFO_HELPER_END
#define NS_IMPL_QUERY_INTERFACE10_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, \
_i7, _i8, _i9, _i10) \
NS_INTERFACE_MAP_BEGIN(_class) \
NS_INTERFACE_MAP_ENTRY(_i1) \
NS_INTERFACE_MAP_ENTRY(_i2) \
NS_INTERFACE_MAP_ENTRY(_i3) \
NS_INTERFACE_MAP_ENTRY(_i4) \
NS_INTERFACE_MAP_ENTRY(_i5) \
NS_INTERFACE_MAP_ENTRY(_i6) \
NS_INTERFACE_MAP_ENTRY(_i7) \
NS_INTERFACE_MAP_ENTRY(_i8) \
NS_INTERFACE_MAP_ENTRY(_i9) \
NS_INTERFACE_MAP_ENTRY(_i10) \
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1) \
NS_IMPL_QUERY_CLASSINFO(_class) \
NS_INTERFACE_MAP_END
#define NS_IMPL_QUERY_INTERFACE11_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, \
_i7, _i8, _i9, _i10, _i11) \
NS_INTERFACE_MAP_BEGIN(_class) \
NS_INTERFACE_MAP_ENTRY(_i1) \
NS_INTERFACE_MAP_ENTRY(_i2) \
NS_INTERFACE_MAP_ENTRY(_i3) \
NS_INTERFACE_MAP_ENTRY(_i4) \
NS_INTERFACE_MAP_ENTRY(_i5) \
NS_INTERFACE_MAP_ENTRY(_i6) \
NS_INTERFACE_MAP_ENTRY(_i7) \
NS_INTERFACE_MAP_ENTRY(_i8) \
NS_INTERFACE_MAP_ENTRY(_i9) \
NS_INTERFACE_MAP_ENTRY(_i10) \
NS_INTERFACE_MAP_ENTRY(_i11) \
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1) \
NS_IMPL_QUERY_CLASSINFO(_class) \
NS_INTERFACE_MAP_END
#define NS_IMPL_ISUPPORTS10_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, \
_i8, _i9, _i10) \
NS_IMPL_ADDREF(_class) \
NS_IMPL_RELEASE(_class) \
NS_IMPL_QUERY_INTERFACE10_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, \
_i8, _i9, _i10) \
NS_IMPL_CI_INTERFACE_GETTER10(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, \
_i8, _i9, _i10)
#define NS_IMPL_ISUPPORTS11_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, \
_i8, _i9, _i10, _i11) \
NS_IMPL_ADDREF(_class) \
NS_IMPL_RELEASE(_class) \
NS_IMPL_QUERY_INTERFACE11_CI(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, \
_i8, _i9, _i10, _i11) \
NS_IMPL_CI_INTERFACE_GETTER11(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, \
_i8, _i9, _i10, _i11)
// TODO: Remove these after changing everything to the variadic variant.
#define NS_IMPL_ISUPPORTS1_CI(aClass, ...) \
NS_IMPL_ISUPPORTS_CI(aClass, __VA_ARGS__)
#define NS_IMPL_ISUPPORTS2_CI(aClass, ...) \
NS_IMPL_ISUPPORTS_CI(aClass, __VA_ARGS__)
#define NS_IMPL_ISUPPORTS3_CI(aClass, ...) \
NS_IMPL_ISUPPORTS_CI(aClass, __VA_ARGS__)
#define NS_IMPL_ISUPPORTS4_CI(aClass, ...) \
NS_IMPL_ISUPPORTS_CI(aClass, __VA_ARGS__)
#define NS_IMPL_ISUPPORTS5_CI(aClass, ...) \
NS_IMPL_ISUPPORTS_CI(aClass, __VA_ARGS__)
#define NS_IMPL_ISUPPORTS6_CI(aClass, ...) \
NS_IMPL_ISUPPORTS_CI(aClass, __VA_ARGS__)
#define NS_IMPL_ISUPPORTS7_CI(aClass, ...) \
NS_IMPL_ISUPPORTS_CI(aClass, __VA_ARGS__)
#define NS_IMPL_ISUPPORTS8_CI(aClass, ...) \
NS_IMPL_ISUPPORTS_CI(aClass, __VA_ARGS__)
#define NS_IMPL_ISUPPORTS9_CI(aClass, ...) \
NS_IMPL_ISUPPORTS_CI(aClass, __VA_ARGS__)
#define NS_IMPL_ISUPPORTS10_CI(aClass, ...) \
NS_IMPL_ISUPPORTS_CI(aClass, __VA_ARGS__)
#define NS_IMPL_ISUPPORTS11_CI(aClass, ...) \
NS_IMPL_ISUPPORTS_CI(aClass, __VA_ARGS__)
#endif // nsIClassInfoImpl_h__