Go to the documentation of this file.
47 template <
class BaseInterface>
53 m_FactoryIID {FactoryIID},
54 m_RefCounters {*
this }
61 if (ppInterface ==
nullptr)
64 *ppInterface =
nullptr;
65 if (IID == IID_Unknown || IID == m_FactoryIID || IID == IID_EngineFactory)
68 (*ppInterface)->AddRef();
74 return m_RefCounters.AddStrongRef();
79 return m_RefCounters.ReleaseStrongRef();
105 m_lNumStrongReferences = 0;
106 m_lNumWeakReferences = 0;
129 virtual void GetObject(IObject** ppObject)
override final
131 if (ppObject !=
nullptr)
132 m_Factory.QueryInterface(IID_Unknown, ppObject);
137 return m_lNumStrongReferences;
142 return m_lNumWeakReferences;
152 DummyReferenceCounters m_RefCounters;
Base interface for a reference counter object that stores the number of strong and weak references an...
Definition: ReferenceCounters.h:44
struct INTERFACE_ID INTERFACE_ID
Definition: InterfaceID.h:54
char Char
Definition: BasicTypes.h:64
struct APIInfo APIInfo
Definition: APIInfo.h:104
virtual IReferenceCounters * GetReferenceCounters() const override final
Definition: EngineFactoryBase.hpp:82
Base interface for all dynamic objects in the engine.
Definition: Object.h:41
virtual void CreateDefaultShaderSourceStreamFactory(const Char *SearchDirectories, IShaderSourceInputStreamFactory **ppShaderSourceFactory) const override final
Definition: EngineFactoryBase.hpp:92
const APIInfo & GetAPIInfo()
Definition: APIInfo.cpp:118
virtual ReferenceCounterValueType AddRef() override final
Definition: EngineFactoryBase.hpp:72
static Type AtomicIncrement(std::atomic< Type > &Val)
Definition: BasicAtomics.hpp:41
Unique interface identifier.
Definition: InterfaceID.h:37
virtual void QueryInterface(const INTERFACE_ID &IID, IObject **ppInterface) override final
Definition: EngineFactoryBase.hpp:59
void CreateDefaultShaderSourceStreamFactory(const Char *SearchDirectories, IShaderSourceInputStreamFactory **ppShaderSourceStreamFactory)
Creates a default shader source stream factory.
Definition: DefaultShaderSourceStreamFactory.cpp:125
#define DILIGENT_CALL_TYPE
Definition: CommonDefinitions.h:45
std::atomic< Long > AtomicLong
Definition: BasicAtomics.hpp:35
static Type AtomicDecrement(std::atomic< Type > &Val)
Definition: BasicAtomics.hpp:48
EngineFactoryBase(const INTERFACE_ID &FactoryIID) noexcept
Definition: EngineFactoryBase.hpp:51
virtual const APIInfo & GetAPIInfo() const override final
Definition: EngineFactoryBase.hpp:87
Diligent API Info. This tructure can be used to verify API compatibility.
Definition: APIInfo.h:40
long ReferenceCounterValueType
Definition: ReferenceCounters.h:37
virtual ReferenceCounterValueType Release() override final
Definition: EngineFactoryBase.hpp:77
The library uses Direct3D-style math:
Definition: AdvancedMath.hpp:37
Template class implementing base functionality of the engine factory.
Definition: EngineFactoryBase.hpp:48