summaryrefslogtreecommitdiff
path: root/osframework/source/SexyAppFramework/Common.h
diff options
context:
space:
mode:
authorLuo Jinghua <sunmoon1997@gmail.com>2008-10-21 10:54:40 +0800
committerLuo Jinghua <sunmoon1997@gmail.com>2008-10-21 10:54:40 +0800
commita8350e585f90e2d4d37bbae1893cb6133e8719b5 (patch)
treefafe76ef5d77b46538cca42eaba29f917a4b5c2d /osframework/source/SexyAppFramework/Common.h
Initial commit of popcap framework.1.3
Diffstat (limited to 'osframework/source/SexyAppFramework/Common.h')
-rw-r--r--osframework/source/SexyAppFramework/Common.h230
1 files changed, 230 insertions, 0 deletions
diff --git a/osframework/source/SexyAppFramework/Common.h b/osframework/source/SexyAppFramework/Common.h
new file mode 100644
index 0000000..4925400
--- /dev/null
+++ b/osframework/source/SexyAppFramework/Common.h
@@ -0,0 +1,230 @@
+#ifndef __SEXYAPPFRAMEWORK_COMMON_H__
+#define __SEXYAPPFRAMEWORK_COMMON_H__
+
+#pragma warning(disable:4786)
+#pragma warning(disable:4503)
+
+#undef _WIN32_WINNT
+#undef WIN32_LEAN_AND_MEAN
+
+#define WIN32_LEAN_AND_MEAN
+#define _WIN32_WINNT 0x0500
+#undef _UNICODE
+#undef UNICODE
+
+#include <string>
+#include <vector>
+#include <set>
+#include <map>
+#include <list>
+#include <algorithm>
+#include <cstdlib>
+
+#include <windows.h>
+#include <shellapi.h>
+#include <mmsystem.h>
+#include "ModVal.h"
+
+#ifdef _USE_WIDE_STRING
+
+typedef std::wstring SexyString;
+#define _S(x) L ##x
+
+
+#define sexystrncmp wcsncmp
+#define sexystrcmp wcscmp
+#define sexystricmp wcsicmp
+#define sexysscanf swscanf
+#define sexyatoi _wtoi
+#define sexystrcpy wcscpy
+
+#define SexyStringToStringFast(x) WStringToString(x)
+#define SexyStringToWStringFast(x) (x)
+#define StringToSexyStringFast(x) StringToWString(x)
+#define WStringToSexyStringFast(x) (x)
+
+#ifndef SEXYFRAMEWORK_NO_REDEFINE_WIN_API
+// Redefine the functions and structs we need to be wide-string
+#undef CreateWindowEx
+#undef RegisterClass
+#undef MessageBox
+#undef ShellExecute
+#undef GetTextExtentPoint32
+#undef RegisterWindowMessage
+#undef CreateMutex
+#undef DrawTextEx
+#undef TextOut
+
+#define CreateWindowEx CreateWindowExW
+#define RegisterClass RegisterClassW
+#define WNDCLASS WNDCLASSW
+#define MessageBox MessageBoxW
+#define ShellExecute ShellExecuteW
+#define GetTextExtentPoint32 GetTextExtentPoint32W
+#define RegisterWindowMessage RegisterWindowMessageW
+#define CreateMutex CreateMutexW
+#define DrawTextEx DrawTextExW
+#define TextOut TextOutW
+#endif
+
+#else
+
+typedef std::string SexyString;
+#define _S(x) x
+
+
+#define sexystrncmp strncmp
+#define sexystrcmp strcmp
+#define sexystricmp stricmp
+#define sexysscanf sscanf
+#define sexyatoi atoi
+#define sexystrcpy strcpy
+
+#define SexyStringToStringFast(x) (x)
+#define SexyStringToWStringFast(x) StringToWString(x)
+#define StringToSexyStringFast(x) (x)
+#define WStringToSexyStringFast(x) WStringToString(x)
+
+#endif
+
+#define LONG_BIGE_TO_NATIVE(l) (((l >> 24) & 0xFF) | ((l >> 8) & 0xFF00) | ((l << 8) & 0xFF0000) | ((l << 24) & 0xFF000000))
+#define WORD_BIGE_TO_NATIVE(w) (((w >> 8) & 0xFF) | ((w << 8) & 0xFF00))
+#define LONG_LITTLEE_TO_NATIVE(l) (l)
+#define WORD_LITTLEE_TO_NATIVE(w) (w)
+
+#define LENGTH(anyarray) (sizeof(anyarray) / sizeof(anyarray[0]))
+
+typedef unsigned char uchar;
+typedef unsigned short ushort;
+typedef unsigned int uint;
+typedef unsigned long ulong;
+typedef __int64 int64;
+
+typedef std::map<std::string, std::string> DefinesMap;
+typedef std::map<std::wstring, std::wstring> WStringWStringMap;
+typedef SexyString::value_type SexyChar;
+#define HAS_SEXYCHAR
+
+namespace Sexy
+{
+
+const ulong SEXY_RAND_MAX = 0x7FFFFFFF;
+
+extern bool gDebug;
+extern HINSTANCE gHInstance;
+
+int Rand();
+int Rand(int range);
+float Rand(float range);
+void SRand(ulong theSeed);
+extern std::string vformat(const char* fmt, va_list argPtr);
+extern std::wstring vformat(const wchar_t* fmt, va_list argPtr);
+extern std::string StrFormat(const char* fmt ...);
+extern std::wstring StrFormat(const wchar_t* fmt ...);
+bool CheckFor98Mill();
+bool CheckForVista();
+std::string GetAppDataFolder();
+void SetAppDataFolder(const std::string& thePath);
+std::string URLEncode(const std::string& theString);
+std::string StringToUpper(const std::string& theString);
+std::wstring StringToUpper(const std::wstring& theString);
+std::string StringToLower(const std::string& theString);
+std::wstring StringToLower(const std::wstring& theString);
+std::wstring StringToWString(const std::string &theString);
+std::string WStringToString(const std::wstring &theString);
+SexyString StringToSexyString(const std::string& theString);
+SexyString WStringToSexyString(const std::wstring& theString);
+std::string SexyStringToString(const SexyString& theString);
+std::wstring SexyStringToWString(const SexyString& theString);
+std::string Upper(const std::string& theData);
+std::wstring Upper(const std::wstring& theData);
+std::string Lower(const std::string& theData);
+std::wstring Lower(const std::wstring& theData);
+std::string Trim(const std::string& theString);
+std::wstring Trim(const std::wstring& theString);
+bool StringToInt(const std::string theString, int* theIntVal);
+bool StringToDouble(const std::string theString, double* theDoubleVal);
+bool StringToInt(const std::wstring theString, int* theIntVal);
+bool StringToDouble(const std::wstring theString, double* theDoubleVal);
+int StrFindNoCase(const char *theStr, const char *theFind);
+bool StrPrefixNoCase(const char *theStr, const char *thePrefix, int maxLength = 10000000);
+SexyString CommaSeperate(int theValue);
+std::string Evaluate(const std::string& theString, const DefinesMap& theDefinesMap);
+std::string XMLDecodeString(const std::string& theString);
+std::string XMLEncodeString(const std::string& theString);
+std::wstring XMLDecodeString(const std::wstring& theString);
+std::wstring XMLEncodeString(const std::wstring& theString);
+
+bool Deltree(const std::string& thePath);
+bool FileExists(const std::string& theFileName);
+void MkDir(const std::string& theDir);
+std::string GetFileName(const std::string& thePath, bool noExtension = false);
+std::string GetFileDir(const std::string& thePath, bool withSlash = false);
+std::string RemoveTrailingSlash(const std::string& theDirectory);
+std::string AddTrailingSlash(const std::string& theDirectory, bool backSlash = false);
+time_t GetFileDate(const std::string& theFileName);
+std::string GetCurDir();
+std::string GetFullPath(const std::string& theRelPath);
+std::string GetPathFrom(const std::string& theRelPath, const std::string& theDir);
+bool AllowAllAccess(const std::string& theFileName);
+
+
+inline void inlineUpper(std::string &theData)
+{
+ //std::transform(theData.begin(), theData.end(), theData.begin(), toupper);
+
+ int aStrLen = (int) theData.length();
+ for (int i = 0; i < aStrLen; i++)
+ {
+ theData[i] = toupper(theData[i]);
+ }
+}
+
+inline void inlineUpper(std::wstring &theData)
+{
+ //std::transform(theData.begin(), theData.end(), theData.begin(), toupper);
+
+ int aStrLen = (int) theData.length();
+ for (int i = 0; i < aStrLen; i++)
+ {
+ theData[i] = towupper(theData[i]);
+ }
+}
+
+inline void inlineLower(std::string &theData)
+{
+ std::transform(theData.begin(), theData.end(), theData.begin(), tolower);
+}
+
+inline void inlineLower(std::wstring &theData)
+{
+ std::transform(theData.begin(), theData.end(), theData.begin(), tolower);
+}
+
+inline void inlineLTrim(std::string &theData, const std::string& theChars = " \t\r\n")
+{
+ theData.erase(0, theData.find_first_not_of(theChars));
+}
+
+inline void inlineLTrim(std::wstring &theData, const std::wstring& theChars = L" \t\r\n")
+{
+ theData.erase(0, theData.find_first_not_of(theChars));
+}
+
+
+inline void inlineRTrim(std::string &theData, const std::string& theChars = " \t\r\n")
+{
+ theData.resize(theData.find_last_not_of(theChars) + 1);
+}
+
+inline void inlineTrim(std::string &theData, const std::string& theChars = " \t\r\n")
+{
+ inlineRTrim(theData, theChars);
+ inlineLTrim(theData, theChars);
+}
+
+struct StringLessNoCase { bool operator()(const std::string &s1, const std::string &s2) const { return _stricmp(s1.c_str(),s2.c_str())<0; } };
+
+}
+
+#endif //__SEXYAPPFRAMEWORK_COMMON_H__