diff options
Diffstat (limited to 'Runtime/Containers/ConstantStringManager.h')
-rw-r--r-- | Runtime/Containers/ConstantStringManager.h | 38 |
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 (); |