/* * Copyright (C) 2008-2014 TrinityCore * Copyright (C) 2005-2009 MaNGOS * * 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, see . */ #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 "Define.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "Debugging/Errors.h" #include "Threading/LockedQueue.h" #if PLATFORM == PLATFORM_WINDOWS # include #else # include # include # include # include # include # include #endif #if COMPILER == COMPILER_MICROSOFT #include #define snprintf _snprintf #define atoll _atoi64 #define vsnprintf _vsnprintf #define llabs _abs64 #else #define stricmp strcasecmp #define strnicmp strncasecmp #endif inline float finiteAlways(float f) { return std::isfinite(f) ? f : 0.0f; } #define STRINGIZE(a) #a enum TimeConstants { MINUTE = 60, HOUR = MINUTE*60, DAY = HOUR*24, WEEK = DAY*7, MONTH = DAY*30, YEAR = MONTH*12, IN_MILLISECONDS = 1000 }; 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 }; const uint8 TOTAL_LOCALES = 9; #define DEFAULT_LOCALE LOCALE_enUS #define MAX_LOCALES 8 #define MAX_ACCOUNT_TUTORIAL_VALUES 8 extern char const* localeNames[TOTAL_LOCALES]; LocaleConstant GetLocaleByName(const std::string& name); typedef std::vector StringVector; #if defined(__GNUC__) #pragma pack(1) #else #pragma pack(push, 1) #endif struct LocalizedString { char const* Str[TOTAL_LOCALES]; }; #if defined(__GNUC__) #pragma pack() #else #pragma pack(pop) #endif // we always use stdlibc++ std::max/std::min, undefine some not C++ standard defines (Win API and some other platforms) #ifdef max #undef max #endif #ifdef min #undef min #endif #ifndef M_PI #define M_PI 3.14159265358979323846f #endif #define MAX_QUERY_LEN 32*1024 #endif