📄 nsisupportsimpl.h
字号:
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_INTERFACE_MAP_END#define NS_IMPL_THREADSAFE_QUERY_INTERFACE0 NS_IMPL_QUERY_INTERFACE0#define NS_IMPL_THREADSAFE_QUERY_INTERFACE1 NS_IMPL_QUERY_INTERFACE1#define NS_IMPL_THREADSAFE_QUERY_INTERFACE2 NS_IMPL_QUERY_INTERFACE2#define NS_IMPL_THREADSAFE_QUERY_INTERFACE3 NS_IMPL_QUERY_INTERFACE3#define NS_IMPL_THREADSAFE_QUERY_INTERFACE4 NS_IMPL_QUERY_INTERFACE4#define NS_IMPL_THREADSAFE_QUERY_INTERFACE5 NS_IMPL_QUERY_INTERFACE5#define NS_IMPL_THREADSAFE_QUERY_INTERFACE6 NS_IMPL_QUERY_INTERFACE6#define NS_IMPL_THREADSAFE_QUERY_INTERFACE7 NS_IMPL_QUERY_INTERFACE7#define NS_IMPL_THREADSAFE_QUERY_INTERFACE8 NS_IMPL_QUERY_INTERFACE8#define NS_IMPL_THREADSAFE_QUERY_INTERFACE9 NS_IMPL_QUERY_INTERFACE9#define NS_IMPL_THREADSAFE_QUERY_INTERFACE10 NS_IMPL_QUERY_INTERFACE10#define NS_IMPL_THREADSAFE_QUERY_INTERFACE11 NS_IMPL_QUERY_INTERFACE11/** * Declare that you're going to inherit from something that already * implements nsISupports, but also implements an additional interface, thus * causing an ambiguity. In this case you don't need another mRefCnt, you * just need to forward the definitions to the appropriate superclass. E.g. * * class Bar : public Foo, public nsIBar { // both provide nsISupports * public: * NS_DECL_ISUPPORTS_INHERITED * ...other nsIBar and Bar methods... * }; */#define NS_DECL_ISUPPORTS_INHERITED \public: \ NS_IMETHOD QueryInterface(REFNSIID aIID, \ void** aInstancePtr); \ NS_IMETHOD_(nsrefcnt) AddRef(void); \ NS_IMETHOD_(nsrefcnt) Release(void); \/** * These macros can be used in conjunction with NS_DECL_ISUPPORTS_INHERITED * to implement the nsISupports methods, forwarding the invocations to a * superclass that already implements nsISupports. * * Note that I didn't make these inlined because they're virtual methods. */#define NS_IMPL_ADDREF_INHERITED(Class, Super) \NS_IMETHODIMP_(nsrefcnt) Class::AddRef(void) \{ \ return Super::AddRef(); \} \#define NS_IMPL_RELEASE_INHERITED(Class, Super) \NS_IMETHODIMP_(nsrefcnt) Class::Release(void) \{ \ return Super::Release(); \} \#define NS_IMPL_QUERY_INTERFACE_INHERITED0(Class, Super) \ NS_IMPL_QUERY_HEAD(Class) \ NS_IMPL_QUERY_TAIL_INHERITING(Super) \#define NS_IMPL_QUERY_INTERFACE_INHERITED1(Class, Super, i1) \ NS_IMPL_QUERY_HEAD(Class) \ NS_IMPL_QUERY_BODY(i1) \ NS_IMPL_QUERY_TAIL_INHERITING(Super) \#define NS_IMPL_QUERY_INTERFACE_INHERITED2(Class, Super, i1, i2) \ NS_IMPL_QUERY_HEAD(Class) \ NS_IMPL_QUERY_BODY(i1) \ NS_IMPL_QUERY_BODY(i2) \ NS_IMPL_QUERY_TAIL_INHERITING(Super) \#define NS_IMPL_QUERY_INTERFACE_INHERITED3(Class, Super, 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_INHERITING(Super) \#define NS_IMPL_QUERY_INTERFACE_INHERITED4(Class, Super, 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_INHERITING(Super) \#define NS_IMPL_QUERY_INTERFACE_INHERITED5(Class,Super,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_INHERITING(Super) \#define NS_IMPL_QUERY_INTERFACE_INHERITED6(Class,Super,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_INHERITING(Super) \/** * Convenience macros for implementing all nsISupports methods for * a simple class. * @param _class The name of the class implementing the method * @param _classiiddef The name of the #define symbol that defines the IID * for the class (e.g. NS_ISUPPORTS_IID) */#define NS_IMPL_ISUPPORTS0(_class) \ NS_IMPL_ADDREF(_class) \ NS_IMPL_RELEASE(_class) \ NS_IMPL_QUERY_INTERFACE0(_class)#define NS_IMPL_ISUPPORTS1(_class, _interface) \ NS_IMPL_ADDREF(_class) \ NS_IMPL_RELEASE(_class) \ NS_IMPL_QUERY_INTERFACE1(_class, _interface)#define NS_IMPL_ISUPPORTS2(_class, _i1, _i2) \ NS_IMPL_ADDREF(_class) \ NS_IMPL_RELEASE(_class) \ NS_IMPL_QUERY_INTERFACE2(_class, _i1, _i2)#define NS_IMPL_ISUPPORTS3(_class, _i1, _i2, _i3) \ NS_IMPL_ADDREF(_class) \ NS_IMPL_RELEASE(_class) \ NS_IMPL_QUERY_INTERFACE3(_class, _i1, _i2, _i3)#define NS_IMPL_ISUPPORTS4(_class, _i1, _i2, _i3, _i4) \ NS_IMPL_ADDREF(_class) \ NS_IMPL_RELEASE(_class) \ NS_IMPL_QUERY_INTERFACE4(_class, _i1, _i2, _i3, _i4)#define NS_IMPL_ISUPPORTS5(_class, _i1, _i2, _i3, _i4, _i5) \ NS_IMPL_ADDREF(_class) \ NS_IMPL_RELEASE(_class) \ NS_IMPL_QUERY_INTERFACE5(_class, _i1, _i2, _i3, _i4, _i5)#define NS_IMPL_ISUPPORTS6(_class, _i1, _i2, _i3, _i4, _i5, _i6) \ NS_IMPL_ADDREF(_class) \ NS_IMPL_RELEASE(_class) \ NS_IMPL_QUERY_INTERFACE6(_class, _i1, _i2, _i3, _i4, _i5, _i6)#define NS_IMPL_ISUPPORTS7(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7) \ NS_IMPL_ADDREF(_class) \ NS_IMPL_RELEASE(_class) \ NS_IMPL_QUERY_INTERFACE7(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7)#define NS_IMPL_ISUPPORTS8(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, _i8) \ NS_IMPL_ADDREF(_class) \ NS_IMPL_RELEASE(_class) \ NS_IMPL_QUERY_INTERFACE8(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, _i8)#define NS_IMPL_ISUPPORTS9(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, _i8, \ _i9) \ NS_IMPL_ADDREF(_class) \ NS_IMPL_RELEASE(_class) \ NS_IMPL_QUERY_INTERFACE9(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, _i8, _i9)#define NS_IMPL_ISUPPORTS10(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, _i8, \ _i9, _i10) \ NS_IMPL_ADDREF(_class) \ NS_IMPL_RELEASE(_class) \ NS_IMPL_QUERY_INTERFACE10(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, _i8, \ _i9, _i10)#define NS_IMPL_ISUPPORTS11(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, _i8, \ _i9, _i10, _i11) \ NS_IMPL_ADDREF(_class) \ NS_IMPL_RELEASE(_class) \ NS_IMPL_QUERY_INTERFACE11(_class, _i1, _i2, _i3, _i4, _i5, _i6, _i7, _i8, \ _i9, _i10, _i11)#define NS_IMPL_ISUPPORTS_INHERITED0(Class, Super) \ NS_IMPL_QUERY_INTERFACE_INHERITED0(Class, Super) \ NS_IMPL_ADDREF_INHERITED(Class, Super) \ NS_IMPL_RELEASE_INHERITED(Class, Super) \#define NS_IMPL_ISUPPORTS_INHERITED1(Class, Super, i1) \ NS_IMPL_QUERY_INTERFACE_INHERITED1(Class, Super, i1) \ NS_IMPL_ADDREF_INHERITED(Class, Super) \ NS_IMPL_RELEASE_INHERITED(Class, Super) \#define NS_IMPL_ISUPPORTS_INHERITED2(Class, Super, i1, i2) \ NS_IMPL_QUERY_INTERFACE_INHERITED2(Class, Super, i1, i2) \ NS_IMPL_ADDREF_INHERITED(Class, Super) \ NS_IMPL_RELEASE_INHERITED(Class, Super) \#define NS_IMPL_ISUPPORTS_INHERITED3(Class, Super, i1, i2, i3) \ NS_IMPL_QUERY_INTERFACE_INHERITED3(Class, Super, i1, i2, i3) \ NS_IMPL_ADDREF_INHERITED(Class, Super) \ NS_IMPL_RELEASE_INHERITED(Class, Super) \#define NS_IMPL_ISUPPORTS_INHERITED4(Class, Super, i1, i2, i3, i4) \ NS_IMPL_QUERY_INTERFACE_INHERITED4(Class, Super, i1, i2, i3, i4) \ NS_IMPL_ADDREF_INHERITED(Class, Super) \ NS_IMPL_RELEASE_INHERITED(Class, Super) \#define NS_IMPL_ISUPPORTS_INHERITED5(Class, Super, i1, i2, i3, i4, i5) \ NS_IMPL_QUERY_INTERFACE_INHERITED5(Class, Super, i1, i2, i3, i4, i5) \ NS_IMPL_ADDREF_INHERITED(Class, Super) \ NS_IMPL_RELEASE_INHERITED(Class, Super) \#define NS_IMPL_ISUPPORTS_INHERITED6(Class, Super, i1, i2, i3, i4, i5, i6) \ NS_IMPL_QUERY_INTERFACE_INHERITED6(Class, Super, i1, i2, i3, i4, i5, i6) \ NS_IMPL_ADDREF_INHERITED(Class, Super) \ NS_IMPL_RELEASE_INHERITED(Class, Super) \///////////////////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -