This commit is contained in:
Igor Pavlov
2023-12-22 17:17:05 +00:00
committed by Kornel
parent ec44a8a070
commit a36c48cece
954 changed files with 42199 additions and 25482 deletions

View File

@@ -1,47 +1,55 @@
// MyCom2.h
#ifndef __MYCOM2_H
#define __MYCOM2_H
#ifndef ZIP7_INC_MYCOM2_H
#define ZIP7_INC_MYCOM2_H
#include "../../../Common/MyCom.h"
#define MY_ADDREF_RELEASE_MT \
STDMETHOD_(ULONG, AddRef)() { InterlockedIncrement((LONG *)&__m_RefCount); return __m_RefCount; } \
STDMETHOD_(ULONG, Release)() { InterlockedDecrement((LONG *)&__m_RefCount); if (__m_RefCount != 0) \
return __m_RefCount; delete this; return 0; }
#define Z7_COM_ADDREF_RELEASE_MT \
private: \
STDMETHOD_(ULONG, AddRef)() Z7_override Z7_final \
{ return (ULONG)InterlockedIncrement((LONG *)&_m_RefCount); } \
STDMETHOD_(ULONG, Release)() Z7_override Z7_final \
{ const LONG v = InterlockedDecrement((LONG *)&_m_RefCount); \
if (v != 0) return (ULONG)v; \
delete this; return 0; }
#define MY_UNKNOWN_IMP_SPEC_MT2(i1, i) \
MY_QUERYINTERFACE_BEGIN \
MY_QUERYINTERFACE_ENTRY_UNKNOWN(i1) \
#define Z7_COM_UNKNOWN_IMP_SPEC_MT2(i1, i) \
Z7_COM_QI_BEGIN \
Z7_COM_QI_ENTRY_UNKNOWN(i1) \
i \
MY_QUERYINTERFACE_END \
MY_ADDREF_RELEASE_MT
Z7_COM_QI_END \
Z7_COM_ADDREF_RELEASE_MT
#define MY_UNKNOWN_IMP1_MT(i) MY_UNKNOWN_IMP_SPEC_MT2( \
#define Z7_COM_UNKNOWN_IMP_1_MT(i) \
Z7_COM_UNKNOWN_IMP_SPEC_MT2( \
i, \
MY_QUERYINTERFACE_ENTRY(i) \
Z7_COM_QI_ENTRY(i) \
)
#define MY_UNKNOWN_IMP2_MT(i1, i2) MY_UNKNOWN_IMP_SPEC_MT2( \
#define Z7_COM_UNKNOWN_IMP_2_MT(i1, i2) \
Z7_COM_UNKNOWN_IMP_SPEC_MT2( \
i1, \
MY_QUERYINTERFACE_ENTRY(i1) \
MY_QUERYINTERFACE_ENTRY(i2) \
Z7_COM_QI_ENTRY(i1) \
Z7_COM_QI_ENTRY(i2) \
)
#define MY_UNKNOWN_IMP3_MT(i1, i2, i3) MY_UNKNOWN_IMP_SPEC_MT2( \
#define Z7_COM_UNKNOWN_IMP_3_MT(i1, i2, i3) \
Z7_COM_UNKNOWN_IMP_SPEC_MT2( \
i1, \
MY_QUERYINTERFACE_ENTRY(i1) \
MY_QUERYINTERFACE_ENTRY(i2) \
MY_QUERYINTERFACE_ENTRY(i3) \
Z7_COM_QI_ENTRY(i1) \
Z7_COM_QI_ENTRY(i2) \
Z7_COM_QI_ENTRY(i3) \
)
#define MY_UNKNOWN_IMP4_MT(i1, i2, i3, i4) MY_UNKNOWN_IMP_SPEC_MT2( \
#define Z7_COM_UNKNOWN_IMP_4_MT(i1, i2, i3, i4) \
Z7_COM_UNKNOWN_IMP_SPEC_MT2( \
i1, \
MY_QUERYINTERFACE_ENTRY(i1) \
MY_QUERYINTERFACE_ENTRY(i2) \
MY_QUERYINTERFACE_ENTRY(i3) \
MY_QUERYINTERFACE_ENTRY(i4) \
Z7_COM_QI_ENTRY(i1) \
Z7_COM_QI_ENTRY(i2) \
Z7_COM_QI_ENTRY(i3) \
Z7_COM_QI_ENTRY(i4) \
)
#endif