15 namespace io_handlers {
21 using ParserCreationFcn = std::function<Parser*(const Projector&, const io::Configuration&)>;
64 void registerParser(
const std::string& strategy,
const std::string& extension,
77 using WriterCreationFcn = std::function<Writer*(const Projector&, const io::Configuration&)>;
108 static std::vector<std::string> availableWriters();
116 template <
typename T>
120 void registerWriter(
const std::string& strategy,
const std::string& extension,
138 static_assert(!
utils::strequal(T::name(),
""),
"You did not overload the name() function!");
141 return new T(projector, config);
156 static_assert(!
utils::strequal(T::name(),
""),
"You did not overload the name() function!");
159 return new T(projector, config);
static Parser::Ptr createFromExtension(const std::string &extension, const Projector &projector, const io::Configuration &config=io::Configuration())
creates a matching parser for the given file extension
Factory class for all suppored lanelet map parsers.
std::function< Parser *(const Projector &, const io::Configuration &)> ParserCreationFcn
static std::vector< std::string > availableParsers()
returns all available parsers as vector
std::map< std::string, WriterCreationFcn > extensionRegistry_
std::map< std::string, ParserCreationFcn > extensionRegistry_
std::function< Writer *(const Projector &, const io::Configuration &)> WriterCreationFcn
Base object for parsers. To create a new parser, you have to do the following steps: ...
static WriterFactory & instance()
Registration object for a parser. Needs to be instanciated as static object once to register a parser...
std::map< std::string, Attribute > Configuration
constexpr bool strequal(char const *lhs, char const *rhs)
std::map< std::string, ParserCreationFcn > registry_
static ParserFactory & instance()
Registration object for a writer. Needs to be instanciated as static object once to register a writer...
std::shared_ptr< Writer > Ptr
Factory class for all supported lanelet map writers.
std::shared_ptr< Parser > Ptr
std::map< std::string, WriterCreationFcn > registry_
static Parser::Ptr create(const std::string &parserName, const Projector &projector, const io::Configuration &config=io::Configuration())
creates a parser that matches the given name.
static std::vector< std::string > availableExtensions()
returns all available extensions as vector
Base object for writers. To create a new writer, you have to do the following steps: ...
void registerParser(const std::string &strategy, const std::string &extension, const ParserCreationFcn &factoryFunction)
void registerWriter(const std::string &strategy, const std::string &extension, const WriterCreationFcn &factoryFunction)