diff --git a/alib2common/src/core/components/setComponents.hpp b/alib2common/src/core/components/setComponents.hpp index f24dd9cb287edf55b45df0935f5dd3af7e0e864e..356e94f2c16bacf586309cafd9efac34ce3a4488 100644 --- a/alib2common/src/core/components/setComponents.hpp +++ b/alib2common/src/core/components/setComponents.hpp @@ -232,9 +232,33 @@ public: } static void registerComponent ( ) { - std::array < std::string, 0 > names; - ComponentType & ( Derived::* method ) ( ) = & SetComponent < Derived, ComponentType, typename ComponentType::value_type, ComponentName >::get; - abstraction::AlgorithmRegistry::registerMethod < ComponentName > ( method, "get", names ); + std::array < std::string, 0 > emptyNames; + std::array < std::string, 1 > elementNames = { { "element" } }; + std::array < std::string, 1 > dataNames = { { "data" } }; + + ComponentType & ( Derived::* getMethod ) ( ) = & SetComponent < Derived, ComponentType, typename ComponentType::value_type, ComponentName >::get; + abstraction::AlgorithmRegistry::registerMethod < ComponentName > ( getMethod, "get", emptyNames ); + + const ComponentType & ( Derived::* constGetMethod ) ( ) const = & SetComponent < Derived, ComponentType, typename ComponentType::value_type, ComponentName >::get; + abstraction::AlgorithmRegistry::registerMethod < ComponentName > ( constGetMethod, "get", emptyNames ); + + void ( Derived::* setMethod ) ( ComponentType ) = & SetComponent < Derived, ComponentType, typename ComponentType::value_type, ComponentName >::set; + abstraction::AlgorithmRegistry::registerMethod < ComponentName > ( setMethod, "set", dataNames ); + + bool ( Derived::* addElement ) ( typename ComponentType::value_type ) = & SetComponent < Derived, ComponentType, typename ComponentType::value_type, ComponentName >::add; + abstraction::AlgorithmRegistry::registerMethod < ComponentName > ( addElement, "add", elementNames ); + + void ( Derived::* addSet ) ( ComponentType ) = & SetComponent < Derived, ComponentType, typename ComponentType::value_type, ComponentName >::add; + abstraction::AlgorithmRegistry::registerMethod < ComponentName > ( addSet, "add", dataNames ); + + bool ( Derived::* removeElement ) ( const typename ComponentType::value_type & ) = & SetComponent < Derived, ComponentType, typename ComponentType::value_type, ComponentName >::remove; + abstraction::AlgorithmRegistry::registerMethod < ComponentName > ( removeElement, "remove", elementNames ); + + void ( Derived::* removeSet ) ( const ComponentType & ) = & SetComponent < Derived, ComponentType, typename ComponentType::value_type, ComponentName >::remove; + abstraction::AlgorithmRegistry::registerMethod < ComponentName > ( removeSet, "remove", dataNames ); + + bool ( Derived::* emptyMethod ) ( ) const = & SetComponent < Derived, ComponentType, typename ComponentType::value_type, ComponentName >::empty; + abstraction::AlgorithmRegistry::registerMethod < ComponentName > ( emptyMethod, "empty", emptyNames ); } };