本文整理汇总了C++中CGitHash::ConvertFromStrA方法的典型用法代码示例。如果您正苦于以下问题:C++ CGitHash::ConvertFromStrA方法的具体用法?C++ CGitHash::ConvertFromStrA怎么用?C++ CGitHash::ConvertFromStrA使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CGitHash
的用法示例。
在下文中一共展示了CGitHash::ConvertFromStrA方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ParseBlameOutput
void CTortoiseGitBlameData::ParseBlameOutput(BYTE_VECTOR &data, CGitHashMap & HashToRev, DWORD dateFormat, bool bRelativeTimes)
{
std::map<CGitHash, CString> hashToFilename;
std::vector<CGitHash> hashes;
std::vector<int> originalLineNumbers;
std::vector<CString> filenames;
std::vector<BYTE_VECTOR> rawLines;
std::vector<CString> authors;
std::vector<CString> dates;
CGitHash hash;
int originalLineNumber = 0;
int finalLineNumber = 0;
int numberOfSubsequentLines = 0;
CString filename;
int pos = 0;
bool expectHash = true;
while (pos >= 0 && (size_t)pos < data.size())
{
if (data[pos] == 0)
{
++pos;
continue;
}
int lineBegin = pos;
int lineEnd = data.find('\n', lineBegin);
if (lineEnd < 0)
lineEnd = (int)data.size();
if (lineEnd > lineBegin)
{
if (data[lineBegin] != '\t')
{
if (expectHash)
{
expectHash = false;
if (lineEnd - lineBegin > 40)
{
hash.ConvertFromStrA((char*)&data[lineBegin]);
int hashEnd = lineBegin + 40;
int originalLineNumberBegin = hashEnd + 1;
int originalLineNumberEnd = data.find(' ', originalLineNumberBegin);
if (originalLineNumberEnd >= 0)
{
originalLineNumber = atoi(CStringA((LPCSTR)&data[originalLineNumberBegin], originalLineNumberEnd - originalLineNumberBegin));
int finalLineNumberBegin = originalLineNumberEnd + 1;
int finalLineNumberEnd = (numberOfSubsequentLines == 0) ? data.find(' ', finalLineNumberBegin) : lineEnd;
if (finalLineNumberEnd >= 0)
{
finalLineNumber = atoi(CStringA((LPCSTR)&data[finalLineNumberBegin], finalLineNumberEnd - finalLineNumberBegin));
if (numberOfSubsequentLines == 0)
{
int numberOfSubsequentLinesBegin = finalLineNumberEnd + 1;
int numberOfSubsequentLinesEnd = lineEnd;
numberOfSubsequentLines = atoi(CStringA((LPCSTR)&data[numberOfSubsequentLinesBegin], numberOfSubsequentLinesEnd - numberOfSubsequentLinesBegin));
}
}
else
{
// parse error
finalLineNumber = 0;
numberOfSubsequentLines = 0;
}
}
else
{
// parse error
finalLineNumber = 0;
numberOfSubsequentLines = 0;
}
auto it = hashToFilename.find(hash);
if (it != hashToFilename.end())
filename = it->second;
else
filename.Empty();
}
else
{
// parse error
finalLineNumber = 0;
numberOfSubsequentLines = 0;
}
}
else
{
int tokenBegin = lineBegin;
int tokenEnd = data.find(' ', tokenBegin);
if (tokenEnd >= 0)
{
if (!strncmp("filename", (const char*)&data[tokenBegin], tokenEnd - tokenBegin))
{
int filenameBegin = tokenEnd + 1;
int filenameEnd = lineEnd;
CStringA filenameA = CStringA((LPCSTR)&data[filenameBegin], filenameEnd - filenameBegin);
filename = UnquoteFilename(filenameA);
//.........这里部分代码省略.........