factor the |IMPL_QUERY| macros to support inheriting |QueryInterface|. Redefine all the |NS_IMPL_ISUPPORTSn| macros in terms of the table-style macros. r={pinkerton, sfraser}

This commit is contained in:
scc%netscape.com 2000-01-12 16:01:14 +00:00
Родитель bd90662588
Коммит 0fc0a0709f
2 изменённых файлов: 228 добавлений и 192 удалений

Просмотреть файл

@ -278,6 +278,20 @@ NS_IMETHODIMP _class::QueryInterface(REFNSIID aIID, void** aInstancePtr) \
return status; \
}
#define NS_IMPL_QUERY_TAIL_INHERITING(_baseclass) \
foundInterface = 0; \
nsresult status; \
if ( !foundInterface ) \
status = _baseclass::QueryInterface(aIID, aInstancePtr); \
else \
{ \
NS_ADDREF(foundInterface); \
status = NS_OK; \
} \
*aInstancePtr = foundInterface; \
return status; \
}
#define NS_IMPL_QUERY_TAIL(_supports_interface) \
NS_IMPL_QUERY_BODY_AMBIGUOUS(nsISupports, _supports_interface) \
NS_IMPL_QUERY_TAIL_GUTS
@ -293,110 +307,117 @@ NS_IMETHODIMP _class::QueryInterface(REFNSIID aIID, void** aInstancePtr) \
#define NS_INTERFACE_MAP_ENTRY(_interface) NS_IMPL_QUERY_BODY(_interface)
#define NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(_interface, _implClass) NS_IMPL_QUERY_BODY_AMBIGUOUS(_interface, _implClass)
#define NS_INTERFACE_MAP_END NS_IMPL_QUERY_TAIL_GUTS
#define NS_INTERFACE_MAP_END_INHERITING(_baseClass) NS_IMPL_QUERY_TAIL_INHERITING(_baseClass)
#define NS_IMPL_QUERY_INTERFACE0(_class) \
NS_INTERFACE_MAP_BEGIN(_class) \
NS_INTERFACE_MAP_ENTRY(nsISupports) \
NS_INTERFACE_MAP_END
#define NS_IMPL_QUERY_INTERFACE0(_class) \
NS_IMPL_QUERY_HEAD(_class) \
NS_IMPL_QUERY_TAIL(nsISupports)
#define NS_IMPL_QUERY_INTERFACE1(_class, _i1) \
NS_INTERFACE_MAP_BEGIN(_class) \
NS_INTERFACE_MAP_ENTRY(_i1) \
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1) \
NS_INTERFACE_MAP_END
#define NS_IMPL_QUERY_INTERFACE1(_class, _interface) \
NS_IMPL_QUERY_HEAD(_class) \
NS_IMPL_QUERY_BODY(_interface) \
NS_IMPL_QUERY_TAIL(nsISupports)
#define NS_IMPL_QUERY_INTERFACE2(_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_INTERFACE_MAP_END
#define NS_IMPL_QUERY_INTERFACE2(_class, _i1, _i2) \
NS_IMPL_QUERY_HEAD(_class) \
NS_IMPL_QUERY_BODY(_i1) \
NS_IMPL_QUERY_BODY(_i2) \
NS_IMPL_QUERY_TAIL(_i1)
#define NS_IMPL_QUERY_INTERFACE3(_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_INTERFACE_MAP_END
#define NS_IMPL_QUERY_INTERFACE3(_class, _i1, _i2, _i3) \
NS_IMPL_QUERY_HEAD(_class) \
NS_IMPL_QUERY_BODY(_i1) \
NS_IMPL_QUERY_BODY(_i2) \
NS_IMPL_QUERY_BODY(_i3) \
NS_IMPL_QUERY_TAIL(_i1)
#define NS_IMPL_QUERY_INTERFACE4(_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_INTERFACE_MAP_END
#define NS_IMPL_QUERY_INTERFACE4(_class, _i1, _i2, _i3, _i4) \
NS_IMPL_QUERY_HEAD(_class) \
NS_IMPL_QUERY_BODY(_i1) \
NS_IMPL_QUERY_BODY(_i2) \
NS_IMPL_QUERY_BODY(_i3) \
NS_IMPL_QUERY_BODY(_i4) \
NS_IMPL_QUERY_TAIL(_i1)
#define NS_IMPL_QUERY_INTERFACE5(_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_INTERFACE_MAP_END
#define NS_IMPL_QUERY_INTERFACE5(_class, _i1, _i2, _i3, _i4, _i5) \
NS_IMPL_QUERY_HEAD(_class) \
NS_IMPL_QUERY_BODY(_i1) \
NS_IMPL_QUERY_BODY(_i2) \
NS_IMPL_QUERY_BODY(_i3) \
NS_IMPL_QUERY_BODY(_i4) \
NS_IMPL_QUERY_BODY(_i5) \
NS_IMPL_QUERY_TAIL(_i1)
#define NS_IMPL_QUERY_INTERFACE6(_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_INTERFACE_MAP_END
#define NS_IMPL_QUERY_INTERFACE6(_class, _i1, _i2, _i3, _i4, _i5, _i6) \
NS_IMPL_QUERY_HEAD(_class) \
NS_IMPL_QUERY_BODY(_i1) \
NS_IMPL_QUERY_BODY(_i2) \
NS_IMPL_QUERY_BODY(_i3) \
NS_IMPL_QUERY_BODY(_i4) \
NS_IMPL_QUERY_BODY(_i5) \
NS_IMPL_QUERY_BODY(_i6) \
NS_IMPL_QUERY_TAIL(_i1)
#define NS_IMPL_QUERY_INTERFACE7(_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_INTERFACE_MAP_END
#define NS_IMPL_QUERY_INTERFACE7(_class, _i1, _i2, _i3, _i4, _i5, _i6, \
_i7) \
NS_IMPL_QUERY_HEAD(_class) \
NS_IMPL_QUERY_BODY(_i1) \
NS_IMPL_QUERY_BODY(_i2) \
NS_IMPL_QUERY_BODY(_i3) \
NS_IMPL_QUERY_BODY(_i4) \
NS_IMPL_QUERY_BODY(_i5) \
NS_IMPL_QUERY_BODY(_i6) \
NS_IMPL_QUERY_BODY(_i7) \
NS_IMPL_QUERY_TAIL(_i1)
#define NS_IMPL_QUERY_INTERFACE8(_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_INTERFACE_MAP_END
#define NS_IMPL_QUERY_INTERFACE8(_class, _i1, _i2, _i3, _i4, _i5, _i6, \
_i7, _i8) \
NS_IMPL_QUERY_HEAD(_class) \
NS_IMPL_QUERY_BODY(_i1) \
NS_IMPL_QUERY_BODY(_i2) \
NS_IMPL_QUERY_BODY(_i3) \
NS_IMPL_QUERY_BODY(_i4) \
NS_IMPL_QUERY_BODY(_i5) \
NS_IMPL_QUERY_BODY(_i6) \
NS_IMPL_QUERY_BODY(_i7) \
NS_IMPL_QUERY_BODY(_i8) \
NS_IMPL_QUERY_TAIL(_i1)
#define NS_IMPL_QUERY_INTERFACE9(_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_INTERFACE_MAP_END
#define NS_IMPL_QUERY_INTERFACE9(_class, _i1, _i2, _i3, _i4, _i5, _i6, \
_i7, _i8, _i9) \
NS_IMPL_QUERY_HEAD(_class) \
NS_IMPL_QUERY_BODY(_i1) \
NS_IMPL_QUERY_BODY(_i2) \
NS_IMPL_QUERY_BODY(_i3) \
NS_IMPL_QUERY_BODY(_i4) \
NS_IMPL_QUERY_BODY(_i5) \
NS_IMPL_QUERY_BODY(_i6) \
NS_IMPL_QUERY_BODY(_i7) \
NS_IMPL_QUERY_BODY(_i8) \
NS_IMPL_QUERY_BODY(_i9) \
NS_IMPL_QUERY_TAIL(_i1)
#define NS_IMPL_QUERY_INTERFACE10(_class, _i1, _i2, _i3, _i4, _i5, _i6, \
_i7, _i8, _i9, i10) \
NS_IMPL_QUERY_HEAD(_class) \
NS_IMPL_QUERY_BODY(_i1) \
NS_IMPL_QUERY_BODY(_i2) \
NS_IMPL_QUERY_BODY(_i3) \
NS_IMPL_QUERY_BODY(_i4) \
NS_IMPL_QUERY_BODY(_i5) \
NS_IMPL_QUERY_BODY(_i6) \
NS_IMPL_QUERY_BODY(_i7) \
NS_IMPL_QUERY_BODY(_i8) \
NS_IMPL_QUERY_BODY(_i9) \
NS_IMPL_QUERY_BODY(_i10) \
NS_IMPL_QUERY_TAIL(_i1)
#define NS_IMPL_QUERY_INTERFACE10(_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_INTERFACE_MAP_END
/*
The following macro is deprecated. We need to switch all instances
@ -833,9 +854,6 @@ NS_IMETHODIMP _class::QueryInterface(REFNSIID aIID, void** aInstancePtr) \
///////////////////////////////////////////////////////////////////////////////
// A type-safe interface for calling |QueryInterface()|. A similar
// implementation exists in "nsCOMPtr.h" for use with |nsCOMPtr|s.
extern "C++" {
// ...because some one is accidentally including this file inside
// an |extern "C"|

Просмотреть файл

@ -278,6 +278,20 @@ NS_IMETHODIMP _class::QueryInterface(REFNSIID aIID, void** aInstancePtr) \
return status; \
}
#define NS_IMPL_QUERY_TAIL_INHERITING(_baseclass) \
foundInterface = 0; \
nsresult status; \
if ( !foundInterface ) \
status = _baseclass::QueryInterface(aIID, aInstancePtr); \
else \
{ \
NS_ADDREF(foundInterface); \
status = NS_OK; \
} \
*aInstancePtr = foundInterface; \
return status; \
}
#define NS_IMPL_QUERY_TAIL(_supports_interface) \
NS_IMPL_QUERY_BODY_AMBIGUOUS(nsISupports, _supports_interface) \
NS_IMPL_QUERY_TAIL_GUTS
@ -293,110 +307,117 @@ NS_IMETHODIMP _class::QueryInterface(REFNSIID aIID, void** aInstancePtr) \
#define NS_INTERFACE_MAP_ENTRY(_interface) NS_IMPL_QUERY_BODY(_interface)
#define NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(_interface, _implClass) NS_IMPL_QUERY_BODY_AMBIGUOUS(_interface, _implClass)
#define NS_INTERFACE_MAP_END NS_IMPL_QUERY_TAIL_GUTS
#define NS_INTERFACE_MAP_END_INHERITING(_baseClass) NS_IMPL_QUERY_TAIL_INHERITING(_baseClass)
#define NS_IMPL_QUERY_INTERFACE0(_class) \
NS_INTERFACE_MAP_BEGIN(_class) \
NS_INTERFACE_MAP_ENTRY(nsISupports) \
NS_INTERFACE_MAP_END
#define NS_IMPL_QUERY_INTERFACE0(_class) \
NS_IMPL_QUERY_HEAD(_class) \
NS_IMPL_QUERY_TAIL(nsISupports)
#define NS_IMPL_QUERY_INTERFACE1(_class, _i1) \
NS_INTERFACE_MAP_BEGIN(_class) \
NS_INTERFACE_MAP_ENTRY(_i1) \
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, _i1) \
NS_INTERFACE_MAP_END
#define NS_IMPL_QUERY_INTERFACE1(_class, _interface) \
NS_IMPL_QUERY_HEAD(_class) \
NS_IMPL_QUERY_BODY(_interface) \
NS_IMPL_QUERY_TAIL(nsISupports)
#define NS_IMPL_QUERY_INTERFACE2(_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_INTERFACE_MAP_END
#define NS_IMPL_QUERY_INTERFACE2(_class, _i1, _i2) \
NS_IMPL_QUERY_HEAD(_class) \
NS_IMPL_QUERY_BODY(_i1) \
NS_IMPL_QUERY_BODY(_i2) \
NS_IMPL_QUERY_TAIL(_i1)
#define NS_IMPL_QUERY_INTERFACE3(_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_INTERFACE_MAP_END
#define NS_IMPL_QUERY_INTERFACE3(_class, _i1, _i2, _i3) \
NS_IMPL_QUERY_HEAD(_class) \
NS_IMPL_QUERY_BODY(_i1) \
NS_IMPL_QUERY_BODY(_i2) \
NS_IMPL_QUERY_BODY(_i3) \
NS_IMPL_QUERY_TAIL(_i1)
#define NS_IMPL_QUERY_INTERFACE4(_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_INTERFACE_MAP_END
#define NS_IMPL_QUERY_INTERFACE4(_class, _i1, _i2, _i3, _i4) \
NS_IMPL_QUERY_HEAD(_class) \
NS_IMPL_QUERY_BODY(_i1) \
NS_IMPL_QUERY_BODY(_i2) \
NS_IMPL_QUERY_BODY(_i3) \
NS_IMPL_QUERY_BODY(_i4) \
NS_IMPL_QUERY_TAIL(_i1)
#define NS_IMPL_QUERY_INTERFACE5(_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_INTERFACE_MAP_END
#define NS_IMPL_QUERY_INTERFACE5(_class, _i1, _i2, _i3, _i4, _i5) \
NS_IMPL_QUERY_HEAD(_class) \
NS_IMPL_QUERY_BODY(_i1) \
NS_IMPL_QUERY_BODY(_i2) \
NS_IMPL_QUERY_BODY(_i3) \
NS_IMPL_QUERY_BODY(_i4) \
NS_IMPL_QUERY_BODY(_i5) \
NS_IMPL_QUERY_TAIL(_i1)
#define NS_IMPL_QUERY_INTERFACE6(_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_INTERFACE_MAP_END
#define NS_IMPL_QUERY_INTERFACE6(_class, _i1, _i2, _i3, _i4, _i5, _i6) \
NS_IMPL_QUERY_HEAD(_class) \
NS_IMPL_QUERY_BODY(_i1) \
NS_IMPL_QUERY_BODY(_i2) \
NS_IMPL_QUERY_BODY(_i3) \
NS_IMPL_QUERY_BODY(_i4) \
NS_IMPL_QUERY_BODY(_i5) \
NS_IMPL_QUERY_BODY(_i6) \
NS_IMPL_QUERY_TAIL(_i1)
#define NS_IMPL_QUERY_INTERFACE7(_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_INTERFACE_MAP_END
#define NS_IMPL_QUERY_INTERFACE7(_class, _i1, _i2, _i3, _i4, _i5, _i6, \
_i7) \
NS_IMPL_QUERY_HEAD(_class) \
NS_IMPL_QUERY_BODY(_i1) \
NS_IMPL_QUERY_BODY(_i2) \
NS_IMPL_QUERY_BODY(_i3) \
NS_IMPL_QUERY_BODY(_i4) \
NS_IMPL_QUERY_BODY(_i5) \
NS_IMPL_QUERY_BODY(_i6) \
NS_IMPL_QUERY_BODY(_i7) \
NS_IMPL_QUERY_TAIL(_i1)
#define NS_IMPL_QUERY_INTERFACE8(_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_INTERFACE_MAP_END
#define NS_IMPL_QUERY_INTERFACE8(_class, _i1, _i2, _i3, _i4, _i5, _i6, \
_i7, _i8) \
NS_IMPL_QUERY_HEAD(_class) \
NS_IMPL_QUERY_BODY(_i1) \
NS_IMPL_QUERY_BODY(_i2) \
NS_IMPL_QUERY_BODY(_i3) \
NS_IMPL_QUERY_BODY(_i4) \
NS_IMPL_QUERY_BODY(_i5) \
NS_IMPL_QUERY_BODY(_i6) \
NS_IMPL_QUERY_BODY(_i7) \
NS_IMPL_QUERY_BODY(_i8) \
NS_IMPL_QUERY_TAIL(_i1)
#define NS_IMPL_QUERY_INTERFACE9(_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_INTERFACE_MAP_END
#define NS_IMPL_QUERY_INTERFACE9(_class, _i1, _i2, _i3, _i4, _i5, _i6, \
_i7, _i8, _i9) \
NS_IMPL_QUERY_HEAD(_class) \
NS_IMPL_QUERY_BODY(_i1) \
NS_IMPL_QUERY_BODY(_i2) \
NS_IMPL_QUERY_BODY(_i3) \
NS_IMPL_QUERY_BODY(_i4) \
NS_IMPL_QUERY_BODY(_i5) \
NS_IMPL_QUERY_BODY(_i6) \
NS_IMPL_QUERY_BODY(_i7) \
NS_IMPL_QUERY_BODY(_i8) \
NS_IMPL_QUERY_BODY(_i9) \
NS_IMPL_QUERY_TAIL(_i1)
#define NS_IMPL_QUERY_INTERFACE10(_class, _i1, _i2, _i3, _i4, _i5, _i6, \
_i7, _i8, _i9, i10) \
NS_IMPL_QUERY_HEAD(_class) \
NS_IMPL_QUERY_BODY(_i1) \
NS_IMPL_QUERY_BODY(_i2) \
NS_IMPL_QUERY_BODY(_i3) \
NS_IMPL_QUERY_BODY(_i4) \
NS_IMPL_QUERY_BODY(_i5) \
NS_IMPL_QUERY_BODY(_i6) \
NS_IMPL_QUERY_BODY(_i7) \
NS_IMPL_QUERY_BODY(_i8) \
NS_IMPL_QUERY_BODY(_i9) \
NS_IMPL_QUERY_BODY(_i10) \
NS_IMPL_QUERY_TAIL(_i1)
#define NS_IMPL_QUERY_INTERFACE10(_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_INTERFACE_MAP_END
/*
The following macro is deprecated. We need to switch all instances
@ -833,9 +854,6 @@ NS_IMETHODIMP _class::QueryInterface(REFNSIID aIID, void** aInstancePtr) \
///////////////////////////////////////////////////////////////////////////////
// A type-safe interface for calling |QueryInterface()|. A similar
// implementation exists in "nsCOMPtr.h" for use with |nsCOMPtr|s.
extern "C++" {
// ...because some one is accidentally including this file inside
// an |extern "C"|