aboutsummaryrefslogtreecommitdiff
path: root/src/server/shared/Dynamic
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/shared/Dynamic')
-rw-r--r--src/server/shared/Dynamic/FactoryHolder.h2
-rw-r--r--src/server/shared/Dynamic/LinkedList.h12
-rw-r--r--src/server/shared/Dynamic/LinkedReference/Reference.h12
-rw-r--r--src/server/shared/Dynamic/ObjectRegistry.h2
-rw-r--r--src/server/shared/Dynamic/TypeContainer.h143
-rw-r--r--src/server/shared/Dynamic/TypeContainerFunctions.h217
-rw-r--r--src/server/shared/Dynamic/TypeContainerVisitor.h104
7 files changed, 15 insertions, 477 deletions
diff --git a/src/server/shared/Dynamic/FactoryHolder.h b/src/server/shared/Dynamic/FactoryHolder.h
index 9c9e2ada5e0..9e67fe11467 100644
--- a/src/server/shared/Dynamic/FactoryHolder.h
+++ b/src/server/shared/Dynamic/FactoryHolder.h
@@ -20,8 +20,8 @@
#define TRINITY_FACTORY_HOLDER
#include "Define.h"
-#include "Dynamic/TypeList.h"
#include "ObjectRegistry.h"
+#include "TypeList.h"
/** FactoryHolder holds a factory object of a specific type
*/
diff --git a/src/server/shared/Dynamic/LinkedList.h b/src/server/shared/Dynamic/LinkedList.h
index 0d64c337cbe..74f4ca553f4 100644
--- a/src/server/shared/Dynamic/LinkedList.h
+++ b/src/server/shared/Dynamic/LinkedList.h
@@ -165,13 +165,13 @@ class LinkedListHead
{ // construct with node pointer _Pnode
}
- Iterator& operator=(Iterator const &_Right)
+ Iterator& operator=(Iterator const& _Right)
{
_Ptr = _Right._Ptr;
return *this;
}
- Iterator& operator=(const_pointer const &_Right)
+ Iterator& operator=(const_pointer const& _Right)
{
_Ptr = pointer(_Right);
return *this;
@@ -213,22 +213,22 @@ class LinkedListHead
return (_Tmp);
}
- bool operator==(Iterator const &_Right) const
+ bool operator==(Iterator const& _Right) const
{ // test for iterator equality
return (_Ptr == _Right._Ptr);
}
- bool operator!=(Iterator const &_Right) const
+ bool operator!=(Iterator const& _Right) const
{ // test for iterator inequality
return (!(*this == _Right));
}
- bool operator==(pointer const &_Right) const
+ bool operator==(pointer const& _Right) const
{ // test for pointer equality
return (_Ptr != _Right);
}
- bool operator!=(pointer const &_Right) const
+ bool operator!=(pointer const& _Right) const
{ // test for pointer equality
return (!(*this == _Right));
}
diff --git a/src/server/shared/Dynamic/LinkedReference/Reference.h b/src/server/shared/Dynamic/LinkedReference/Reference.h
index c0c4ec21a80..4002de2d584 100644
--- a/src/server/shared/Dynamic/LinkedReference/Reference.h
+++ b/src/server/shared/Dynamic/LinkedReference/Reference.h
@@ -40,7 +40,7 @@ template <class TO, class FROM> class Reference : public LinkedListElement
// Tell our refFrom (source) object, that the link is cut (Target destroyed)
virtual void sourceObjectDestroyLink() = 0;
public:
- Reference() { iRefTo = NULL; iRefFrom = NULL; }
+ Reference() { iRefTo = nullptr; iRefFrom = nullptr; }
virtual ~Reference() { }
// Create new link
@@ -49,7 +49,7 @@ template <class TO, class FROM> class Reference : public LinkedListElement
ASSERT(fromObj); // fromObj MUST not be NULL
if (isValid())
unlink();
- if (toObj != NULL)
+ if (toObj != nullptr)
{
iRefTo = toObj;
iRefFrom = fromObj;
@@ -63,8 +63,8 @@ template <class TO, class FROM> class Reference : public LinkedListElement
{
targetObjectDestroyLink();
delink();
- iRefTo = NULL;
- iRefFrom = NULL;
+ iRefTo = nullptr;
+ iRefFrom = nullptr;
}
// Link is invalid due to destruction of referenced target object. Call comes from the refTo object
@@ -73,12 +73,12 @@ template <class TO, class FROM> class Reference : public LinkedListElement
{
sourceObjectDestroyLink();
delink();
- iRefTo = NULL;
+ iRefTo = nullptr;
}
bool isValid() const // Only check the iRefTo
{
- return iRefTo != NULL;
+ return iRefTo != nullptr;
}
Reference<TO, FROM> * next() { return((Reference<TO, FROM> *) LinkedListElement::next()); }
diff --git a/src/server/shared/Dynamic/ObjectRegistry.h b/src/server/shared/Dynamic/ObjectRegistry.h
index 5f614819b13..8ed72c476e8 100644
--- a/src/server/shared/Dynamic/ObjectRegistry.h
+++ b/src/server/shared/Dynamic/ObjectRegistry.h
@@ -82,6 +82,8 @@ class ObjectRegistry final
// non instanceable, only static
ObjectRegistry() { }
~ObjectRegistry() { }
+ ObjectRegistry(ObjectRegistry const&) = delete;
+ ObjectRegistry& operator=(ObjectRegistry const&) = delete;
};
#endif
diff --git a/src/server/shared/Dynamic/TypeContainer.h b/src/server/shared/Dynamic/TypeContainer.h
deleted file mode 100644
index 7e825136755..00000000000
--- a/src/server/shared/Dynamic/TypeContainer.h
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Copyright (C) 2008-2017 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 TRINITY_TYPECONTAINER_H
-#define TRINITY_TYPECONTAINER_H
-
-/*
- * Here, you'll find a series of containers that allow you to hold multiple
- * types of object at the same time.
- */
-
-#include <map>
-#include <unordered_map>
-#include <vector>
-#include "Define.h"
-#include "Dynamic/TypeList.h"
-#include "GridRefManager.h"
-
-/*
- * @class ContainerMapList is a mulit-type container for map elements
- * By itself its meaningless but collaborate along with TypeContainers,
- * it become the most powerfully container in the whole system.
- */
-template<class OBJECT>
-struct ContainerMapList
-{
- //std::map<OBJECT_HANDLE, OBJECT *> _element;
- GridRefManager<OBJECT> _element;
-};
-
-template<>
-struct ContainerMapList<TypeNull> /* nothing is in type null */
-{
-};
-
-template<class H, class T>
-struct ContainerMapList<TypeList<H, T> >
-{
- ContainerMapList<H> _elements;
- ContainerMapList<T> _TailElements;
-};
-
-template<class OBJECT, class KEY_TYPE>
-struct ContainerUnorderedMap
-{
- std::unordered_map<KEY_TYPE, OBJECT*> _element;
-};
-
-template<class KEY_TYPE>
-struct ContainerUnorderedMap<TypeNull, KEY_TYPE>
-{
-};
-
-template<class H, class T, class KEY_TYPE>
-struct ContainerUnorderedMap<TypeList<H, T>, KEY_TYPE>
-{
- ContainerUnorderedMap<H, KEY_TYPE> _elements;
- ContainerUnorderedMap<T, KEY_TYPE> _TailElements;
-};
-
-#include "TypeContainerFunctions.h"
-
-/*
- * @class TypeMapContainer contains a fixed number of types and is
- * determined at compile time. This is probably the most complicated
- * class and do its simplest thing, that is, holds objects
- * of different types.
- */
-
-template<class OBJECT_TYPES>
-class TypeMapContainer
-{
- public:
- template<class SPECIFIC_TYPE> size_t Count() const { return Trinity::Count(i_elements, (SPECIFIC_TYPE*)NULL); }
-
- /// inserts a specific object into the container
- template<class SPECIFIC_TYPE>
- bool insert(SPECIFIC_TYPE *obj)
- {
- SPECIFIC_TYPE* t = Trinity::Insert(i_elements, obj);
- return (t != NULL);
- }
-
- /// Removes the object from the container, and returns the removed object
- //template<class SPECIFIC_TYPE>
- //bool remove(SPECIFIC_TYPE* obj)
- //{
- // SPECIFIC_TYPE* t = Trinity::Remove(i_elements, obj);
- // return (t != NULL);
- //}
-
- ContainerMapList<OBJECT_TYPES> & GetElements(void) { return i_elements; }
- const ContainerMapList<OBJECT_TYPES> & GetElements(void) const { return i_elements;}
-
- private:
- ContainerMapList<OBJECT_TYPES> i_elements;
-};
-
-template<class OBJECT_TYPES, class KEY_TYPE>
-class TypeUnorderedMapContainer
-{
-public:
- template<class SPECIFIC_TYPE>
- bool Insert(KEY_TYPE const& handle, SPECIFIC_TYPE* obj)
- {
- return Trinity::Insert(_elements, handle, obj);
- }
-
- template<class SPECIFIC_TYPE>
- bool Remove(KEY_TYPE const& handle)
- {
- return Trinity::Remove(_elements, handle, (SPECIFIC_TYPE*)NULL);
- }
-
- template<class SPECIFIC_TYPE>
- SPECIFIC_TYPE* Find(KEY_TYPE const& handle)
- {
- return Trinity::Find(_elements, handle, (SPECIFIC_TYPE*)NULL);
- }
-
- ContainerUnorderedMap<OBJECT_TYPES, KEY_TYPE>& GetElements() { return _elements; }
- ContainerUnorderedMap<OBJECT_TYPES, KEY_TYPE> const& GetElements() const { return _elements; }
-
-private:
- ContainerUnorderedMap<OBJECT_TYPES, KEY_TYPE> _elements;
-};
-
-#endif
diff --git a/src/server/shared/Dynamic/TypeContainerFunctions.h b/src/server/shared/Dynamic/TypeContainerFunctions.h
deleted file mode 100644
index 97d20922a05..00000000000
--- a/src/server/shared/Dynamic/TypeContainerFunctions.h
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- * Copyright (C) 2008-2017 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 TYPECONTAINER_FUNCTIONS_H
-#define TYPECONTAINER_FUNCTIONS_H
-
-/*
- * Here you'll find a list of helper functions to make
- * the TypeContainer usefull. Without it, its hard
- * to access or mutate the container.
- */
-
-#include "Define.h"
-#include "Dynamic/TypeList.h"
-#include <map>
-#include <unordered_map>
-
-namespace Trinity
-{
- // Helpers
- // Insert helpers
- template<class SPECIFIC_TYPE, class KEY_TYPE>
- bool Insert(ContainerUnorderedMap<SPECIFIC_TYPE, KEY_TYPE>& elements, KEY_TYPE const& handle, SPECIFIC_TYPE* obj)
- {
- auto i = elements._element.find(handle);
- if (i == elements._element.end())
- {
- elements._element[handle] = obj;
- return true;
- }
- else
- {
- ASSERT(i->second == obj, "Object with certain key already in but objects are different!");
- return false;
- }
- }
-
- template<class SPECIFIC_TYPE, class KEY_TYPE>
- bool Insert(ContainerUnorderedMap<TypeNull, KEY_TYPE>& /*elements*/, KEY_TYPE const& /*handle*/, SPECIFIC_TYPE* /*obj*/)
- {
- return false;
- }
-
- template<class SPECIFIC_TYPE, class KEY_TYPE, class T>
- bool Insert(ContainerUnorderedMap<T, KEY_TYPE>& /*elements*/, KEY_TYPE const& /*handle*/, SPECIFIC_TYPE* /*obj*/)
- {
- return false;
- }
-
- template<class SPECIFIC_TYPE, class KEY_TYPE, class H, class T>
- bool Insert(ContainerUnorderedMap<TypeList<H, T>, KEY_TYPE>& elements, KEY_TYPE const& handle, SPECIFIC_TYPE* obj)
- {
- bool ret = Insert(elements._elements, handle, obj);
- return ret ? ret : Insert(elements._TailElements, handle, obj);
- }
-
- // Find helpers
- template<class SPECIFIC_TYPE, class KEY_TYPE>
- SPECIFIC_TYPE* Find(ContainerUnorderedMap<SPECIFIC_TYPE, KEY_TYPE> const& elements, KEY_TYPE const& handle, SPECIFIC_TYPE* /*obj*/)
- {
- auto i = elements._element.find(handle);
- if (i == elements._element.end())
- return nullptr;
- else
- return i->second;
- }
-
- template<class SPECIFIC_TYPE, class KEY_TYPE>
- SPECIFIC_TYPE* Find(ContainerUnorderedMap<TypeNull, KEY_TYPE> const& /*elements*/, KEY_TYPE const& /*handle*/, SPECIFIC_TYPE* /*obj*/)
- {
- return nullptr;
- }
-
- template<class SPECIFIC_TYPE, class KEY_TYPE, class T>
- SPECIFIC_TYPE* Find(ContainerUnorderedMap<T, KEY_TYPE> const& /*elements*/, KEY_TYPE const& /*handle*/, SPECIFIC_TYPE* /*obj*/)
- {
- return nullptr;
- }
-
- template<class SPECIFIC_TYPE, class KEY_TYPE, class H, class T>
- SPECIFIC_TYPE* Find(ContainerUnorderedMap<TypeList<H, T>, KEY_TYPE> const& elements, KEY_TYPE const& handle, SPECIFIC_TYPE* /*obj*/)
- {
- SPECIFIC_TYPE* ret = Find(elements._elements, handle, (SPECIFIC_TYPE*)nullptr);
- return ret ? ret : Find(elements._TailElements, handle, (SPECIFIC_TYPE*)nullptr);
- }
-
- // Erase helpers
- template<class SPECIFIC_TYPE, class KEY_TYPE>
- bool Remove(ContainerUnorderedMap<SPECIFIC_TYPE, KEY_TYPE>& elements, KEY_TYPE const& handle, SPECIFIC_TYPE* /*obj*/)
- {
- elements._element.erase(handle);
- return true;
- }
-
- template<class SPECIFIC_TYPE, class KEY_TYPE>
- bool Remove(ContainerUnorderedMap<TypeNull, KEY_TYPE>& /*elements*/, KEY_TYPE const& /*handle*/, SPECIFIC_TYPE* /*obj*/)
- {
- return false;
- }
-
- template<class SPECIFIC_TYPE, class KEY_TYPE, class T>
- bool Remove(ContainerUnorderedMap<T, KEY_TYPE>& /*elements*/, KEY_TYPE const& /*handle*/, SPECIFIC_TYPE* /*obj*/)
- {
- return false;
- }
-
- template<class SPECIFIC_TYPE, class KEY_TYPE, class H, class T>
- bool Remove(ContainerUnorderedMap<TypeList<H, T>, KEY_TYPE>& elements, KEY_TYPE const& handle, SPECIFIC_TYPE* /*obj*/)
- {
- bool ret = Remove(elements._elements, handle, (SPECIFIC_TYPE*)nullptr);
- return ret ? ret : Remove(elements._TailElements, handle, (SPECIFIC_TYPE*)nullptr);
- }
-
- /* ContainerMapList Helpers */
- // count functions
- template<class SPECIFIC_TYPE>
- size_t Count(ContainerMapList<SPECIFIC_TYPE> const& elements, SPECIFIC_TYPE* /*fake*/)
- {
- return elements._element.getSize();
- }
-
- template<class SPECIFIC_TYPE>
- size_t Count(ContainerMapList<TypeNull> const& /*elements*/, SPECIFIC_TYPE* /*fake*/)
- {
- return 0;
- }
-
- template<class SPECIFIC_TYPE, class T>
- size_t Count(ContainerMapList<T> const& /*elements*/, SPECIFIC_TYPE* /*fake*/)
- {
- return 0;
- }
-
- template<class SPECIFIC_TYPE, class T>
- size_t Count(ContainerMapList<TypeList<SPECIFIC_TYPE, T>> const& elements, SPECIFIC_TYPE* fake)
- {
- return Count(elements._elements, fake);
- }
-
- template<class SPECIFIC_TYPE, class H, class T>
- size_t Count(ContainerMapList<TypeList<H, T>> const& elements, SPECIFIC_TYPE* fake)
- {
- return Count(elements._TailElements, fake);
- }
-
- // non-const insert functions
- template<class SPECIFIC_TYPE>
- SPECIFIC_TYPE* Insert(ContainerMapList<SPECIFIC_TYPE>& elements, SPECIFIC_TYPE* obj)
- {
- //elements._element[hdl] = obj;
- obj->AddToGrid(elements._element);
- return obj;
- }
-
- template<class SPECIFIC_TYPE>
- SPECIFIC_TYPE* Insert(ContainerMapList<TypeNull>& /*elements*/, SPECIFIC_TYPE* /*obj*/)
- {
- return nullptr;
- }
-
- // this is a missed
- template<class SPECIFIC_TYPE, class T>
- SPECIFIC_TYPE* Insert(ContainerMapList<T>& /*elements*/, SPECIFIC_TYPE* /*obj*/)
- {
- return nullptr; // a missed
- }
-
- // Recursion
- template<class SPECIFIC_TYPE, class H, class T>
- SPECIFIC_TYPE* Insert(ContainerMapList<TypeList<H, T>>& elements, SPECIFIC_TYPE* obj)
- {
- SPECIFIC_TYPE* t = Insert(elements._elements, obj);
- return (t != nullptr ? t : Insert(elements._TailElements, obj));
- }
-
- //// non-const remove method
- //template<class SPECIFIC_TYPE> SPECIFIC_TYPE* Remove(ContainerMapList<SPECIFIC_TYPE> & /*elements*/, SPECIFIC_TYPE *obj)
- //{
- // obj->GetGridRef().unlink();
- // return obj;
- //}
-
- //template<class SPECIFIC_TYPE> SPECIFIC_TYPE* Remove(ContainerMapList<TypeNull> &/*elements*/, SPECIFIC_TYPE * /*obj*/)
- //{
- // return nullptr;
- //}
-
- //// this is a missed
- //template<class SPECIFIC_TYPE, class T> SPECIFIC_TYPE* Remove(ContainerMapList<T> &/*elements*/, SPECIFIC_TYPE * /*obj*/)
- //{
- // return nullptr; // a missed
- //}
-
- //template<class SPECIFIC_TYPE, class T, class H> SPECIFIC_TYPE* Remove(ContainerMapList<TypeList<H, T> > &elements, SPECIFIC_TYPE *obj)
- //{
- // // The head element is bad
- // SPECIFIC_TYPE* t = Remove(elements._elements, obj);
- // return (t != nullptr ? t : Remove(elements._TailElements, obj));
- //}
-}
-#endif
-
diff --git a/src/server/shared/Dynamic/TypeContainerVisitor.h b/src/server/shared/Dynamic/TypeContainerVisitor.h
deleted file mode 100644
index f15cfe66758..00000000000
--- a/src/server/shared/Dynamic/TypeContainerVisitor.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright (C) 2008-2017 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 TRINITY_TYPECONTAINERVISITOR_H
-#define TRINITY_TYPECONTAINERVISITOR_H
-
-/*
- * @class TypeContainerVisitor is implemented as a visitor pattern. It is
- * a visitor to the TypeContainerList or TypeContainerMapList. The visitor has
- * to overload its types as a visit method is called.
- */
-
-#include "Define.h"
-#include "Dynamic/TypeContainer.h"
-
-// forward declaration
-template<class T, class Y> class TypeContainerVisitor;
-
-// visitor helper
-template<class VISITOR, class TYPE_CONTAINER> void VisitorHelper(VISITOR &v, TYPE_CONTAINER &c)
-{
- v.Visit(c);
-}
-
-// terminate condition container map list
-template<class VISITOR> void VisitorHelper(VISITOR &/*v*/, ContainerMapList<TypeNull> &/*c*/) { }
-
-template<class VISITOR, class T> void VisitorHelper(VISITOR &v, ContainerMapList<T> &c)
-{
- v.Visit(c._element);
-}
-
-// recursion container map list
-template<class VISITOR, class H, class T> void VisitorHelper(VISITOR &v, ContainerMapList<TypeList<H, T> > &c)
-{
- VisitorHelper(v, c._elements);
- VisitorHelper(v, c._TailElements);
-}
-
-// for TypeMapContainer
-template<class VISITOR, class OBJECT_TYPES> void VisitorHelper(VISITOR &v, TypeMapContainer<OBJECT_TYPES> &c)
-{
- VisitorHelper(v, c.GetElements());
-}
-
-// TypeUnorderedMapContainer
-template<class VISITOR, class KEY_TYPE>
-void VisitorHelper(VISITOR& /*v*/, ContainerUnorderedMap<TypeNull, KEY_TYPE>& /*c*/) { }
-
-template<class VISITOR, class KEY_TYPE, class T>
-void VisitorHelper(VISITOR& v, ContainerUnorderedMap<T, KEY_TYPE>& c)
-{
- v.Visit(c._element);
-}
-
-template<class VISITOR, class KEY_TYPE, class H, class T>
-void VisitorHelper(VISITOR& v, ContainerUnorderedMap<TypeList<H, T>, KEY_TYPE>& c)
-{
- VisitorHelper(v, c._elements);
- VisitorHelper(v, c._TailElements);
-}
-
-template<class VISITOR, class OBJECT_TYPES, class KEY_TYPE>
-void VisitorHelper(VISITOR& v, TypeUnorderedMapContainer<OBJECT_TYPES, KEY_TYPE>& c)
-{
- VisitorHelper(v, c.GetElements());
-}
-
-template<class VISITOR, class TYPE_CONTAINER>
-class TypeContainerVisitor
-{
- public:
- TypeContainerVisitor(VISITOR &v) : i_visitor(v) { }
-
- void Visit(TYPE_CONTAINER &c)
- {
- VisitorHelper(i_visitor, c);
- }
-
- void Visit(const TYPE_CONTAINER &c) const
- {
- VisitorHelper(i_visitor, c);
- }
-
- private:
- VISITOR &i_visitor;
-};
-#endif
-