OSDN Git Service

Add Miss File
authorFrank Li <lznuaa@gmail.com>
Fri, 17 Apr 2009 04:52:41 +0000 (12:52 +0800)
committerFrank Li <lznuaa@gmail.com>
Fri, 17 Apr 2009 04:52:41 +0000 (12:52 +0800)
src/Utils/CBase64.h [new file with mode: 0644]
src/Utils/SpeedPostEmail.h [new file with mode: 0644]

diff --git a/src/Utils/CBase64.h b/src/Utils/CBase64.h
new file mode 100644 (file)
index 0000000..b0f1896
--- /dev/null
@@ -0,0 +1,32 @@
+// Base64.h: interface for the CBase64 class.\r
+//\r
+//////////////////////////////////////////////////////////////////////\r
+\r
+#if !defined(AFX_Base64_H__E435B968_4992_4795_8AED_B6E55FC89045__INCLUDED_)\r
+#define AFX_Base64_H__E435B968_4992_4795_8AED_B6E55FC89045__INCLUDED_\r
+\r
+#if _MSC_VER > 1000\r
+#pragma once\r
+#endif // _MSC_VER > 1000\r
+\r
+class CBase64  \r
+{\r
+public:\r
+       CBase64();\r
+       virtual ~CBase64();\r
+\r
+       CStringA Encode( IN const char* szEncoding, IN int nSize );\r
+       int Decode ( IN const char* szDecoding, char* szOutput );\r
+\r
+protected:\r
+       void write_bits( UINT nBits, int nNumBts, LPSTR szOutput, int& lp );\r
+       UINT read_bits( int nNumBits, int* pBitsRead, int& lp );\r
+\r
+       int m_nInputSize;\r
+       int m_nBitsRemaining;\r
+       ULONG m_lBitStorage;\r
+       LPCSTR m_szInput;\r
+private:\r
+};\r
+\r
+#endif // !defined(AFX_Base64_H__E435B968_4992_4795_8AED_B6E55FC89045__INCLUDED_)\r
diff --git a/src/Utils/SpeedPostEmail.h b/src/Utils/SpeedPostEmail.h
new file mode 100644 (file)
index 0000000..b2ca5b3
--- /dev/null
@@ -0,0 +1,134 @@
+#pragma once\r
+\r
+#ifndef GET_SAFE_STRING\r
+#define GET_SAFE_STRING(str) ( (str)?(str):_T("") )\r
+#endif\r
+// _vsnprintf º¯Êý\r
+#ifndef _vsnprintf_hw\r
+#ifdef UNICODE\r
+#define _vsnprintf_hw _vsnwprintf\r
+#else\r
+#define _vsnprintf_hw _vsnprintf\r
+#endif\r
+#endif\r
+#define HANDLE_IS_VALID(h) ( (HANDLE)(h)!=NULL && (HANDLE)(h)!=INVALID_HANDLE_VALUE )\r
+\r
+template<class T>\r
+int FindFromStaticArray ( IN T *pAry, IN int nArySize, IN T Find )\r
+{\r
+       if ( !pAry ) return -1;\r
+       for ( int i=0; i<nArySize; i++ )\r
+       {\r
+               if ( pAry[i] == Find )\r
+                       return i;\r
+       }\r
+       return -1;\r
+}\r
+\r
+//\r
+// ×¢Ò⣺Èç¹ûÊÇ´Ó CString ÖвéÕÒʱ Find Ç§Íò²»ÒªÓàLPCTSTR »òÕß char* ±äÁ¿£¬Ò»¶¨ÊÇÒªÓàCString ±äÁ¿\r
+//\r
+template<class T1, class T2>\r
+int FindFromArray ( IN T1 &Ary, IN T2 Find )\r
+{\r
+       int nCount = (int)Ary.GetSize();\r
+       for ( int i=0; i<nCount; i++ )\r
+       {\r
+               T2 tGetValue = Ary.GetAt(i);\r
+               if ( tGetValue == Find )\r
+                       return i;\r
+       }\r
+       return -1;\r
+}\r
+\r
+//\r
+// ´ÓÊý×é Ary_Org ÖвéÕÒ£¬Ö»Òª Ary_Find ÖÐÈκÎÒ»¸öÔªËØÔÚ Ary_Org ÖгöÏÖ¹ý\r
+// ¾Í·µ»Ø¸ÃÔªËØÔÚ Ary_Org ÖеÄλÖÃ\r
+//\r
+template<class T1, class T2>\r
+int FindFromArray ( IN T1 &Ary_Org, IN T1 &Ary_Find, OUT T2 &Element )\r
+{\r
+       int nCount = Ary_Find.GetSize();\r
+       for ( int i=0; i<nCount; i++ )\r
+       {\r
+               T2 tGetValue = Ary_Find.GetAt(i);\r
+               int nFindPos = FindFromArray ( Ary_Org, tGetValue );\r
+               if ( nFindPos >= 0 )\r
+               {\r
+                       Element = Ary_Org.GetAt ( nFindPos );\r
+                       return nFindPos;\r
+               }\r
+       }\r
+       return -1;\r
+}\r
+\r
+template<class T1, class T2, class T3, class T4>\r
+int FindFromArray ( IN T1 &Ary, IN T2 Find, IN T3 &AppAry, IN T4 AppFind )\r
+{\r
+       int nCount = Ary.GetSize();\r
+       for ( int i=0; i<nCount; i++ )\r
+       {\r
+               if ( Ary.GetAt(i) == Find && \r
+                       AppAry.GetAt(i) == AppFind )\r
+               {\r
+                       return i;\r
+               }\r
+       }\r
+       return -1;\r
+}\r
+\r
+template<class T1>\r
+int FindFromArray ( IN T1 &Ary_Src, IN T1 &Ary_Find )\r
+{\r
+       int nCount = Ary_Src.GetSize();\r
+       for ( int i=0; i<nCount; i++ )\r
+       {\r
+               if ( FindFromArray ( Ary_Find, Ary_Src.GetAt(i) ) >= 0 )\r
+                       return i;\r
+       }\r
+       return -1;\r
+}\r
+\r
+enum\r
+{\r
+       STRING_IS_MULTICHARS = 0,               // ÊǶà×Ö½Ú×Ö·û´®\r
+               STRING_IS_UNICODE,                              // ÊÇUNICODE×Ö·û´®\r
+               STRING_IS_SOFTCODE,                             // ÊǺͳÌÐòÒ»ÑùµÄ×Ö·û´®±àÂë\r
+};\r
+\r
+class CMultiByteString\r
+{\r
+public:\r
+       CMultiByteString ( LPCTSTR lpszOrg, int nOrgStringEncodeType=STRING_IS_SOFTCODE, OUT char *pOutBuf=NULL, int nOutBufSize=0 );\r
+       ~CMultiByteString ();\r
+       char *GetBuffer()\r
+       {\r
+               if ( m_pszData ) return m_pszData;\r
+               return "";\r
+       }\r
+       // »ñÈ¡×Ö·û´®¸öÊý\r
+       int GetLength()\r
+       {\r
+               return m_nCharactersNumber;\r
+       }\r
+       // »ñÈ¡×Ö·û´®Õ¼ÓÃÄÚ´æ´óС£¨×Ö½ÚÊý£¬°üÀ¨×Ö·û´®½áÊøµÄ'\0'ËùÕ¼µÄλÖã©\r
+       int GetSize()\r
+       {\r
+               return m_nDataSize;\r
+       }\r
+private:\r
+       char *m_pszData;                        // ±£´æÄ¿±ê×Ö·û´®µÄ»º³å\r
+       int m_nDataSize;                        // Ä¿±ê×Ö·û´®Õ¼ÓõÄÄÚ´æ´óС£¨×Ö½ÚÊý£¬°üÀ¨×Ö·û´®½áÊøµÄ'\0'£©\r
+       int m_nCharactersNumber;        // Ä¿±ê×Ö·û´®µÄ¸öÊý\r
+       BOOL m_bNewBuffer;                      // ÊÇ·ñÔÚÕâ¸öÀàÖÐÉêÇëÁËÄÚ´æ\r
+};\r
+\r
+CString GetCompatibleString ( LPVOID lpszOrg, BOOL bOrgIsUnicode, int nOrgLength=-1 );\r
+CString FormatDateTime ( COleDateTime &DateTime, LPCTSTR pFormat );\r
+CString FormatString ( LPCTSTR lpszStr, ... );\r
+int hwGetFileAttr ( LPCTSTR lpFileName, OUT CFileStatus *pFileStatus=NULL );\r
+CString FormatBytes ( double fBytesNum, BOOL bShowUnit=TRUE, int nFlag=0 );\r
+BOOL WaitForThreadEnd ( HANDLE *phThread, DWORD dwWaitTime=10*1000 );\r
+\r
+//{{AFX_INSERT_LOCATION}}\r
+// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
\ No newline at end of file