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 & operator = (CString &str)
\r
25 CGitHash(CString &str)
\r
27 for(int i=0;i<GIT_HASH_SIZE;i++)
\r
31 for(int j=2*i;j<2*i+1;j++)
\r
34 if(ch >= _T('0') && ch <= _T('9'))
\r
35 a |= (ch - _T('0'))&0xF;
\r
36 else if(ch >=_T('A') && ch <= _T('F'))
\r
37 a |= (ch - _T('A'))&0xF;
\r
38 else if(ch >=_T('a') && ch <= _T('f'))
\r
39 a |= (ch - _T('a'))&0xF;
\r
48 memset(m_hash,0, GIT_HASH_SIZE);
\r
52 for(int i=0;i<GIT_HASH_SIZE;i++)
\r
64 for(int i=0;i<GIT_HASH_SIZE;i++)
\r
66 a.Format(_T("%02X"),m_hash[i]);
\r
76 bool operator == (const CGitHash &hash)
\r
78 return memcmp(m_hash,hash.m_hash,GIT_HASH_SIZE) == 0;
\r
82 friend bool operator<(const CGitHash& left, const CGitHash& right)
\r
84 return memcmp(left.m_hash,right.m_hash,GIT_HASH_SIZE) < 0;
\r
87 friend bool operator>(const CGitHash& left, const CGitHash& right)
\r
89 return memcmp(left.m_hash, right.m_hash, GIT_HASH_SIZE) > 0;
\r
92 #if defined(_MFC_VER)
\r
93 friend CArchive& AFXAPI operator<<(CArchive& ar, CGitHash& hash)
\r
95 for(int i=0;i<GIT_HASH_SIZE;i++)
\r
99 friend CArchive& AFXAPI operator>>(CArchive& ar, CGitHash& hash)
\r
101 for(int i=0;i<GIT_HASH_SIZE;i++)
\r
102 ar>>hash.m_hash[i];
\r