Files
easy7zip/CPP/7zip/UI/FileManager/MyCom2.h
Igor Pavlov a36c48cece 23.01
2023-12-22 17:17:05 +00:00

56 lines
1.2 KiB
C
Executable File

// MyCom2.h
#ifndef ZIP7_INC_MYCOM2_H
#define ZIP7_INC_MYCOM2_H
#include "../../../Common/MyCom.h"
#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 Z7_COM_UNKNOWN_IMP_SPEC_MT2(i1, i) \
Z7_COM_QI_BEGIN \
Z7_COM_QI_ENTRY_UNKNOWN(i1) \
i \
Z7_COM_QI_END \
Z7_COM_ADDREF_RELEASE_MT
#define Z7_COM_UNKNOWN_IMP_1_MT(i) \
Z7_COM_UNKNOWN_IMP_SPEC_MT2( \
i, \
Z7_COM_QI_ENTRY(i) \
)
#define Z7_COM_UNKNOWN_IMP_2_MT(i1, i2) \
Z7_COM_UNKNOWN_IMP_SPEC_MT2( \
i1, \
Z7_COM_QI_ENTRY(i1) \
Z7_COM_QI_ENTRY(i2) \
)
#define Z7_COM_UNKNOWN_IMP_3_MT(i1, i2, i3) \
Z7_COM_UNKNOWN_IMP_SPEC_MT2( \
i1, \
Z7_COM_QI_ENTRY(i1) \
Z7_COM_QI_ENTRY(i2) \
Z7_COM_QI_ENTRY(i3) \
)
#define Z7_COM_UNKNOWN_IMP_4_MT(i1, i2, i3, i4) \
Z7_COM_UNKNOWN_IMP_SPEC_MT2( \
i1, \
Z7_COM_QI_ENTRY(i1) \
Z7_COM_QI_ENTRY(i2) \
Z7_COM_QI_ENTRY(i3) \
Z7_COM_QI_ENTRY(i4) \
)
#endif