X-Git-Url: http://git.sourceforge.jp/view?p=tortoisegit%2FTortoiseGitJp.git;a=blobdiff_plain;f=src%2FGit%2Fgittype.h;h=a66f4b66dfac5cb0d57e3c2f2069c9d29e9222cd;hp=5bd3f0fa263be10374a1e9433b1b8f394aa8245d;hb=15d631331de487109cb3b4221c81333d36c7cbb4;hpb=d39d6c9d0b7881dba6a54b620e73e272556d0feb diff --git a/src/Git/gittype.h b/src/Git/gittype.h index 5bd3f0f..a66f4b6 100644 --- a/src/Git/gittype.h +++ b/src/Git/gittype.h @@ -8,6 +8,8 @@ enum GIT_ERROR_GET_EXIT_CODE }; +extern BOOL g_IsWingitDllload; + class CGitByteArray:public std::vector { public: @@ -36,6 +38,38 @@ public: return pos; } + int findData(const BYTE* dataToFind, size_t dataSize, int start=0) + { + //Pre checks + if(empty()) + return -1; + if(dataSize==0) + return 0; + if(dataSize>size()-start) + return -1;//Data to find is greater then data to search in. No match + + //Initialize + const BYTE* pos=&*(begin()+start); + const BYTE* dataEnd=&*(begin()+(size()-dataSize) );++dataEnd;//Set end one step after last place to search + if(pos>=dataEnd) + return -1;//Started over end. Return not found + if(dataSize==0) + return start;//No search data. Return current position + BYTE firstByte=dataToFind[0]; + while(pos &v,int start=0,int end=-1) { if(end<0) @@ -44,7 +78,15 @@ public: this->push_back(v[i]); return 0; } + int append(const BYTE* data, size_t dataSize) + { + size_t oldsize=size(); + resize(oldsize+dataSize); + memcpy(&*(begin()+oldsize),data,dataSize); + return 0; + } }; typedef std::vector STRING_VECTOR; typedef std::map MAP_HASH_NAME; -typedef CGitByteArray BYTE_VECTOR; \ No newline at end of file +typedef CGitByteArray BYTE_VECTOR; +