1*f6dc9357SAndroid Build Coastguard Worker // IDecl.h 2*f6dc9357SAndroid Build Coastguard Worker 3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_IDECL_H 4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_IDECL_H 5*f6dc9357SAndroid Build Coastguard Worker 6*f6dc9357SAndroid Build Coastguard Worker #include "../Common/Common0.h" 7*f6dc9357SAndroid Build Coastguard Worker #include "../Common/MyUnknown.h" 8*f6dc9357SAndroid Build Coastguard Worker 9*f6dc9357SAndroid Build Coastguard Worker #define k_7zip_GUID_Data1 0x23170F69 10*f6dc9357SAndroid Build Coastguard Worker #define k_7zip_GUID_Data2 0x40C1 11*f6dc9357SAndroid Build Coastguard Worker 12*f6dc9357SAndroid Build Coastguard Worker #define k_7zip_GUID_Data3_Common 0x278A 13*f6dc9357SAndroid Build Coastguard Worker 14*f6dc9357SAndroid Build Coastguard Worker #define k_7zip_GUID_Data3_Decoder 0x2790 15*f6dc9357SAndroid Build Coastguard Worker #define k_7zip_GUID_Data3_Encoder 0x2791 16*f6dc9357SAndroid Build Coastguard Worker #define k_7zip_GUID_Data3_Hasher 0x2792 17*f6dc9357SAndroid Build Coastguard Worker 18*f6dc9357SAndroid Build Coastguard Worker #define Z7_DECL_IFACE_7ZIP_SUB(i, _base, groupId, subId) \ 19*f6dc9357SAndroid Build Coastguard Worker Z7_DEFINE_GUID(IID_ ## i, \ 20*f6dc9357SAndroid Build Coastguard Worker k_7zip_GUID_Data1, \ 21*f6dc9357SAndroid Build Coastguard Worker k_7zip_GUID_Data2, \ 22*f6dc9357SAndroid Build Coastguard Worker k_7zip_GUID_Data3_Common, \ 23*f6dc9357SAndroid Build Coastguard Worker 0, 0, 0, (groupId), 0, (subId), 0, 0); \ 24*f6dc9357SAndroid Build Coastguard Worker struct Z7_DECLSPEC_NOVTABLE i: public _base 25*f6dc9357SAndroid Build Coastguard Worker 26*f6dc9357SAndroid Build Coastguard Worker #define Z7_DECL_IFACE_7ZIP(i, groupId, subId) \ 27*f6dc9357SAndroid Build Coastguard Worker Z7_DECL_IFACE_7ZIP_SUB(i, IUnknown, groupId, subId) 28*f6dc9357SAndroid Build Coastguard Worker 29*f6dc9357SAndroid Build Coastguard Worker 30*f6dc9357SAndroid Build Coastguard Worker #ifdef COM_DECLSPEC_NOTHROW 31*f6dc9357SAndroid Build Coastguard Worker #define Z7_COMWF_B COM_DECLSPEC_NOTHROW STDMETHODIMP 32*f6dc9357SAndroid Build Coastguard Worker #define Z7_COMWF_B_(t) COM_DECLSPEC_NOTHROW STDMETHODIMP_(t) 33*f6dc9357SAndroid Build Coastguard Worker #else 34*f6dc9357SAndroid Build Coastguard Worker #define Z7_COMWF_B STDMETHODIMP 35*f6dc9357SAndroid Build Coastguard Worker #define Z7_COMWF_B_(t) STDMETHODIMP_(t) 36*f6dc9357SAndroid Build Coastguard Worker #endif 37*f6dc9357SAndroid Build Coastguard Worker 38*f6dc9357SAndroid Build Coastguard Worker #if defined(_MSC_VER) && !defined(COM_DECLSPEC_NOTHROW) 39*f6dc9357SAndroid Build Coastguard Worker #define Z7_COM7F_B __declspec(nothrow) STDMETHODIMP 40*f6dc9357SAndroid Build Coastguard Worker #define Z7_COM7F_B_(t) __declspec(nothrow) STDMETHODIMP_(t) 41*f6dc9357SAndroid Build Coastguard Worker #else 42*f6dc9357SAndroid Build Coastguard Worker #define Z7_COM7F_B Z7_COMWF_B 43*f6dc9357SAndroid Build Coastguard Worker #define Z7_COM7F_B_(t) Z7_COMWF_B_(t) 44*f6dc9357SAndroid Build Coastguard Worker #endif 45*f6dc9357SAndroid Build Coastguard Worker 46*f6dc9357SAndroid Build Coastguard Worker // #define Z7_COM7F_E Z7_noexcept 47*f6dc9357SAndroid Build Coastguard Worker #define Z7_COM7F_E throw() 48*f6dc9357SAndroid Build Coastguard Worker #define Z7_COM7F_EO Z7_COM7F_E Z7_override 49*f6dc9357SAndroid Build Coastguard Worker #define Z7_COM7F_EOF Z7_COM7F_EO Z7_final 50*f6dc9357SAndroid Build Coastguard Worker #define Z7_COM7F_IMF(f) Z7_COM7F_B f Z7_COM7F_E 51*f6dc9357SAndroid Build Coastguard Worker #define Z7_COM7F_IMF2(t, f) Z7_COM7F_B_(t) f Z7_COM7F_E 52*f6dc9357SAndroid Build Coastguard Worker 53*f6dc9357SAndroid Build Coastguard Worker #define Z7_COM7F_PURE(f) virtual Z7_COM7F_IMF(f) =0; 54*f6dc9357SAndroid Build Coastguard Worker #define Z7_COM7F_PURE2(t, f) virtual Z7_COM7F_IMF2(t, f) =0; 55*f6dc9357SAndroid Build Coastguard Worker #define Z7_COM7F_IMP(f) Z7_COM7F_IMF(f) Z7_override Z7_final; 56*f6dc9357SAndroid Build Coastguard Worker #define Z7_COM7F_IMP2(t, f) Z7_COM7F_IMF2(t, f) Z7_override Z7_final; 57*f6dc9357SAndroid Build Coastguard Worker #define Z7_COM7F_IMP_NONFINAL(f) Z7_COM7F_IMF(f) Z7_override; 58*f6dc9357SAndroid Build Coastguard Worker #define Z7_COM7F_IMP_NONFINAL2(t, f) Z7_COM7F_IMF2(t, f) Z7_override; 59*f6dc9357SAndroid Build Coastguard Worker 60*f6dc9357SAndroid Build Coastguard Worker #define Z7_IFACE_PURE(name) Z7_IFACEN_ ## name(=0;) 61*f6dc9357SAndroid Build Coastguard Worker #define Z7_IFACE_IMP(name) Z7_IFACEN_ ## name(Z7_override Z7_final;) 62*f6dc9357SAndroid Build Coastguard Worker 63*f6dc9357SAndroid Build Coastguard Worker #define Z7_IFACE_COM7_PURE(name) Z7_IFACEM_ ## name(Z7_COM7F_PURE) 64*f6dc9357SAndroid Build Coastguard Worker #define Z7_IFACE_COM7_IMP(name) Z7_IFACEM_ ## name(Z7_COM7F_IMP) 65*f6dc9357SAndroid Build Coastguard Worker #define Z7_IFACE_COM7_IMP_NONFINAL(name) Z7_IFACEM_ ## name(Z7_COM7F_IMP_NONFINAL) 66*f6dc9357SAndroid Build Coastguard Worker 67*f6dc9357SAndroid Build Coastguard Worker 68*f6dc9357SAndroid Build Coastguard Worker #define Z7_IFACE_DECL_PURE(name) \ 69*f6dc9357SAndroid Build Coastguard Worker DECLARE_INTERFACE(name) \ 70*f6dc9357SAndroid Build Coastguard Worker { Z7_IFACE_PURE(name) }; 71*f6dc9357SAndroid Build Coastguard Worker 72*f6dc9357SAndroid Build Coastguard Worker #define Z7_IFACE_DECL_PURE_(name, baseiface) \ 73*f6dc9357SAndroid Build Coastguard Worker DECLARE_INTERFACE_(name, baseiface) \ 74*f6dc9357SAndroid Build Coastguard Worker { Z7_IFACE_PURE(name) }; 75*f6dc9357SAndroid Build Coastguard Worker 76*f6dc9357SAndroid Build Coastguard Worker #endif 77