diff options
-rw-r--r-- | src/common/Utilities/FlagsArray.h | 146 | ||||
-rw-r--r-- | src/common/Utilities/Util.h | 128 | ||||
-rw-r--r-- | src/server/game/Chat/LanguageMgr.cpp | 1 | ||||
-rw-r--r-- | src/server/game/DataStores/DB2Structure.h | 2 | ||||
-rw-r--r-- | src/server/game/Entities/Item/ItemTemplate.h | 2 | ||||
-rw-r--r-- | src/server/game/Server/Packets/GarrisonPackets.cpp | 6 | ||||
-rw-r--r-- | src/server/game/Spells/SpellInfo.h | 1 | ||||
-rw-r--r-- | src/server/game/Spells/SpellMgr.h | 3 |
8 files changed, 153 insertions, 136 deletions
diff --git a/src/common/Utilities/FlagsArray.h b/src/common/Utilities/FlagsArray.h new file mode 100644 index 00000000000..cfdb066c321 --- /dev/null +++ b/src/common/Utilities/FlagsArray.h @@ -0,0 +1,146 @@ +/* + * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information + * + * 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 FlagsArray_h__ +#define FlagsArray_h__ + +#include "Define.h" +#include <array> + +template<typename T, size_t N> +class FlagsArray +{ +public: + constexpr FlagsArray operator&(FlagsArray const& right) const + { + FlagsArray temp = *this; + temp &= right; + return temp; + } + + constexpr FlagsArray& operator&=(FlagsArray const& right) + { + for (size_t i = 0; i < N; ++i) + _storage[i] &= right[i]; + + return *this; + } + + constexpr FlagsArray operator|(FlagsArray const& right) const + { + FlagsArray temp = *this; + temp |= right; + return temp; + } + + constexpr FlagsArray& operator|=(FlagsArray const& right) + { + for (size_t i = 0; i < N; ++i) + _storage[i] |= right[i]; + + return *this; + } + + constexpr FlagsArray operator~() const + { + FlagsArray temp = *this; + for (size_t i = 0; i < N; ++i) + temp._storage[i] = ~_storage[i]; + + return temp; + } + + constexpr FlagsArray operator^(FlagsArray const& right) const + { + FlagsArray temp = *this; + temp ^= right; + return temp; + } + + constexpr FlagsArray& operator^=(FlagsArray const& right) + { + for (size_t i = 0; i < N; ++i) + _storage[i] ^= right[i]; + + return *this; + } + + constexpr operator bool() const + { + for (size_t i = 0; i < N; ++i) + if (_storage[i]) + return true; + + return false; + } + + constexpr bool operator !() const + { + return !(bool(*this)); + } + + constexpr T& operator[](size_t i) + { + return _storage[i]; + } + + constexpr T const& operator [](size_t i) const + { + return _storage[i]; + } + + constexpr FlagsArray& operator=(std::array<T, N> const& right) + { + _storage = right; + return *this; + } + +protected: + std::array<T, N> _storage = { }; +}; + +class flag128 : public FlagsArray<uint32, 4> +{ +public: + constexpr flag128(uint32 p1 = 0, uint32 p2 = 0, uint32 p3 = 0, uint32 p4 = 0) + { + _storage[0] = p1; + _storage[1] = p2; + _storage[2] = p3; + _storage[3] = p4; + } + + constexpr bool IsEqual(uint32 p1 = 0, uint32 p2 = 0, uint32 p3 = 0, uint32 p4 = 0) const + { + return (_storage[0] == p1 && _storage[1] == p2 && _storage[2] == p3 && _storage[3] == p4); + } + + constexpr bool HasFlag(uint32 p1 = 0, uint32 p2 = 0, uint32 p3 = 0, uint32 p4 = 0) const + { + return (_storage[0] & p1 || _storage[1] & p2 || _storage[2] & p3 || _storage[3] & p4); + } + + constexpr void Set(uint32 p1 = 0, uint32 p2 = 0, uint32 p3 = 0, uint32 p4 = 0) + { + _storage[0] = p1; + _storage[1] = p2; + _storage[2] = p3; + _storage[3] = p4; + } +}; + +#endif // FlagsArray_h__ diff --git a/src/common/Utilities/Util.h b/src/common/Utilities/Util.h index 8a24981c837..6aeca639173 100644 --- a/src/common/Utilities/Util.h +++ b/src/common/Utilities/Util.h @@ -430,134 +430,6 @@ class HookList final } }; -class TC_COMMON_API flag128 -{ -private: - uint32 part[4]; - -public: - flag128(uint32 p1 = 0, uint32 p2 = 0, uint32 p3 = 0, uint32 p4 = 0) - { - part[0] = p1; - part[1] = p2; - part[2] = p3; - part[3] = p4; - } - - inline bool IsEqual(uint32 p1 = 0, uint32 p2 = 0, uint32 p3 = 0, uint32 p4 = 0) const - { - return (part[0] == p1 && part[1] == p2 && part[2] == p3 && part[3] == p4); - } - - inline bool HasFlag(uint32 p1 = 0, uint32 p2 = 0, uint32 p3 = 0, uint32 p4 = 0) const - { - return (part[0] & p1 || part[1] & p2 || part[2] & p3 || part[3] & p4); - } - - inline void Set(uint32 p1 = 0, uint32 p2 = 0, uint32 p3 = 0, uint32 p4 = 0) - { - part[0] = p1; - part[1] = p2; - part[2] = p3; - part[3] = p4; - } - - inline bool operator<(flag128 const& right) const - { - for (uint8 i = 4; i > 0; --i) - { - if (part[i - 1] < right.part[i - 1]) - return true; - else if (part[i - 1] > right.part[i - 1]) - return false; - } - return false; - } - - inline bool operator==(flag128 const& right) const - { - return - ( - part[0] == right.part[0] && - part[1] == right.part[1] && - part[2] == right.part[2] && - part[3] == right.part[3] - ); - } - - inline bool operator!=(flag128 const& right) const - { - return !(*this == right); - } - - inline flag128 operator&(flag128 const& right) const - { - return flag128(part[0] & right.part[0], part[1] & right.part[1], part[2] & right.part[2], part[3] & right.part[3]); - } - - inline flag128& operator&=(flag128 const& right) - { - part[0] &= right.part[0]; - part[1] &= right.part[1]; - part[2] &= right.part[2]; - part[3] &= right.part[3]; - return *this; - } - - inline flag128 operator|(flag128 const& right) const - { - return flag128(part[0] | right.part[0], part[1] | right.part[1], part[2] | right.part[2], part[3] | right.part[3]); - } - - inline flag128& operator |=(flag128 const& right) - { - part[0] |= right.part[0]; - part[1] |= right.part[1]; - part[2] |= right.part[2]; - part[3] |= right.part[3]; - return *this; - } - - inline flag128 operator~() const - { - return flag128(~part[0], ~part[1], ~part[2], ~part[3]); - } - - inline flag128 operator^(flag128 const& right) const - { - return flag128(part[0] ^ right.part[0], part[1] ^ right.part[1], part[2] ^ right.part[2], part[3] ^ right.part[3]); - } - - inline flag128& operator^=(flag128 const& right) - { - part[0] ^= right.part[0]; - part[1] ^= right.part[1]; - part[2] ^= right.part[2]; - part[3] ^= right.part[3]; - return *this; - } - - inline operator bool() const - { - return (part[0] != 0 || part[1] != 0 || part[2] != 0 || part[3] != 0); - } - - inline bool operator !() const - { - return !(bool(*this)); - } - - inline uint32& operator[](uint8 el) - { - return part[el]; - } - - inline uint32 const& operator [](uint8 el) const - { - return part[el]; - } -}; - enum ComparisionType { COMP_TYPE_EQ = 0, diff --git a/src/server/game/Chat/LanguageMgr.cpp b/src/server/game/Chat/LanguageMgr.cpp index c30cfa9b965..9bca8097837 100644 --- a/src/server/game/Chat/LanguageMgr.cpp +++ b/src/server/game/Chat/LanguageMgr.cpp @@ -22,6 +22,7 @@ #include "SpellInfo.h" #include "SpellMgr.h" #include "Timer.h" +#include "Util.h" #include <sstream> LanguageMgr::LanguageMgr() : _langsMap(), _wordsMap() { } diff --git a/src/server/game/DataStores/DB2Structure.h b/src/server/game/DataStores/DB2Structure.h index cbaa4478fec..500cbd48dbd 100644 --- a/src/server/game/DataStores/DB2Structure.h +++ b/src/server/game/DataStores/DB2Structure.h @@ -20,8 +20,8 @@ #include "Common.h" #include "DBCEnums.h" +#include "FlagsArray.h" #include "RaceMask.h" -#include "Util.h" #pragma pack(push, 1) diff --git a/src/server/game/Entities/Item/ItemTemplate.h b/src/server/game/Entities/Item/ItemTemplate.h index d7fbb685274..a2183ba78be 100644 --- a/src/server/game/Entities/Item/ItemTemplate.h +++ b/src/server/game/Entities/Item/ItemTemplate.h @@ -20,9 +20,9 @@ #include "Common.h" #include "DB2Structure.h" +#include "Errors.h" #include "SharedDefines.h" #include <bitset> -#include <unordered_map> #include <vector> enum ItemModType diff --git a/src/server/game/Server/Packets/GarrisonPackets.cpp b/src/server/game/Server/Packets/GarrisonPackets.cpp index a488cd3b3c8..9a268388696 100644 --- a/src/server/game/Server/Packets/GarrisonPackets.cpp +++ b/src/server/game/Server/Packets/GarrisonPackets.cpp @@ -17,10 +17,9 @@ #include "GarrisonPackets.h" #include "DB2Structure.h" +#include "Errors.h" -namespace WorldPackets -{ -namespace Garrison +namespace WorldPackets::Garrison { WorldPacket const* GarrisonCreateResult::Write() { @@ -454,4 +453,3 @@ WorldPacket const* GarrisonBuildingActivated::Write() return &_worldPacket; } } -} diff --git a/src/server/game/Spells/SpellInfo.h b/src/server/game/Spells/SpellInfo.h index 2012b9b3a63..9a73a1aec45 100644 --- a/src/server/game/Spells/SpellInfo.h +++ b/src/server/game/Spells/SpellInfo.h @@ -20,7 +20,6 @@ #include "SharedDefines.h" #include "DB2Structure.h" -#include "Util.h" #include "Object.h" #include "SpellAuraDefines.h" #include "SpellDefines.h" diff --git a/src/server/game/Spells/SpellMgr.h b/src/server/game/Spells/SpellMgr.h index cf2cbb26c8e..e98d0070985 100644 --- a/src/server/game/Spells/SpellMgr.h +++ b/src/server/game/Spells/SpellMgr.h @@ -23,10 +23,11 @@ #include "Define.h" #include "DBCEnums.h" #include "Duration.h" +#include "Errors.h" +#include "FlagsArray.h" #include "IteratorPair.h" #include "RaceMask.h" #include "SharedDefines.h" -#include "Util.h" #include <functional> #include <map> |