summaryrefslogtreecommitdiff
path: root/src/ToolBox/superpmi/superpmi-shared/tocfile.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/ToolBox/superpmi/superpmi-shared/tocfile.h')
-rw-r--r--src/ToolBox/superpmi/superpmi-shared/tocfile.h78
1 files changed, 78 insertions, 0 deletions
diff --git a/src/ToolBox/superpmi/superpmi-shared/tocfile.h b/src/ToolBox/superpmi/superpmi-shared/tocfile.h
new file mode 100644
index 0000000000..a0e7bde146
--- /dev/null
+++ b/src/ToolBox/superpmi/superpmi-shared/tocfile.h
@@ -0,0 +1,78 @@
+
+//
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+//
+
+//----------------------------------------------------------
+// TOCFile.h - Abstraction for reading a TOC file
+//----------------------------------------------------------
+#ifndef _TOCFile
+#define _TOCFile
+
+#include "methodcontext.h"
+
+class TOCElement
+{
+public:
+ __int64 Offset;
+ int Number;
+ char Hash[MD5_HASH_BUFFER_SIZE];
+
+ TOCElement()
+ {
+ }
+
+ TOCElement(int number, __int64 offset)
+ : Offset(offset)
+ , Number(number)
+ {
+ }
+};
+
+class TOCFile
+{
+private:
+
+ TOCElement* m_tocArray;
+ size_t m_tocCount;
+
+public:
+
+ TOCFile()
+ : m_tocArray(nullptr)
+ , m_tocCount(0)
+ {
+ }
+
+ ~TOCFile()
+ {
+ Clear();
+ }
+
+ void Clear()
+ {
+ delete[] m_tocArray;
+ m_tocArray = nullptr;
+ m_tocCount = 0;
+ }
+
+ void LoadToc(const char *inputFileName, bool validate = true);
+
+ size_t GetTocCount()
+ {
+ return m_tocCount;
+ }
+
+ const TOCElement* GetElementPtr(size_t i)
+ {
+ if (i >= m_tocCount)
+ {
+ // error!
+ return nullptr;
+ }
+ return &m_tocArray[i];
+ }
+};
+
+#endif