aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/common/Collision/RegularGrid.h2
-rw-r--r--src/common/Utilities/Containers.h26
-rw-r--r--src/common/Utilities/IteratorPair.h58
-rw-r--r--src/common/Utilities/Util.h7
-rw-r--r--src/server/game/Chat/Chat.cpp4
-rw-r--r--src/server/game/Combat/ThreatManager.h6
6 files changed, 71 insertions, 32 deletions
diff --git a/src/common/Collision/RegularGrid.h b/src/common/Collision/RegularGrid.h
index 0800276f065..8fe82589339 100644
--- a/src/common/Collision/RegularGrid.h
+++ b/src/common/Collision/RegularGrid.h
@@ -18,8 +18,8 @@
#ifndef _REGULAR_GRID_H
#define _REGULAR_GRID_H
-#include "Containers.h"
#include "Errors.h"
+#include "IteratorPair.h"
#include <G3D/Ray.h>
#include <G3D/BoundsTrait.h>
#include <G3D/PositionTrait.h>
diff --git a/src/common/Utilities/Containers.h b/src/common/Utilities/Containers.h
index 6cd95676bdf..424b4079e69 100644
--- a/src/common/Utilities/Containers.h
+++ b/src/common/Utilities/Containers.h
@@ -198,32 +198,6 @@ namespace Trinity
return itr != map.end() ? AddressOrSelf(itr->second) : nullptr;
}
- /**
- * @class IteratorPair
- *
- * @brief Utility class to enable range for loop syntax for multimap.equal_range uses
- */
- template<class iterator>
- class IteratorPair
- {
- public:
- IteratorPair() : _iterators() { }
- IteratorPair(iterator first, iterator second) : _iterators(first, second) { }
- IteratorPair(std::pair<iterator, iterator> iterators) : _iterators(iterators) { }
-
- iterator begin() const { return _iterators.first; }
- iterator end() const { return _iterators.second; }
-
- private:
- std::pair<iterator, iterator> _iterators;
- };
-
- template<class M>
- inline auto MapEqualRange(M& map, typename M::key_type const& key) -> IteratorPair<decltype(map.begin())>
- {
- return { map.equal_range(key) };
- }
-
template<class K, class V, template<class, class, class...> class M, class... Rest>
void MultimapErasePair(M<K, V, Rest...>& multimap, K const& key, V const& value)
{
diff --git a/src/common/Utilities/IteratorPair.h b/src/common/Utilities/IteratorPair.h
new file mode 100644
index 00000000000..cc6683be3f3
--- /dev/null
+++ b/src/common/Utilities/IteratorPair.h
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2008-2017 TrinityCore <http://www.trinitycore.org/>
+ *
+ * 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 IteratorPair_h__
+#define IteratorPair_h__
+
+#include "Define.h"
+#include <utility>
+
+namespace Trinity
+{
+ /**
+ * @class IteratorPair
+ *
+ * @brief Utility class to enable range for loop syntax for multimap.equal_range uses
+ */
+ template<class iterator>
+ class IteratorPair
+ {
+ public:
+ IteratorPair() : _iterators() { }
+ IteratorPair(iterator first, iterator second) : _iterators(first, second) { }
+ IteratorPair(std::pair<iterator, iterator> iterators) : _iterators(iterators) { }
+
+ iterator begin() const { return _iterators.first; }
+ iterator end() const { return _iterators.second; }
+
+ private:
+ std::pair<iterator, iterator> _iterators;
+ };
+
+ namespace Containers
+ {
+ template<class M>
+ inline auto MapEqualRange(M& map, typename M::key_type const& key) -> IteratorPair<decltype(map.begin())>
+ {
+ return { map.equal_range(key) };
+ }
+ }
+ //! namespace Containers
+}
+//! namespace Trinity
+
+#endif // IteratorPair_h__
diff --git a/src/common/Utilities/Util.h b/src/common/Utilities/Util.h
index 458c783152c..ec3f5c2c9e2 100644
--- a/src/common/Utilities/Util.h
+++ b/src/common/Utilities/Util.h
@@ -493,4 +493,11 @@ bool CompareValues(ComparisionType type, T val1, T val2)
}
}
+template<typename E>
+typename std::underlying_type<E>::type AsUnderlyingType(E enumValue)
+{
+ static_assert(std::is_enum<E>::value, "AsUnderlyingType can only be used with enums");
+ return static_cast<typename std::underlying_type<E>::type>(enumValue);
+}
+
#endif
diff --git a/src/server/game/Chat/Chat.cpp b/src/server/game/Chat/Chat.cpp
index d8a28c2cc57..46c6a26760c 100644
--- a/src/server/game/Chat/Chat.cpp
+++ b/src/server/game/Chat/Chat.cpp
@@ -416,7 +416,7 @@ bool ChatHandler::_ParseCommands(char const* text)
{
if (ExecuteCommandInTable(getCommandTable(), text, text))
return true;
-
+
// Pretend commands don't exist for regular players
if (m_session && !m_session->HasPermission(rbac::RBAC_PERM_COMMANDS_NOTIFY_COMMAND_NOT_FOUND_ERROR))
return false;
@@ -1316,7 +1316,7 @@ bool AddonChannelCommandHandler::ParseCommands(char const* str)
if (!str[13] || !str[14] || !str[15] || !str[16]) // str[13] through str[16] is 4-character command counter
return false;
echo = str+13;
-
+
switch (opcode)
{
case 'p': // p Ping
diff --git a/src/server/game/Combat/ThreatManager.h b/src/server/game/Combat/ThreatManager.h
index a6432d62216..21d975ccea1 100644
--- a/src/server/game/Combat/ThreatManager.h
+++ b/src/server/game/Combat/ThreatManager.h
@@ -20,11 +20,11 @@
#define _THREATMANAGER
#include "Common.h"
+#include "IteratorPair.h"
#include "SharedDefines.h"
#include "LinkedReference/Reference.h"
#include "UnitEvents.h"
#include "ObjectGuid.h"
-#include "Containers.h"
#include <list>
@@ -220,8 +220,8 @@ class TC_GAME_API ThreatManager
{
public:
// -- compatibility layer for combat rewrite (PR #19930)
- Trinity::Containers::IteratorPair<std::list<ThreatReference*>::const_iterator> GetSortedThreatList() const { auto& list = iThreatContainer.getThreatList(); return { list.cbegin(), list.cend() }; }
- Trinity::Containers::IteratorPair<std::list<ThreatReference*>::const_iterator> GetUnsortedThreatList() const { return GetSortedThreatList(); }
+ Trinity::IteratorPair<std::list<ThreatReference*>::const_iterator> GetSortedThreatList() const { auto& list = iThreatContainer.getThreatList(); return { list.cbegin(), list.cend() }; }
+ Trinity::IteratorPair<std::list<ThreatReference*>::const_iterator> GetUnsortedThreatList() const { return GetSortedThreatList(); }
std::list<ThreatReference*> GetModifiableThreatList() const { return iThreatContainer.getThreatList(); }
Unit* SelectVictim() { return getHostilTarget(); }
Unit* GetCurrentVictim() const { if (ThreatReference* ref = getCurrentVictim()) return ref->GetVictim(); else return nullptr; }