/* * Copyright (C) 2005-2008 MaNGOS * * Copyright (C) 2008 Trinity * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef TRINITYCORE_COMMON_H #define TRINITYCORE_COMMON_H // config.h needs to be included 1st // TODO this thingy looks like hack ,but its not, need to // make separate header however, because It makes mess here. #ifdef HAVE_CONFIG_H // Remove Some things that we will define // This is in case including another config.h // before trinity config.h #ifdef PACKAGE #undef PACKAGE #endif //PACKAGE #ifdef PACKAGE_BUGREPORT #undef PACKAGE_BUGREPORT #endif //PACKAGE_BUGREPORT #ifdef PACKAGE_NAME #undef PACKAGE_NAME #endif //PACKAGE_NAME #ifdef PACKAGE_STRING #undef PACKAGE_STRING #endif //PACKAGE_STRING #ifdef PACKAGE_TARNAME #undef PACKAGE_TARNAME #endif //PACKAGE_TARNAME #ifdef PACKAGE_VERSION #undef PACKAGE_VERSION #endif //PACKAGE_VERSION #ifdef VERSION #undef VERSION #endif //VERSION # include "config.h" #undef PACKAGE #undef PACKAGE_BUGREPORT #undef PACKAGE_NAME #undef PACKAGE_STRING #undef PACKAGE_TARNAME #undef PACKAGE_VERSION #undef VERSION #endif //HAVE_CONFIG_H #include "Platform/Define.h" #if COMPILER == COMPILER_MICROSOFT #pragma warning(disable:4996) #ifndef __SHOW_STUPID_WARNINGS__ #pragma warning(disable:4244) #pragma warning(disable:4267) #pragma warning(disable:4800) #pragma warning(disable:4018) #pragma warning(disable:4311) #pragma warning(disable:4305) #pragma warning(disable:4005) #endif // __SHOW_STUPID_WARNINGS__ #endif // __GNUC__ #include "Utilities/HashMap.h" #include #include #include #include #include #include #include #if PLATFORM == PLATFORM_WINDOWS #define STRCASECMP stricmp #else #define STRCASECMP strcasecmp #endif #include #include #include #include #include #include #include #include #include #include #include #if PLATFORM == PLATFORM_WINDOWS # define FD_SETSIZE 4096 # include // XP winver - needed to compile with standard leak check in MemoryLeaks.h // uncomment later if needed //#define _WIN32_WINNT 0x0501 # include //#undef WIN32_WINNT #else # include # include # include # include # include # include #endif #if COMPILER == COMPILER_MICROSOFT #include #define I64FMT "%016I64X" #define I64FMTD "%I64u" #define SI64FMTD "%I64d" #define snprintf _snprintf #define atoll __atoi64 #define vsnprintf _vsnprintf #define strdup _strdup #define finite(X) _finite(X) #else #define stricmp strcasecmp #define strnicmp strncasecmp #define I64FMT "%016llX" #define I64FMTD "%llu" #define SI64FMTD "%lld" #endif inline float finiteAlways(float f) { return finite(f) ? f : 0.0f; } #define atol(a) strtoul( a, NULL, 10) #define STRINGIZE(a) #a enum TimeConstants { MINUTE = 60, HOUR = MINUTE*60, DAY = HOUR*24, MONTH = DAY*30 }; enum AccountTypes { SEC_PLAYER = 0, SEC_MODERATOR = 1, SEC_GAMEMASTER = 2, SEC_ADMINISTRATOR = 3, SEC_CONSOLE = 4 // must be always last in list, accounts must have less security level always also }; enum LocaleConstant { LOCALE_enUS = 0, LOCALE_koKR = 1, LOCALE_frFR = 2, LOCALE_deDE = 3, LOCALE_zhCN = 4, LOCALE_zhTW = 5, LOCALE_esES = 6, LOCALE_esMX = 7, LOCALE_ruRU = 8 }; #define MAX_LOCALE 9 extern char const* localeNames[MAX_LOCALE]; LocaleConstant GetLocaleByName(std::string name); // we always use stdlibc++ std::max/std::min, undefine some not C++ standard defines (Win API and some pother platforms) #ifdef max #undef max #endif #ifdef min #undef min #endif #ifndef M_PI #define M_PI 3.14159265358979323846 #endif #endif