21 struct TMetricMapInitializer;
25 std::function<mrpt::maps::TMetricMapInitializer*(void)>;
42 const std::string& className)
const;
47 std::string, std::pair<MapDefCtorFunctor, MapCtorFromDefFunctor>>;
57 #define MAP_DEFINITION_START(_CLASS_NAME_) \ 61 struct TMapDefinitionBase : public mrpt::maps::TMetricMapInitializer \ 63 TMapDefinitionBase() \ 64 : TMetricMapInitializer(CLASS_ID(_CLASS_NAME_)) {} \ 66 struct TMapDefinition : public TMapDefinitionBase \ 68 #define MAP_DEFINITION_END(_CLASS_NAME_) \ 72 void loadFromConfigFile_map_specific( \ 73 const mrpt::config::CConfigFileBase& source, \ 74 const std::string& sectionNamePrefix) override; \ 75 void dumpToTextStream_map_specific(std::ostream& out) const override; \ 80 static mrpt::maps::TMetricMapInitializer* MapDefinition(); \ 83 static _CLASS_NAME_* CreateFromMapDefinition( \ 84 const mrpt::maps::TMetricMapInitializer& def); \ 85 static mrpt::maps::CMetricMap* internal_CreateFromMapDefinition( \ 86 const mrpt::maps::TMetricMapInitializer& def); \ 88 static const size_t m_private_map_register_id; \ 94 #define MAP_DEFINITION_REGISTER(_CLASSNAME_STRINGS, _CLASSNAME_WITH_NS) \ 95 const size_t _CLASSNAME_WITH_NS::m_private_map_register_id = \ 96 mrpt::maps::internal::TMetricMapTypesRegistry::Instance().doRegister( \ 97 _CLASSNAME_STRINGS, &_CLASSNAME_WITH_NS::MapDefinition, \ 98 &_CLASSNAME_WITH_NS::internal_CreateFromMapDefinition); \ 99 mrpt::maps::TMetricMapInitializer* _CLASSNAME_WITH_NS::MapDefinition() \ 101 return new _CLASSNAME_WITH_NS::TMapDefinition; \ 103 _CLASSNAME_WITH_NS* _CLASSNAME_WITH_NS::CreateFromMapDefinition( \ 104 const mrpt::maps::TMetricMapInitializer& def) \ 106 return dynamic_cast<_CLASSNAME_WITH_NS*>( \ 107 _CLASSNAME_WITH_NS::internal_CreateFromMapDefinition(def)); \ TMetricMapTypesRegistry()=default
Virtual base for specifying the kind and parameters of one map (normally, to be inserted into mrpt::m...
mrpt::maps::TMetricMapInitializer * factoryMapDefinition(const std::string &className) const
Return nullptr if not found.
mrpt::maps::CMetricMap * factoryMapObjectFromDefinition(const mrpt::maps::TMetricMapInitializer &mi) const
Return nullptr if not found.
static TMetricMapTypesRegistry & Instance()
const TListRegisteredMaps & getAllRegistered() const
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
Declares a virtual base class for all metric maps storage classes.
TListRegisteredMaps m_registry
std::function< mrpt::maps::CMetricMap *(const mrpt::maps::TMetricMapInitializer &)> MapCtorFromDefFunctor
size_t doRegister(const std::string &name, MapDefCtorFunctor func1, MapCtorFromDefFunctor func2)
Return the index of the class in the list (not important, just used as a trick to initialize static m...
Class factory & registry for map classes.
std::map< std::string, std::pair< MapDefCtorFunctor, MapCtorFromDefFunctor > > TListRegisteredMaps
std::function< mrpt::maps::TMetricMapInitializer *(void)> MapDefCtorFunctor