summaryrefslogtreecommitdiff
path: root/Runtime/Serialize/PathNamePersistentManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Runtime/Serialize/PathNamePersistentManager.cpp')
-rw-r--r--Runtime/Serialize/PathNamePersistentManager.cpp51
1 files changed, 51 insertions, 0 deletions
diff --git a/Runtime/Serialize/PathNamePersistentManager.cpp b/Runtime/Serialize/PathNamePersistentManager.cpp
new file mode 100644
index 0000000..81022e7
--- /dev/null
+++ b/Runtime/Serialize/PathNamePersistentManager.cpp
@@ -0,0 +1,51 @@
+#include "UnityPrefix.h"
+#include "PathNamePersistentManager.h"
+#include "Runtime/Utilities/Word.h"
+
+using namespace std;
+
+int PathNamePersistentManager::InsertPathNameInternal (const string& pathname, bool create)
+{
+ SET_ALLOC_OWNER(NULL);
+ AssertIf (!pathname.empty () && (pathname[0] == '/' || pathname[0] == '\\'));
+
+ string lowerCasePathName = ToLower (pathname);
+
+ PathToStreamID::iterator found = m_PathToStreamID.find (lowerCasePathName);
+ if (found != m_PathToStreamID.end())
+ return found->second;
+
+ if (create)
+ {
+ m_PathToStreamID.insert (make_pair (lowerCasePathName, m_PathNames.size ()));
+ m_PathNames.push_back (pathname);
+ AddStream ();
+ return m_PathNames.size () - 1;
+ }
+ else
+ return -1;
+}
+
+int PathNamePersistentManager::InsertFileIdentifierInternal (FileIdentifier file, bool create)
+{
+ return InsertPathNameInternal(file.pathName, create);
+}
+
+FileIdentifier PathNamePersistentManager::PathIDToFileIdentifierInternal (int pathID)
+{
+ AssertIf (pathID < 0 || pathID >= m_PathNames.size ());
+ FileIdentifier f;
+ f.pathName = m_PathNames[pathID];
+ return f;
+}
+
+string PathNamePersistentManager::PathIDToPathNameInternal (int pathID)
+{
+ AssertIf (pathID < 0 || pathID >= m_PathNames.size ());
+ return m_PathNames[pathID];
+}
+
+void InitPathNamePersistentManager()
+{
+ UNITY_NEW_AS_ROOT( PathNamePersistentManager(0), kMemManager, "PathNameManager", "");
+}