summaryrefslogtreecommitdiff
path: root/Runtime/Containers/ConstantStringManager.h
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2019-08-14 22:50:43 +0800
committerchai <chaifix@163.com>2019-08-14 22:50:43 +0800
commit15740faf9fe9fe4be08965098bbf2947e096aeeb (patch)
treea730ec236656cc8cab5b13f088adfaed6bb218fb /Runtime/Containers/ConstantStringManager.h
+Unity Runtime codeHEADmaster
Diffstat (limited to 'Runtime/Containers/ConstantStringManager.h')
-rw-r--r--Runtime/Containers/ConstantStringManager.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/Runtime/Containers/ConstantStringManager.h b/Runtime/Containers/ConstantStringManager.h
new file mode 100644
index 0000000..76354ed
--- /dev/null
+++ b/Runtime/Containers/ConstantStringManager.h
@@ -0,0 +1,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 ();