2007-03-22 10:30:00 -07:00
|
|
|
/* ***** BEGIN LICENSE BLOCK *****
|
|
|
|
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
|
|
*
|
|
|
|
* The contents of this file are subject to the Mozilla Public License Version
|
|
|
|
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
|
|
* the License. You may obtain a copy of the License at
|
|
|
|
* http://www.mozilla.org/MPL/
|
|
|
|
*
|
|
|
|
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
|
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
|
|
* for the specific language governing rights and limitations under the
|
|
|
|
* License.
|
|
|
|
*
|
|
|
|
* The Original Code is XPCOM.
|
|
|
|
*
|
|
|
|
* The Initial Developer of the Original Code is Netscape Communications Corp.
|
|
|
|
* Portions created by the Initial Developer are Copyright (C) 2001
|
|
|
|
* the Initial Developer. All Rights Reserved.
|
|
|
|
*
|
|
|
|
* Contributor(s):
|
|
|
|
*
|
|
|
|
* Alternatively, the contents of this file may be used under the terms of
|
|
|
|
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
|
|
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
|
|
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
|
|
* of those above. If you wish to allow use of your version of this file only
|
|
|
|
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
|
|
* use your version of this file under the terms of the MPL, indicate your
|
|
|
|
* decision by deleting the provisions above and replace them with the notice
|
|
|
|
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
|
|
* the provisions above, a recipient may use your version of this file under
|
|
|
|
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
|
|
*
|
|
|
|
* ***** END LICENSE BLOCK ***** */
|
|
|
|
|
|
|
|
#ifndef nsIClassInfoImpl_h__
|
|
|
|
#define nsIClassInfoImpl_h__
|
|
|
|
|
|
|
|
#include "nsIClassInfo.h"
|
2010-06-10 11:11:11 -07:00
|
|
|
#include "nsISupportsImpl.h"
|
2007-03-22 10:30:00 -07:00
|
|
|
|
2010-07-01 09:11:42 -07:00
|
|
|
#include NEW_H
|
|
|
|
|
2010-07-02 11:23:41 -07:00
|
|
|
class NS_COM_GLUE GenericClassInfo : public nsIClassInfo
|
2010-06-10 11:11:11 -07:00
|
|
|
{
|
|
|
|
public:
|
|
|
|
struct ClassInfoData
|
|
|
|
{
|
|
|
|
typedef NS_CALLBACK(GetInterfacesProc)(PRUint32* NS_OUTPARAM countp,
|
|
|
|
nsIID*** NS_OUTPARAM array);
|
|
|
|
typedef NS_CALLBACK(GetLanguageHelperProc)(PRUint32 language,
|
|
|
|
nsISupports** helper);
|
|
|
|
|
|
|
|
GetInterfacesProc getinterfaces;
|
|
|
|
GetLanguageHelperProc getlanguagehelper;
|
|
|
|
PRUint32 flags;
|
2010-06-22 09:59:57 -07:00
|
|
|
nsCID cid;
|
2010-06-10 11:11:11 -07:00
|
|
|
};
|
|
|
|
|
|
|
|
NS_DECL_ISUPPORTS_INHERITED
|
|
|
|
NS_DECL_NSICLASSINFO
|
|
|
|
|
|
|
|
GenericClassInfo(const ClassInfoData* data)
|
|
|
|
: mData(data)
|
|
|
|
{ }
|
2007-03-22 10:30:00 -07:00
|
|
|
|
2010-06-10 11:11:11 -07:00
|
|
|
private:
|
|
|
|
const ClassInfoData* mData;
|
|
|
|
};
|
|
|
|
|
|
|
|
#define NS_CLASSINFO_NAME(_class) g##_class##_classInfoGlobal
|
|
|
|
#define NS_CI_INTERFACE_GETTER_NAME(_class) _class##_GetInterfacesHelper
|
2007-03-22 10:30:00 -07:00
|
|
|
#define NS_DECL_CI_INTERFACE_GETTER(_class) \
|
2008-12-11 12:13:52 -08:00
|
|
|
extern NS_IMETHODIMP NS_CI_INTERFACE_GETTER_NAME(_class) \
|
|
|
|
(PRUint32 * NS_OUTPARAM, nsIID *** NS_OUTPARAM);
|
2007-03-22 10:30:00 -07:00
|
|
|
|
2010-06-22 09:59:57 -07:00
|
|
|
#define NS_IMPL_CLASSINFO(_class, _getlanguagehelper, _flags, _cid) \
|
2010-06-10 11:11:11 -07:00
|
|
|
NS_DECL_CI_INTERFACE_GETTER(_class) \
|
|
|
|
static const GenericClassInfo::ClassInfoData k##_class##ClassInfoData = { \
|
|
|
|
NS_CI_INTERFACE_GETTER_NAME(_class), \
|
|
|
|
_getlanguagehelper, \
|
2010-06-22 09:59:57 -07:00
|
|
|
_flags, \
|
|
|
|
_cid, \
|
2010-06-10 11:11:11 -07:00
|
|
|
}; \
|
2010-07-01 09:11:42 -07:00
|
|
|
static char k##_class##ClassInfoDataPlace[sizeof(GenericClassInfo)]; \
|
2010-06-11 09:47:31 -07:00
|
|
|
nsIClassInfo* NS_CLASSINFO_NAME(_class) = NULL;
|
2007-03-22 10:30:00 -07:00
|
|
|
|
2010-07-01 09:11:42 -07:00
|
|
|
#define NS_IMPL_QUERY_CLASSINFO(_class) \
|
|
|
|
if ( aIID.Equals(NS_GET_IID(nsIClassInfo)) ) { \
|
|
|
|
if (!NS_CLASSINFO_NAME(_class)) \
|
|
|
|
NS_CLASSINFO_NAME(_class) = new (k##_class##ClassInfoDataPlace) \
|
|
|
|
GenericClassInfo(&k##_class##ClassInfoData); \
|
|
|
|
foundInterface = NS_CLASSINFO_NAME(_class); \
|
2007-03-22 10:30:00 -07:00
|
|
|
} else
|
|
|
|
|
|
|
|
#define NS_CLASSINFO_HELPER_BEGIN(_class, _c) \
|
|
|
|
NS_IMETHODIMP \
|
2008-12-11 12:13:52 -08:00
|
|
|
NS_CI_INTERFACE_GETTER_NAME(_class)(PRUint32 *count NS_OUTPARAM, \
|
|
|
|
nsIID ***array NS_OUTPARAM) \
|
2007-03-22 10:30:00 -07:00
|
|
|
{ \
|
|
|
|
*count = _c; \
|
|
|
|
*array = (nsIID **)nsMemory::Alloc(sizeof (nsIID *) * _c);
|
|
|
|
|
|
|
|
#define NS_CLASSINFO_HELPER_ENTRY(_i, _interface) \
|
|
|
|
(*array)[_i] = (nsIID *)nsMemory::Clone(&NS_GET_IID(_interface), \
|
|
|
|
sizeof(nsIID));
|
|
|
|
|
|
|
|
#define NS_CLASSINFO_HELPER_END \
|
|
|
|
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_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) \
|
|
|
|
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)
|
|
|
|
|
|
|
|
#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_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)
|
|
|
|
|
|
|
|
#endif // nsIClassInfoImpl_h__
|