7#include <unordered_map> 
   42    template<
typename ModelType>
 
   54    template<
typename ModelType>
 
   61    template<
typename ModelType>
 
   68    template <
typename ModelCreator>
 
   69    void registerModel(ModelCreator&& creator, std::string 
const& category = 
"Nodes")
 
 
   75    template <
typename ModelCreator>
 
   87    std::unique_ptr<WtNodeDataModel>
create(std::string 
const& modelName);
 
  107    template <
typename T, 
typename = 
void>
 
  110    template <
typename T>
 
  114    template <
typename ModelType>
 
  117        return ModelType::Name();
 
 
  120    template<
typename ModelType>
 
  123        return creator()->name();
 
 
  126    template <
typename T>
 
  130        static_assert(!std::is_same<T, T>::value,
 
  131            "The ModelCreator must return a std::unique_ptr<T>, where T " 
  132            "inherits from WtNodeDataModel");
 
 
  135    template <
typename T>
 
  138        static_assert(std::is_base_of<WtNodeDataModel, T>::value,
 
  139            "The ModelCreator must return a std::unique_ptr<T>, where T " 
  140            "inherits from WtNodeDataModel");
 
 
  144    template <
typename CreatorResult>
 
 
std::shared_ptr< WtNodeData > SharedNodeData
 
std::pair< NodeDataType, NodeDataType > TypeConverterId
 
std::function< SharedNodeData(SharedNodeData)> TypeConverter
 
bool operator<(NodeDataType const &d1, NodeDataType const &d2)
 
WtDataModelRegistry(WtDataModelRegistry &&)=default
 
CategoriesSet _categories
 
void registerModel(ModelCreator &&creator, std::string const &category="Nodes")
 
void registerModel(std::string const &category, ModelCreator &&creator)
 
std::set< std::string > CategoriesSet
 
std::unordered_map< std::string, RegistryItemCreator > RegisteredModelCreatorsMap
 
static std::string computeName(std::true_type, RegistryItemCreator const &)
 
CategoriesSet const & categories() const
 
WtDataModelRegistry & operator=(WtDataModelRegistry const &)=delete
 
void registerModel(std::string const &category, RegistryItemCreator creator)
 
void registerTypeConverter(TypeConverterId const &id, TypeConverter typeConverter)
 
WtDataModelRegistry & operator=(WtDataModelRegistry &&)=default
 
std::unordered_map< std::string, std::string > RegisteredModelsCategoryMap
 
std::unique_ptr< WtNodeDataModel > RegistryItemPtr
 
RegisteredModelsCategoryMap const & registeredModelsCategoryAssociation() const
 
WtDataModelRegistry()=default
 
typename UnwrapUniquePtr< CreatorResult >::type compute_model_type_t
 
std::map< TypeConverterId, TypeConverter > RegisteredTypeConvertersMap
 
WtDataModelRegistry(WtDataModelRegistry const &)=delete
 
void registerModel(std::string const &category="Nodes")
 
RegisteredModelsCategoryMap _registeredModelsCategory
 
TypeConverter getTypeConverter(NodeDataType const &d1, NodeDataType const &d2) const
 
RegisteredModelCreatorsMap _registeredItemCreators
 
std::unique_ptr< WtNodeDataModel > create(std::string const &modelName)
 
~WtDataModelRegistry()=default
 
std::function< RegistryItemPtr()> RegistryItemCreator
 
RegisteredModelCreatorsMap const & registeredModelCreators() const
 
RegisteredTypeConvertersMap _registeredTypeConverters
 
void registerModel(RegistryItemCreator creator, std::string const &category="Nodes")
 
static std::string computeName(std::false_type, RegistryItemCreator const &creator)