OSDN Git Service

merge original branch.
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / gitlogcache.h
index 84f055c..a32fb84 100644 (file)
@@ -3,12 +3,13 @@
 #include "Git.h"\r
 #include "TGitPath.h"\r
 #include "GitRev.h"\r
+#include "GitHash.h"\r
 \r
 #define LOG_INDEX_MAGIC                0x88445566\r
 #define LOG_DATA_MAGIC         0x99aa00FF\r
 #define LOG_DATA_ITEM_MAGIC 0x0F8899CC\r
 #define LOG_DATA_FILE_MAGIC 0x19999FFF\r
-#define LOG_INDEX_VERSION   0x\r
+#define LOG_INDEX_VERSION   0x7\r
 \r
 struct SLogCacheIndexHeader \r
 {\r
@@ -19,7 +20,7 @@ struct SLogCacheIndexHeader
 \r
 struct SLogCacheItem\r
 {\r
-       BYTE  m_Hash[40];\r
+       CGitHash  m_Hash;\r
        ULONGLONG m_Offset;\r
 };\r
 \r
@@ -36,6 +37,15 @@ struct SLogCacheRevItemHeader
        DWORD m_FileCount;\r
 };\r
 \r
+class CGitHashMap:public std::map<CGitHash,GitRev>\r
+{\r
+public:\r
+       bool IsExist(CGitHash &hash)\r
+       {\r
+               return find(hash) != end();\r
+       }\r
+};\r
+\r
 #define INDEX_FILE_NAME _T("tortoisegit.index")\r
 #define DATA_FILE_NAME _T("tortoisegit.data")\r
 #define LOCK_FILE_NAME _T("tortoisegit.lock")\r
@@ -89,11 +99,14 @@ public:
        CLogCache();\r
        ~CLogCache();\r
        int FetchCacheIndex(CString GitDir);\r
-       std::vector<GitRev> m_NewCacheEntry;\r
-       std::map<CString, ULONGLONG> m_HashMapIndex;\r
-       int GetCacheData(GitRev &Rev);\r
+\r
+       CGitHashMap m_HashMap;\r
+       std::map<CGitHash, ULONGLONG> m_HashMapIndex;\r
+\r
+       GitRev * GetCacheData(CGitHash &Rev);\r
        int AddCacheEntry(GitRev &Rev);\r
        int SaveCache();\r
 \r
+       int ClearAllParent();\r
 \r
 };
\ No newline at end of file