31 const auto pos = ret.rfind(
"::");
32 if (pos != std::string::npos) ret = ret.substr(pos + 2);
37 size_t TMetricMapTypesRegistry::doRegister(
41 std::vector<std::string> lstNames;
43 for (
const auto& lstName : lstNames)
45 const auto p = std::make_pair(func1, func2);
46 m_registry[lstName] = p;
51 return m_registry.size();
55 TMetricMapTypesRegistry::factoryMapDefinition(
56 const std::string& className)
const 59 auto it = m_registry.find(className);
61 if (it == m_registry.end()) it = m_registry.find(
stripNamespace(className));
63 if (it == m_registry.end())
return nullptr;
65 return (it->second.first)();
72 if (it == m_registry.end())
75 "[TMetricMapTypesRegistry] Error: Cannot create map of " 76 "unregistered map type '%s'",
Virtual base for specifying the kind and parameters of one map (normally, to be inserted into mrpt::m...
TMapGenericParams genericMapParams
Common params to all maps.
const mrpt::rtti::TRuntimeClassId::Ptr & getMetricMapClassType() const
Query the map type (C++ class), as set by the factory method MapDefinition()
void tokenize(const std::string &inString, const std::string &inDelimiters, OUT_CONTAINER &outTokens, bool skipBlankTokens=true) noexcept
Tokenizes a string according to a set of delimiting characters.
mrpt::maps::TMapGenericParams genericMapParams
Common params for all maps: These are automatically set in TMetricMapTypesRegistry::factoryMapObjectF...
#define ASSERT_(f)
Defines an assertion mechanism.
std::vector< string > names
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
Declares a virtual base class for all metric maps storage classes.
std::function< mrpt::maps::CMetricMap *(const mrpt::maps::TMetricMapInitializer &)> MapCtorFromDefFunctor
Class factory & registry for map classes.
#define THROW_EXCEPTION_FMT(_FORMAT_STRING,...)
std::function< mrpt::maps::TMetricMapInitializer *(void)> MapDefCtorFunctor
static std::string stripNamespace(const std::string &n)