Files
TCPlayerbotCore/src/server/shared/Common.h
T

206 lines
4.6 KiB
C++
Raw Normal View History

2010-10-07 15:54:07 +02:00
/*
2011-01-01 15:01:13 +01:00
* Copyright (C) 2008-2011 TrinityCore <http://www.trinitycore.org/>
2010-10-07 15:54:07 +02:00
* Copyright (C) 2005-2009 MaNGOS <http://getmangos.com/>
*
* 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 <http://www.gnu.org/licenses/>.
2008-10-02 16:23:55 -05:00
*/
2009-10-17 15:51:44 -07:00
2008-10-14 11:57:03 -05:00
#ifndef TRINITYCORE_COMMON_H
#define TRINITYCORE_COMMON_H
2009-10-17 15:51:44 -07:00
// config.h needs to be included 1st
2011-04-29 20:47:02 +02:00
// 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
2009-10-17 15:51:44 -07:00
#include "Define.h"
2009-10-17 15:51:44 -07:00
2010-06-07 07:43:20 -06:00
#include "Dynamic/UnorderedMap.h"
2008-10-02 16:23:55 -05:00
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <math.h>
#include <errno.h>
#include <signal.h>
#include <assert.h>
2009-10-17 15:51:44 -07:00
2008-10-02 16:23:55 -05:00
#if PLATFORM == PLATFORM_WINDOWS
#define STRCASECMP stricmp
#else
#define STRCASECMP strcasecmp
#endif
2009-10-17 15:51:44 -07:00
2008-10-02 16:23:55 -05:00
#include <set>
#include <list>
#include <string>
#include <map>
#include <queue>
#include <sstream>
#include <algorithm>
2009-10-17 15:51:44 -07:00
2010-06-07 07:43:20 -06:00
#include "Threading/LockedQueue.h"
#include "Threading/Threading.h"
2009-10-17 15:51:44 -07:00
#include <ace/Basic_Types.h>
#include <ace/Guard_T.h>
#include <ace/RW_Thread_Mutex.h>
#include <ace/Thread_Mutex.h>
2008-10-02 16:23:55 -05:00
#if PLATFORM == PLATFORM_WINDOWS
# include <ace/config-all.h>
2008-10-02 16:23:55 -05:00
// XP winver - needed to compile with standard leak check in MemoryLeaks.h
// uncomment later if needed
//#define _WIN32_WINNT 0x0501
# include <ws2tcpip.h>
//#undef WIN32_WINNT
#else
# include <sys/types.h>
# include <sys/ioctl.h>
# include <sys/socket.h>
# include <netinet/in.h>
# include <unistd.h>
# include <netdb.h>
#endif
2009-10-17 15:51:44 -07:00
2008-10-02 16:23:55 -05:00
#if COMPILER == COMPILER_MICROSOFT
2009-10-17 15:51:44 -07:00
2008-10-02 16:23:55 -05:00
#include <float.h>
2009-10-17 15:51:44 -07:00
#define I32FMT "%08I32X"
2008-10-02 16:23:55 -05:00
#define I64FMT "%016I64X"
#define snprintf _snprintf
#define atoll __atoi64
#define vsnprintf _vsnprintf
#define finite(X) _finite(X)
2009-10-17 15:51:44 -07:00
2008-10-02 16:23:55 -05:00
#else
2009-10-17 15:51:44 -07:00
2008-10-02 16:23:55 -05:00
#define stricmp strcasecmp
#define strnicmp strncasecmp
#define I32FMT "%08X"
2008-10-02 16:23:55 -05:00
#define I64FMT "%016llX"
2009-10-17 15:51:44 -07:00
2008-10-02 16:23:55 -05:00
#endif
2009-10-17 15:51:44 -07:00
#define UI64FMTD ACE_UINT64_FORMAT_SPECIFIER
#define UI64LIT(N) ACE_UINT64_LITERAL(N)
2009-10-17 15:51:44 -07:00
#define SI64FMTD ACE_INT64_FORMAT_SPECIFIER
#define SI64LIT(N) ACE_INT64_LITERAL(N)
2009-10-17 15:51:44 -07:00
#define SIZEFMTD ACE_SIZE_T_FORMAT_SPECIFIER
2009-10-17 15:51:44 -07:00
2008-10-02 16:23:55 -05:00
inline float finiteAlways(float f) { return finite(f) ? f : 0.0f; }
2009-10-17 15:51:44 -07:00
2008-10-02 16:23:55 -05:00
#define atol(a) strtoul( a, NULL, 10)
2009-10-17 15:51:44 -07:00
2008-10-02 16:23:55 -05:00
#define STRINGIZE(a) #a
2009-10-17 15:51:44 -07:00
2008-10-02 16:23:55 -05:00
enum TimeConstants
{
MINUTE = 60,
HOUR = MINUTE*60,
DAY = HOUR*24,
WEEK = DAY*7,
MONTH = DAY*30,
YEAR = MONTH*12,
IN_MILLISECONDS = 1000
2008-10-02 16:23:55 -05:00
};
2009-10-17 15:51:44 -07:00
2008-10-02 16:23:55 -05:00
enum AccountTypes
{
SEC_PLAYER = 0,
SEC_MODERATOR = 1,
SEC_GAMEMASTER = 2,
SEC_ADMINISTRATOR = 3,
2009-02-09 08:16:34 -05:00
SEC_CONSOLE = 4 // must be always last in list, accounts must have less security level always also
2008-10-02 16:23:55 -05:00
};
2009-10-17 15:51:44 -07:00
2008-10-02 16:23:55 -05:00
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
};
2009-10-17 15:51:44 -07:00
2010-09-28 08:21:51 +03:00
const uint8 TOTAL_LOCALES = 9;
2010-09-17 07:04:29 +02:00
const LocaleConstant DEFAULT_LOCALE = LOCALE_enUS;
2009-10-17 15:51:44 -07:00
2010-09-28 08:21:51 +03:00
#define MAX_LOCALES 8
#define MAX_ACCOUNT_TUTORIAL_VALUES 8
2010-09-28 08:21:51 +03:00
extern char const* localeNames[TOTAL_LOCALES];
2009-10-17 15:51:44 -07:00
2008-12-12 11:21:28 -06:00
LocaleConstant GetLocaleByName(const std::string& name);
2009-10-17 15:51:44 -07:00
2010-08-26 15:54:56 +06:00
typedef std::vector<std::string> StringVector;
// we always use stdlibc++ std::max/std::min, undefine some not C++ standard defines (Win API and some other platforms)
2008-10-02 16:23:55 -05:00
#ifdef max
#undef max
#endif
2009-10-17 15:51:44 -07:00
2008-10-02 16:23:55 -05:00
#ifdef min
#undef min
#endif
2009-10-17 15:51:44 -07:00
2008-10-02 16:23:55 -05:00
#ifndef M_PI
2010-08-22 23:46:40 +06:00
#define M_PI 3.14159265358979323846f
2008-10-02 16:23:55 -05:00
#endif
2009-10-17 15:51:44 -07:00
2010-09-03 00:04:14 +02:00
#define MAX_QUERY_LEN 32*1024
2008-10-02 16:23:55 -05:00
#endif