summaryrefslogtreecommitdiff
path: root/tf2/IAppSystem.h
blob: 84af8c25929d6ea49e1689395b05b346f1b6f69f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#pragma once

class AppSystemInfo_t;

enum InitReturnVal_t;

enum AppSystemTier_t {
	APP_SYSTEM_TIER0 = 0,
	APP_SYSTEM_TIER1,
	APP_SYSTEM_TIER2,
	APP_SYSTEM_TIER3,

	APP_SYSTEM_TIER_OTHER,
};

using CreateInterfaceFn = void*( *)( const char*, int* );

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;
};