2 #if defined(_MFC_VER)
\r
5 #define GIT_HASH_SIZE 20
\r
10 unsigned char m_hash[GIT_HASH_SIZE];
\r
14 memset(m_hash,0, GIT_HASH_SIZE);
\r
18 memcpy(m_hash,p,GIT_HASH_SIZE);
\r
20 CGitHash & operator = (CString &str)
\r
26 CGitHash(CString &str)
\r
28 for(int i=0;i<GIT_HASH_SIZE;i++)
\r
32 for(int j=2*i;j<2*i+1;j++)
\r
35 if(ch >= _T('0') && ch <= _T('9'))
\r
36 a |= (ch - _T('0'))&0xF;
\r
37 else if(ch >=_T('A') && ch <= _T('F'))
\r
38 a |= (ch - _T('A'))&0xF;
\r
39 else if(ch >=_T('a') && ch <= _T('f'))
\r
40 a |= (ch - _T('a'))&0xF;
\r
49 memset(m_hash,0, GIT_HASH_SIZE);
\r
53 for(int i=0;i<GIT_HASH_SIZE;i++)
\r
65 for(int i=0;i<GIT_HASH_SIZE;i++)
\r
67 a.Format(_T("%02X"),m_hash[i]);
\r
77 bool operator == (const CGitHash &hash)
\r
79 return memcmp(m_hash,hash.m_hash,GIT_HASH_SIZE) == 0;
\r
83 friend bool operator<(const CGitHash& left, const CGitHash& right)
\r
85 return memcmp(left.m_hash,right.m_hash,GIT_HASH_SIZE) < 0;
\r
88 friend bool operator>(const CGitHash& left, const CGitHash& right)
\r
90 return memcmp(left.m_hash, right.m_hash, GIT_HASH_SIZE) > 0;
\r
93 #if defined(_MFC_VER)
\r
94 friend CArchive& AFXAPI operator<<(CArchive& ar, CGitHash& hash)
\r
96 for(int i=0;i<GIT_HASH_SIZE;i++)
\r
100 friend CArchive& AFXAPI operator>>(CArchive& ar, CGitHash& hash)
\r
102 for(int i=0;i<GIT_HASH_SIZE;i++)
\r
103 ar>>hash.m_hash[i];
\r