diff options
author | StormBytePP <stormbyte@gmail.com> | 2015-08-19 19:02:10 +0200 |
---|---|---|
committer | StormBytePP <stormbyte@gmail.com> | 2015-08-21 17:52:42 +0200 |
commit | 1d2aafd39bcb79a67357d198ce9b2345642fdd39 (patch) | |
tree | c32cf1c3717625c60da59c82ba5a4fca2530119a /src/common/Common.h | |
parent | 172293acee1607727ebd8070ab3e1390590d02a8 (diff) |
Core/Build: Merge common library and move database out of shared
Diffstat (limited to 'src/common/Common.h')
-rw-r--r-- | src/common/Common.h | 178 |
1 files changed, 178 insertions, 0 deletions
diff --git a/src/common/Common.h b/src/common/Common.h new file mode 100644 index 00000000000..e83340bdd84 --- /dev/null +++ b/src/common/Common.h @@ -0,0 +1,178 @@ +/* + * Copyright (C) 2008-2015 TrinityCore <http://www.trinitycore.org/> + * 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/>. + */ + +#ifndef TRINITYCORE_COMMON_H +#define TRINITYCORE_COMMON_H + +#include "Define.h" + +#include <unordered_map> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <time.h> +#include <cmath> +#include <errno.h> +#include <signal.h> +#include <assert.h> + +#include <set> +#include <list> +#include <string> +#include <map> +#include <queue> +#include <sstream> +#include <algorithm> +#include <memory> + +#include <boost/optional.hpp> +#include <boost/utility/in_place_factory.hpp> + +#include "Debugging/Errors.h" + +#include "Threading/LockedQueue.h" + +#if PLATFORM == PLATFORM_WINDOWS +# include <ws2tcpip.h> + +# if defined(__INTEL_COMPILER) +# if !defined(BOOST_ASIO_HAS_MOVE) +# define BOOST_ASIO_HAS_MOVE +# endif // !defined(BOOST_ASIO_HAS_MOVE) +# endif // if defined(__INTEL_COMPILER) + +#else +# include <sys/types.h> +# include <sys/ioctl.h> +# include <sys/socket.h> +# include <netinet/in.h> +# include <unistd.h> +# include <netdb.h> +#endif + +#if COMPILER == COMPILER_MICROSOFT + +#include <float.h> + +#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; } + +inline unsigned long atoul(char const* str) { return strtoul(str, nullptr, 10); } +inline unsigned long long atoull(char const* str) { return strtoull(str, nullptr, 10); } + +#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, + LOCALE_none = 9, + LOCALE_ptBR = 10, + LOCALE_itIT = 11, + + TOTAL_LOCALES +}; + +const uint8 OLD_TOTAL_LOCALES = 9; /// @todo convert in simple system +#define DEFAULT_LOCALE LOCALE_enUS + +#define MAX_LOCALES 11 + +extern char const* localeNames[TOTAL_LOCALES]; + +LocaleConstant GetLocaleByName(const std::string& name); + +typedef std::vector<std::string> StringVector; + +#pragma pack(push, 1) + +struct LocalizedString +{ + char const* Str[TOTAL_LOCALES]; +}; + +#pragma pack(pop) + +// 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.14159265358979323846 +#endif + +#define MAX_QUERY_LEN 32*1024 + +//! Optional helper class to wrap optional values within. +template <typename T> +using Optional = boost::optional<T>; + +namespace Trinity +{ + //! std::make_unique implementation (TODO: remove this once C++14 is supported) + template<typename T, typename ...Args> + std::unique_ptr<T> make_unique(Args&& ...args) + { + return std::unique_ptr<T>(new T(std::forward<Args>(args)...)); + } +} + +#endif |