diff options
Diffstat (limited to 'src/core/Node.hpp')
-rw-r--r-- | src/core/Node.hpp | 43 |
1 files changed, 19 insertions, 24 deletions
diff --git a/src/core/Node.hpp b/src/core/Node.hpp index e0d14a8..4bc95be 100644 --- a/src/core/Node.hpp +++ b/src/core/Node.hpp @@ -25,13 +25,11 @@ #include <vector> #include <unordered_set> -#include "Managed.hpp" -#include "ManagedContainers.hpp" +#include <core/managed/Managed.hpp> +#include <core/managed/ManagedContainer.hpp> namespace ousia { -// TODO: Let Manager handle associated data - /* Forward declarations */ class Node; class Event; @@ -514,33 +512,30 @@ public: bool triggerEvent(Event &event, bool fromChild = false); }; -template <class T, class Collection> -class NodeGenericList : public ManagedGenericList<T, Collection> { -protected: - // TODO: Override addElement, deleteElement once this is necessary -public: - using ManagedGenericList<T, Collection>::ManagedGenericList; -}; +// TODO: Use a different listener here for updating name maps -template <class K, class T, class Collection> -class NodeGenericMap : public ManagedGenericMap<K, T, Collection> { -protected: - // TODO: Override addElement, deleteElement once this is necessary +template <class T, class Listener = DefaultListener<Handle<T>>> +class NodeVector + : public ManagedGenericList<T, std::vector<Handle<T>>, + ListAccessor<Handle<T>>, Listener> { public: - using ManagedGenericMap<K, T, std::vector<Owned<T>>>::ManagedGenericMap; + using Base = ManagedGenericList<T, std::vector<Handle<T>>, + ListAccessor<Handle<T>>, Listener>; + using Base::ManagedGenericList; }; -template <class T> -class NodeVector : public NodeGenericList<T, std::vector<Owned<T>>> { +template <class K, class T, + class Listener = DefaultListener<std::pair<K, Handle<T>>>> +class NodeMap + : public ManagedGenericMap<K, T, std::map<K, Handle<T>>, + MapAccessor<std::pair<K, Handle<T>>>, Listener> { public: - using NodeGenericList<T, std::vector<Owned<T>>>::NodeGenericList; + using Base = + ManagedGenericMap<K, T, std::map<K, Handle<T>>, + MapAccessor<std::pair<K, Handle<T>>>, Listener>; + using Base::ManagedGenericMap; }; -template <class K, class T> -class NodeMap : public NodeGenericMap<K, T, std::map<K, Owned<T>>> { -public: - using NodeGenericMap<K, T, std::map<K, Owned<T>>>::NodeGenericMap; -}; } |