OSDN Git Service

Update Gitignore file
[tortoisegit/TortoiseGitJp.git] / src / Utils / SpeedPostEmail.h
1 #pragma once\r
2 \r
3 #ifndef GET_SAFE_STRING\r
4 #define GET_SAFE_STRING(str) ( (str)?(str):_T("") )\r
5 #endif\r
6 // _vsnprintf º¯Êý\r
7 #ifndef _vsnprintf_hw\r
8 #ifdef UNICODE\r
9 #define _vsnprintf_hw _vsnwprintf\r
10 #else\r
11 #define _vsnprintf_hw _vsnprintf\r
12 #endif\r
13 #endif\r
14 #define HANDLE_IS_VALID(h) ( (HANDLE)(h)!=NULL && (HANDLE)(h)!=INVALID_HANDLE_VALUE )\r
15 \r
16 template<class T>\r
17 int FindFromStaticArray ( IN T *pAry, IN int nArySize, IN T Find )\r
18 {\r
19         if ( !pAry ) return -1;\r
20         for ( int i=0; i<nArySize; i++ )\r
21         {\r
22                 if ( pAry[i] == Find )\r
23                         return i;\r
24         }\r
25         return -1;\r
26 }\r
27 \r
28 //\r
29 // ×¢Ò⣺Èç¹ûÊÇ´Ó CString ÖвéÕÒʱ Find Ç§Íò²»ÒªÓàLPCTSTR »òÕß char* ±äÁ¿£¬Ò»¶¨ÊÇÒªÓàCString ±äÁ¿\r
30 //\r
31 template<class T1, class T2>\r
32 int FindFromArray ( IN T1 &Ary, IN T2 Find )\r
33 {\r
34         int nCount = (int)Ary.GetSize();\r
35         for ( int i=0; i<nCount; i++ )\r
36         {\r
37                 T2 tGetValue = Ary.GetAt(i);\r
38                 if ( tGetValue == Find )\r
39                         return i;\r
40         }\r
41         return -1;\r
42 }\r
43 \r
44 //\r
45 // ´ÓÊý×é Ary_Org ÖвéÕÒ£¬Ö»Òª Ary_Find ÖÐÈκÎÒ»¸öÔªËØÔÚ Ary_Org ÖгöÏÖ¹ý\r
46 // ¾Í·µ»Ø¸ÃÔªËØÔÚ Ary_Org ÖеÄλÖÃ\r
47 //\r
48 template<class T1, class T2>\r
49 int FindFromArray ( IN T1 &Ary_Org, IN T1 &Ary_Find, OUT T2 &Element )\r
50 {\r
51         int nCount = Ary_Find.GetSize();\r
52         for ( int i=0; i<nCount; i++ )\r
53         {\r
54                 T2 tGetValue = Ary_Find.GetAt(i);\r
55                 int nFindPos = FindFromArray ( Ary_Org, tGetValue );\r
56                 if ( nFindPos >= 0 )\r
57                 {\r
58                         Element = Ary_Org.GetAt ( nFindPos );\r
59                         return nFindPos;\r
60                 }\r
61         }\r
62         return -1;\r
63 }\r
64 \r
65 template<class T1, class T2, class T3, class T4>\r
66 int FindFromArray ( IN T1 &Ary, IN T2 Find, IN T3 &AppAry, IN T4 AppFind )\r
67 {\r
68         int nCount = Ary.GetSize();\r
69         for ( int i=0; i<nCount; i++ )\r
70         {\r
71                 if ( Ary.GetAt(i) == Find && \r
72                         AppAry.GetAt(i) == AppFind )\r
73                 {\r
74                         return i;\r
75                 }\r
76         }\r
77         return -1;\r
78 }\r
79 \r
80 template<class T1>\r
81 int FindFromArray ( IN T1 &Ary_Src, IN T1 &Ary_Find )\r
82 {\r
83         int nCount = Ary_Src.GetSize();\r
84         for ( int i=0; i<nCount; i++ )\r
85         {\r
86                 if ( FindFromArray ( Ary_Find, Ary_Src.GetAt(i) ) >= 0 )\r
87                         return i;\r
88         }\r
89         return -1;\r
90 }\r
91 \r
92 enum\r
93 {\r
94         STRING_IS_MULTICHARS = 0,               // ÊǶà×Ö½Ú×Ö·û´®\r
95                 STRING_IS_UNICODE,                              // ÊÇUNICODE×Ö·û´®\r
96                 STRING_IS_SOFTCODE,                             // ÊǺͳÌÐòÒ»ÑùµÄ×Ö·û´®±àÂë\r
97 };\r
98 \r
99 class CMultiByteString\r
100 {\r
101 public:\r
102         CMultiByteString ( LPCTSTR lpszOrg, int nOrgStringEncodeType=STRING_IS_SOFTCODE, OUT char *pOutBuf=NULL, int nOutBufSize=0 );\r
103         ~CMultiByteString ();\r
104         char *GetBuffer()\r
105         {\r
106                 if ( m_pszData ) return m_pszData;\r
107                 return "";\r
108         }\r
109         // »ñÈ¡×Ö·û´®¸öÊý\r
110         int GetLength()\r
111         {\r
112                 return m_nCharactersNumber;\r
113         }\r
114         // »ñÈ¡×Ö·û´®Õ¼ÓÃÄÚ´æ´óС£¨×Ö½ÚÊý£¬°üÀ¨×Ö·û´®½áÊøµÄ'\0'ËùÕ¼µÄλÖã©\r
115         int GetSize()\r
116         {\r
117                 return m_nDataSize;\r
118         }\r
119 private:\r
120         char *m_pszData;                        // ±£´æÄ¿±ê×Ö·û´®µÄ»º³å\r
121         int m_nDataSize;                        // Ä¿±ê×Ö·û´®Õ¼ÓõÄÄÚ´æ´óС£¨×Ö½ÚÊý£¬°üÀ¨×Ö·û´®½áÊøµÄ'\0'£©\r
122         int m_nCharactersNumber;        // Ä¿±ê×Ö·û´®µÄ¸öÊý\r
123         BOOL m_bNewBuffer;                      // ÊÇ·ñÔÚÕâ¸öÀàÖÐÉêÇëÁËÄÚ´æ\r
124 };\r
125 \r
126 CString GetCompatibleString ( LPVOID lpszOrg, BOOL bOrgIsUnicode, int nOrgLength=-1 );\r
127 CString FormatDateTime ( COleDateTime &DateTime, LPCTSTR pFormat );\r
128 CString FormatString ( LPCTSTR lpszStr, ... );\r
129 int hwGetFileAttr ( LPCTSTR lpFileName, OUT CFileStatus *pFileStatus=NULL );\r
130 CString FormatBytes ( double fBytesNum, BOOL bShowUnit=TRUE, int nFlag=0 );\r
131 BOOL WaitForThreadEnd ( HANDLE *phThread, DWORD dwWaitTime=10*1000 );\r
132 \r
133 //{{AFX_INSERT_LOCATION}}\r
134 // Microsoft Visual C++ will insert additional declarations immediately before the previous line.