/* * Copyright (C) 2016+ AzerothCore , released under GNU GPL v2 license, you may redistribute it and/or modify it under version 2 of the License, or (at your option), any later version. * Copyright (C) 2008-2016 TrinityCore * Copyright (C) 2005-2009 MaNGOS */ #ifndef AZEROTHCORE_COMMON_H #define AZEROTHCORE_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 #if AC_PLATFORM == AC_PLATFORM_WINDOWS #define STRCASECMP stricmp #else #define STRCASECMP strcasecmp #endif #include #include #include #include #include #include #include #include #include #include "Threading/LockedQueue.h" #include "Threading/Threading.h" #include #if AC_PLATFORM == AC_PLATFORM_WINDOWS # 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 AC_COMPILER == AC_COMPILER_MICROSOFT #include #define I32FMT "%08I32X" #define I64FMT "%016I64X" #define atoll _atoi64 #define vsnprintf _vsnprintf #define llabs _abs64 #else #define stricmp strcasecmp #define strnicmp strncasecmp #define I32FMT "%08X" #define I64FMT "%016llX" #endif using namespace std; inline float finiteAlways(float f) { return isfinite(f) ? f : 0.0f; } inline bool myisfinite(float f) { return isfinite(f) && !isnan(f); } #define STRINGIZE(a) #a #define MAX_NETCLIENT_PACKET_SIZE (32767 - 1) // Client hardcap: int16 with trailing zero space otherwise crash on memory free 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); void CleanStringForMysqlQuery(std::string& str); typedef std::vector StringVector; // 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 #define MAX_QUERY_LEN 32*1024 namespace acore { template struct unary_function { typedef ArgumentType argument_type; typedef ResultType result_type; }; } #endif