//===========================================================================// // // Purpose: A higher level link library for general use in the game and SDK. // //===========================================================================// #include "core/stdafx.h" #include "vpc/interfaces.h" #include "tier1/interface.h" //--------------------------------------------------------------------------------- // Purpose: register a new factory // Input : createFn - // *pName - //--------------------------------------------------------------------------------- void CFactorySystem::AddFactory(InstantiateInterfaceFn createFn, const char* pName) const { InterfaceReg(createFn, pName); } //--------------------------------------------------------------------------------- // Purpose: get a factory by name // Input : *pName - //--------------------------------------------------------------------------------- void* CFactorySystem::GetFactory(const char* pName) const { for (InterfaceReg* it = *s_ppInterfaceRegs; it; it = it->m_pNext) // Loop till we go out of scope. { if (V_strcmp(it->m_pName, pName) == NULL) return it->m_CreateFn(); } // No dice. return nullptr; } //--------------------------------------------------------------------------------- // Purpose: get the factory system's interface version // Input : *pName - //--------------------------------------------------------------------------------- const char* CFactorySystem::GetVersion(void) const { return FACTORY_INTERFACE_VERSION; } //--------------------------------------------------------------------------------- // Purpose: //--------------------------------------------------------------------------------- void* CreateInterface(const char* pName, int* pReturnCode) { return v_CreateInterfaceInternal(pName, pReturnCode); } //--------------------------------------------------------------------------------- // Purpose: //--------------------------------------------------------------------------------- IFactorySystem* GetFactorySystem() { return &g_FactorySystem; } CFactorySystem g_FactorySystem;