Complete disaster-recovery snapshot: engine/game source, game data assets, VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive. Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false, no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
188 lines
4.5 KiB
C++
188 lines
4.5 KiB
C++
[!if=(FreeThreadedMarshaler, "TRUE")]
|
|
[!set(NeedsGetControllingUnknown, "TRUE")]
|
|
[!endif]
|
|
// [!HeaderName] : Declaration of the [!ClassName]
|
|
[!crlf]
|
|
|
|
[!if=(FileExists, "FALSE")]
|
|
#ifndef __[!UpperShortName]_H_
|
|
#define __[!UpperShortName]_H_
|
|
[!crlf]
|
|
#include "resource.h" // main symbols
|
|
[!else]
|
|
[!AddIncludeFile(TargetFile, "resource.h")]
|
|
[!endif]
|
|
|
|
[!crlf]
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// [!ClassName]
|
|
|
|
class ATL_NO_VTABLE [!ClassName] :
|
|
[!if=(ThreadingModel, "Single")]
|
|
public CComObjectRootEx<CComSingleThreadModel>,
|
|
[!endif]
|
|
[!if=(ThreadingModel, "Apartment")]
|
|
public CComObjectRootEx<CComSingleThreadModel>,
|
|
[!endif]
|
|
[!if=(ThreadingModel, "Both")]
|
|
public CComObjectRootEx<CComMultiThreadModel>,
|
|
[!endif]
|
|
[!if=(ThreadingModel, "Free")]
|
|
public CComObjectRootEx<CComMultiThreadModel>,
|
|
[!endif]
|
|
public CComCoClass<[!ClassName], &CLSID_[!CoClassName]>,
|
|
[!if=(IOBJECTWITHSITE, "TRUE")]
|
|
public IObjectWithSiteImpl<[!ClassName]>,
|
|
[!endif]
|
|
[!if=(ISERVICEPROVIDER, "TRUE")]
|
|
public IServiceProviderImpl<[!ClassName]>,
|
|
[!endif]
|
|
|
|
[!if=(ErrorInfoEnabled, "TRUE")]
|
|
public ISupportErrorInfo,
|
|
[!endif]
|
|
[!if=(ConnectionPointsEnabled, "TRUE")]
|
|
public IConnectionPointContainerImpl<[!ClassName]>,
|
|
[!endif]
|
|
|
|
[!if=(IPERSISTSTORAGE, "TRUE")]
|
|
public IPersistStorageImpl<[!ClassName]>,
|
|
[!endif]
|
|
[!if=(ISPECIFYPROPERTYPAGES, "TRUE")]
|
|
public ISpecifyPropertyPagesImpl<[!ClassName]>,
|
|
[!endif]
|
|
[!if=(IDATAOBJECT, "TRUE")]
|
|
public IDataObjectImpl<[!ClassName]>,
|
|
[!endif]
|
|
[!if=(ConnectionPointsEnabled, "TRUE")]
|
|
[!if=(IPROVIDECLASSINFO2, "TRUE")]
|
|
public IProvideClassInfo2Impl<&CLSID_[!CoClassName], &DIID__[!InterfaceName]Events, &LIBID_[!LibName]>,
|
|
[!endif]
|
|
[!if=(IPROPERTYNOTIFYSINK, "TRUE")]
|
|
public IPropertyNotifySinkCP<[!ClassName]>,
|
|
[!endif]
|
|
[!else]
|
|
[!if=(IPROVIDECLASSINFO2, "TRUE")]
|
|
public IProvideClassInfo2Impl<&CLSID_[!CoClassName], [!ConnectionPointInterface], &LIBID_[!LibName]>,
|
|
[!endif]
|
|
[!endif]
|
|
[!if=(Dual, "TRUE")]
|
|
public IDispatchImpl<[!InterfaceName], &IID_[!InterfaceName], &LIBID_[!LibName]>
|
|
[!else]
|
|
public [!InterfaceName]
|
|
[!endif]
|
|
{
|
|
public:
|
|
[!ClassName]()
|
|
{
|
|
[!if=(FreeThreadedMarshaler, "TRUE")]
|
|
m_pUnkMarshaler = NULL;
|
|
[!endif]
|
|
}
|
|
|
|
[!crlf]
|
|
DECLARE_REGISTRY_RESOURCEID([!IDR_REGISTRYID])
|
|
|
|
[!if=(Aggregatable, "NO")]
|
|
DECLARE_NOT_AGGREGATABLE([!ClassName])
|
|
[!endif]
|
|
[!if=(Aggregatable, "ONLY")]
|
|
DECLARE_ONLY_AGGREGATABLE([!ClassName])
|
|
[!endif]
|
|
|
|
[!if=(NeedsGetControllingUnknown, "TRUE")]
|
|
DECLARE_GET_CONTROLLING_UNKNOWN()
|
|
[!endif]
|
|
[!crlf]
|
|
DECLARE_PROTECT_FINAL_CONSTRUCT()
|
|
|
|
[!crlf]
|
|
BEGIN_COM_MAP([!ClassName])
|
|
COM_INTERFACE_ENTRY([!InterfaceName])
|
|
[!if=(Dual, "TRUE")]
|
|
COM_INTERFACE_ENTRY(IDispatch)
|
|
[!endif]
|
|
[!if=(ErrorInfoEnabled, "TRUE")]
|
|
COM_INTERFACE_ENTRY(ISupportErrorInfo)
|
|
[!endif]
|
|
[!if=(ConnectionPointsEnabled, "TRUE")]
|
|
COM_INTERFACE_ENTRY(IConnectionPointContainer)
|
|
[!endif]
|
|
[!if=(FreeThreadedMarshaler, "TRUE")]
|
|
COM_INTERFACE_ENTRY_AGGREGATE(IID_IMarshal, m_pUnkMarshaler.p)
|
|
[!endif]
|
|
[!if=(ISPECIFYPROPERTYPAGES, "TRUE")]
|
|
COM_INTERFACE_ENTRY_IMPL(ISpecifyPropertyPages)
|
|
[!endif]
|
|
[!if=(IPERSISTSTORAGE, "TRUE")]
|
|
COM_INTERFACE_ENTRY_IMPL(IPersistStorage)
|
|
[!endif]
|
|
[!if=(IDATAOBJECT, "TRUE")]
|
|
COM_INTERFACE_ENTRY_IMPL(IDataObject)
|
|
[!endif]
|
|
[!if=(IPROVIDECLASSINFO2, "TRUE")]
|
|
COM_INTERFACE_ENTRY(IProvideClassInfo)
|
|
COM_INTERFACE_ENTRY(IProvideClassInfo2)
|
|
[!endif]
|
|
|
|
[!if=(IOBJECTWITHSITE, "TRUE")]
|
|
COM_INTERFACE_ENTRY(IObjectWithSite)
|
|
[!endif]
|
|
[!if=(ISERVICEPROVIDER, "TRUE")]
|
|
COM_INTERFACE_ENTRY(IServiceProvider)
|
|
[!endif]
|
|
|
|
END_COM_MAP()
|
|
|
|
[!if=(ConnectionPointsEnabled, "TRUE")]
|
|
BEGIN_CONNECTION_POINT_MAP([!ClassName])
|
|
[!if=(IPROPERTYNOTIFYSINK, "TRUE")]
|
|
CONNECTION_POINT_ENTRY(IID_IPropertyNotifySink)
|
|
[!endif]
|
|
END_CONNECTION_POINT_MAP()
|
|
[!crlf]
|
|
[!endif]
|
|
|
|
[!if=(FreeThreadedMarshaler, "TRUE")]
|
|
[!crlf]
|
|
HRESULT FinalConstruct()
|
|
{
|
|
return CoCreateFreeThreadedMarshaler(
|
|
GetControllingUnknown(), &m_pUnkMarshaler.p);
|
|
}
|
|
|
|
[!crlf]
|
|
void FinalRelease()
|
|
{
|
|
m_pUnkMarshaler.Release();
|
|
}
|
|
|
|
[!crlf]
|
|
CComPtr<IUnknown> m_pUnkMarshaler;
|
|
[!endif]
|
|
|
|
[!if=(ErrorInfoEnabled, "TRUE")]
|
|
[!crlf]
|
|
// ISupportsErrorInfo
|
|
STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
|
|
[!endif]
|
|
|
|
[!crlf]
|
|
[!if=(ISERVICEPROVIDER, "TRUE")]
|
|
STDMETHOD(_InternalQueryService)(REFGUID guidService, REFIID riid, void** ppvObject)
|
|
{
|
|
return E_NOTIMPL;
|
|
}
|
|
[!crlf]
|
|
[!endif]
|
|
|
|
// [!InterfaceName]
|
|
public:
|
|
|
|
};
|
|
|
|
[!crlf]
|
|
[!if=(FileExists, "FALSE")]
|
|
#endif //__[!UpperShortName]_H_
|
|
[!endif]
|