2 #if defined(_MFC_VER)
\r
5 #define GIT_HASH_SIZE 20
\r
9 unsigned char m_hash[GIT_HASH_SIZE];
\r
13 memset(m_hash,0, GIT_HASH_SIZE);
\r
17 memcpy(m_hash,p,GIT_HASH_SIZE);
\r
19 CGitHash(CString &str)
\r
21 for(int i=0;i<GIT_HASH_SIZE;i++)
\r
25 for(int j=2*i;j<2*i+1;j++)
\r
28 if(ch >= _T('0') && ch <= _T('9'))
\r
29 a |= (ch - _T('0'))&0xF;
\r
30 else if(ch >=_T('A') && ch <= _T('F'))
\r
31 a |= (ch - _T('A'))&0xF;
\r
32 else if(ch >=_T('a') && ch <= _T('f'))
\r
33 a |= (ch - _T('a'))&0xF;
\r
42 memset(m_hash,0, GIT_HASH_SIZE);
\r
46 for(int i=0;i<GIT_HASH_SIZE;i++)
\r
58 for(int i=0;i<GIT_HASH_SIZE;i++)
\r
60 a.Format(_T("%02X"),m_hash[i]);
\r
70 bool operator == (CGitHash &hash)
\r
72 return memcmp(m_hash,hash.m_hash,GIT_HASH_SIZE) == 0;
\r
76 friend bool operator<(const CGitHash& left, const CGitHash& right)
\r
78 return memcmp(left.m_hash,right.m_hash,GIT_HASH_SIZE) < 0;
\r
81 friend bool operator>(const CGitHash& left, const CGitHash& right)
\r
83 return memcmp(left.m_hash, right.m_hash, GIT_HASH_SIZE) > 0;
\r
86 #if defined(_MFC_VER)
\r
87 friend CArchive& AFXAPI operator<<(CArchive& ar, CGitHash& hash)
\r
89 for(int i=0;i<GIT_HASH_SIZE;i++)
\r
93 friend CArchive& AFXAPI operator>>(CArchive& ar, CGitHash& hash)
\r
95 for(int i=0;i<GIT_HASH_SIZE;i++)
\r