10 #include <mrpt/core/format.h> 26 using namespace mvsim;
34 static bool done =
false;
60 sName = string(class_name);
64 if (0 != strcmp(root->
name(),
"element"))
65 throw runtime_error(mrpt::format(
66 "[WorldElementBase::factory] XML root element is '%s' " 67 "('<element>' expected)",
72 if (!attrib_class || !attrib_class->
value())
74 "[WorldElementBase::factory] Missing mandatory attribute " 75 "'class' in node <element>");
77 sName = string(attrib_class->
value());
82 throw runtime_error(mrpt::format(
83 "[WorldElementBase::factory] Unknown world element type '%s'",
84 root ? root->
name() :
"(root=nullptr)"));
This file contains rapidxml parser and DOM implementation.
static Ptr factory(World *parent, const rapidxml::xml_node< char > *xml_node, const char *class_name=nullptr)
TClassFactory_worldElements classFactory_worldElements
#define REGISTER_WORLD_ELEMENT(TEXTUAL_NAME, CLASS_NAME)
std::shared_ptr< WorldElementBase > Ptr
Ptr create(const std::string &class_name, ARG1 a1) const
void register_all_world_elements()
This file contains rapidxml printer implementation.
xml_attribute< Ch > * first_attribute(const Ch *name=0, std::size_t name_size=0, bool case_sensitive=true) const