aboutsummaryrefslogtreecommitdiff
path: root/primedev/core/tier0.h
blob: cc9af39e5e4fe54182abbb14082b00b7fd2e7a54 (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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#pragma once

class IMemAlloc
{
public:
	struct VTable
	{
		void* unknown[1]; // alloc debug
		void* (*Alloc)(IMemAlloc* memAlloc, size_t nSize);
		void* unknown2[1]; // realloc debug
		void* (*Realloc)(IMemAlloc* memAlloc, void* pMem, size_t nSize);
		void* unknown3[1]; // free #1
		void (*Free)(IMemAlloc* memAlloc, void* pMem);
		void* unknown4[2]; // nullsubs, maybe CrtSetDbgFlag
		size_t (*GetSize)(IMemAlloc* memAlloc, void* pMem);
		void* unknown5[9]; // they all do literally nothing
		void (*DumpStats)(IMemAlloc* memAlloc);
		void (*DumpStatsFileBase)(IMemAlloc* memAlloc, const char* pchFileBase);
		void* unknown6[4];
		int (*heapchk)(IMemAlloc* memAlloc);
	};

	VTable* m_vtable;
};

class CCommandLine
{
public:
	// based on the defs in the 2013 source sdk, but for some reason has an extra function (may be another CreateCmdLine overload?)
	// these seem to line up with what they should be though
	virtual void CreateCmdLine(const char* commandline) = 0;
	virtual void CreateCmdLine(int argc, char** argv) = 0;
	virtual void unknown() = 0;
	virtual const char* GetCmdLine(void) const = 0;

	virtual const char* CheckParm(const char* psz, const char** ppszValue = 0) const = 0;
	virtual void RemoveParm() const = 0;
	virtual void AppendParm(const char* pszParm, const char* pszValues) = 0;

	virtual const char* ParmValue(const char* psz, const char* pDefaultVal = 0) const = 0;
	virtual int ParmValue(const char* psz, int nDefaultVal) const = 0;
	virtual float ParmValue(const char* psz, float flDefaultVal) const = 0;

	virtual int ParmCount() const = 0;
	virtual int FindParm(const char* psz) const = 0;
	virtual const char* GetParm(int nIndex) const = 0;
	virtual void SetParm(int nIndex, char const* pParm) = 0;

	// virtual const char** GetParms() const {}
};

extern IMemAlloc* g_pMemAllocSingleton;

typedef CCommandLine* (*CommandLineType)();
extern CommandLineType CommandLine;

typedef double (*Plat_FloatTimeType)();
extern Plat_FloatTimeType Plat_FloatTime;

typedef bool (*ThreadInServerFrameThreadType)();
extern ThreadInServerFrameThreadType ThreadInServerFrameThread;

void TryCreateGlobalMemAlloc();