summaryrefslogtreecommitdiff
path: root/Runtime/Containers/ConstantStringManager.h
blob: 76354ed6906952809fbccf712cfafa97cca65417 (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
#pragma once

#include "Runtime/Utilities/dynamic_array.h"
#include "Runtime/Threads/Mutex.h"

class ConstantStringManager
{
	#define PROFILE_COMMON_STRINGS !UNITY_RELEASE
	
	#if PROFILE_COMMON_STRINGS
	typedef std::map<std::string, int> CommonStringCounter;
	CommonStringCounter m_CommonStringCounter;
	Mutex               m_CommonStringMutex;
	#endif
	
	dynamic_array<const char*> m_Strings;
	void ProfileCommonString (const char* str);
	
	public:

	ConstantStringManager ();
	~ConstantStringManager ();

	void AddConstantStrings (const char** strings, size_t size );
	void AddConstantString (const char* strings );

	const char* GetConstantString(const char* str);
	const char* GetEmptyString();
	
	// Init
	static void StaticInitialize ();
	static void StaticCleanup ();
	
	void DumpCommonStrings ();

};

ConstantStringManager& GetConstantStringManager ();