52 lines
1.2 KiB
C++
52 lines
1.2 KiB
C++
#pragma once
|
|
|
|
struct AppSystemInfo_t {
|
|
const char* m_pModuleName;
|
|
const char* m_pInterfaceName;
|
|
};
|
|
|
|
enum InitReturnVal_t {
|
|
INIT_FAILED = 0,
|
|
INIT_OK,
|
|
|
|
INIT_LAST_VAL,
|
|
};
|
|
|
|
enum AppSystemTier_t {
|
|
APP_SYSTEM_TIER0 = 0,
|
|
APP_SYSTEM_TIER1,
|
|
APP_SYSTEM_TIER2,
|
|
APP_SYSTEM_TIER3,
|
|
|
|
APP_SYSTEM_TIER_OTHER,
|
|
};
|
|
|
|
class IAppSystem {
|
|
public:
|
|
// Here's where the app systems get to learn about each other
|
|
virtual bool Connect(CreateInterfaceFn factory) = 0;
|
|
|
|
virtual void Disconnect() = 0;
|
|
|
|
// Here's where systems can access other interfaces implemented by this
|
|
// object Returns NULL if it doesn't implement the requested interface
|
|
virtual void* QueryInterface(const char* pInterfaceName) = 0;
|
|
|
|
// Init, shutdown
|
|
virtual InitReturnVal_t Init() = 0;
|
|
|
|
virtual void Shutdown() = 0;
|
|
|
|
// Returns all dependent libraries
|
|
virtual const AppSystemInfo_t* GetDependencies() = 0;
|
|
|
|
// Returns the tier
|
|
virtual AppSystemTier_t GetTier() = 0;
|
|
|
|
// Reconnect to a particular interface
|
|
virtual void Reconnect(CreateInterfaceFn factory,
|
|
const char* pInterfaceName) = 0;
|
|
|
|
// Returns whether or not the app system is a singleton
|
|
virtual bool IsSingleton() = 0;
|
|
}; |