15#include <ext/typeinfo>
28 template <
class Params >
29 class SetEntryImpl :
public Entry {
31 std::shared_ptr < abstraction::OperationAbstraction >
getAbstraction ( )
const override;
39 template <
class ParamTypes >
41 std::string param = ext::to_string < typename std::decay < ParamTypes >::type > ( );
45 static void registerSet ( std::string param, std::unique_ptr < Entry > entry );
47 template <
class ParamTypes >
49 registerSet ( std::move ( param ), std::make_unique < SetEntryImpl < ParamTypes > > ( ) );
52 template <
class ParamTypes >
54 std::string param = ext::to_string < typename std::decay < ParamTypes >::type > ( );
55 registerSet < ParamTypes > ( std::move ( param ) );
60 static std::shared_ptr < abstraction::OperationAbstraction >
getAbstraction (
const std::string &
container,
const std::string & param );
73template <
class Param >
74std::shared_ptr < abstraction::OperationAbstraction > ContainerRegistry::SetEntryImpl < Param >::getAbstraction ( )
const {
75 return std::make_shared < abstraction::SetAbstraction < Param > > ( );
Definition: BaseRegistryEntry.hpp:12
Definition: ContainerRegistry.hpp:24
Definition: ContainerRegistry.hpp:22
static ext::set< std::string > list()
Definition: ContainerRegistry.cpp:74
static ext::set< std::string > listOverloads(const std::string &container)
Definition: ContainerRegistry.cpp:62
static std::shared_ptr< abstraction::OperationAbstraction > getAbstraction(const std::string &container, const std::string ¶m)
Definition: ContainerRegistry.cpp:46
static void registerSet(std::string param)
Definition: ContainerRegistry.hpp:48
static bool hasAbstraction(const std::string &container)
Definition: ContainerRegistry.cpp:42
static void registerSet()
Definition: ContainerRegistry.hpp:53
static void unregisterSet()
Definition: ContainerRegistry.hpp:40
Class extending the map class from the standard library. Original reason is to allow printing of the ...
Definition: map.hpp:48
Definition: AlgorithmAbstraction.hpp:11
Definition: ContainerFromStringLexer.cpp:8