Main MRPT website > C++ reference for MRPT 1.9.9
CParameterizedTrajectoryGenerator_factory.cpp
Go to the documentation of this file.
1 /* +------------------------------------------------------------------------+
2  | Mobile Robot Programming Toolkit (MRPT) |
3  | http://www.mrpt.org/ |
4  | |
5  | Copyright (c) 2005-2018, Individual contributors, see AUTHORS file |
6  | See: http://www.mrpt.org/Authors - All rights reserved. |
7  | Released under BSD License. See details in http://www.mrpt.org/License |
8  +------------------------------------------------------------------------+ */
9 
10 #include "nav-precomp.h" // Precomp header
11 
15 
16 using namespace mrpt::nav;
17 
18 /*---------------------------------------------------------------
19  Class factory
20  ---------------------------------------------------------------*/
22  const std::string& ptgClassName_, const mrpt::config::CConfigFileBase& cfg,
23  const std::string& sSection, const std::string& sKeyPrefix)
24 {
26 
28 
29  // Special names for backwards compatibility with MRPT < 1.5.0
30  std::string ptgClassName = mrpt::system::trim(ptgClassName_);
31  if (ptgClassName.size() == 1)
32  {
33  switch (ptgClassName[0])
34  {
35  case '1':
36  ptgClassName = "CPTG_DiffDrive_C";
37  break;
38  case '2':
39  ptgClassName = "CPTG_DiffDrive_alpha";
40  break;
41  case '3':
42  ptgClassName = "CPTG_DiffDrive_CCS";
43  break;
44  case '4':
45  ptgClassName = "CPTG_DiffDrive_CC";
46  break;
47  case '5':
48  ptgClassName = "CPTG_DiffDrive_CS";
49  break;
50  };
51  }
52 
53  // Factory:
54  const mrpt::rtti::TRuntimeClassId* classId =
55  mrpt::rtti::findRegisteredClass(ptgClassName);
56  if (!classId)
57  {
59  "[CreatePTG] No PTG named `%s` is registered!",
60  ptgClassName.c_str());
61  }
62 
64  dynamic_cast<CParameterizedTrajectoryGenerator*>(
65  classId->createObject());
66  if (!ptg)
67  {
69  "[CreatePTG] Object of type `%s` seems not to be a PTG!",
70  ptgClassName.c_str());
71  }
72 
73  // Wrapper to transparently add prefixes to all config keys:
75  cfp.bind(cfg);
76  cfp.setPrefixes("", sKeyPrefix);
77 
78  ptg->loadFromConfigFile(cfp, sSection);
79  return ptg;
80  MRPT_END
81 }
nav-precomp.h
CParameterizedTrajectoryGenerator.h
mrpt::rtti::TRuntimeClassId
A structure that holds runtime class type information.
Definition: CObject.h:30
string_utils.h
mrpt::rtti::registerAllPendingClasses
void registerAllPendingClasses()
Register all pending classes - to be called just before de-serializing an object, for example.
Definition: internal_class_registry.cpp:133
mrpt::nav
Definition: CAbstractHolonomicReactiveMethod.h:23
mrpt::config::CConfigFilePrefixer::setPrefixes
void setPrefixes(const std::string &prefix_sections, const std::string &prefix_keys)
Change the prefix for sections and keys.
Definition: CConfigFilePrefixer.cpp:36
THROW_EXCEPTION_FMT
#define THROW_EXCEPTION_FMT(_FORMAT_STRING,...)
Definition: exceptions.h:43
mrpt::config::CConfigFilePrefixer::bind
void bind(const CConfigFileBase &o)
Make this object to wrap the given existing CConfigFileBase object.
Definition: CConfigFilePrefixer.cpp:31
CConfigFilePrefixer.h
MRPT_START
#define MRPT_START
Definition: exceptions.h:262
mrpt::config::CConfigFileBase
This class allows loading and storing values and vectors of different types from a configuration text...
Definition: config/CConfigFileBase.h:44
mrpt::config::CConfigFilePrefixer
A wrapper for other CConfigFileBase-based objects that prefixes a given token to every key and/or sec...
Definition: CConfigFilePrefixer.h:39
mrpt::rtti::TRuntimeClassId::createObject
mrpt::rtti::CObject * createObject() const
Definition: CObject.cpp:79
mrpt::nav::CParameterizedTrajectoryGenerator::CreatePTG
static CParameterizedTrajectoryGenerator * CreatePTG(const std::string &ptgClassName, const mrpt::config::CConfigFileBase &cfg, const std::string &sSection, const std::string &sKeyPrefix)
The class factory for creating a PTG from a list of parameters in a section of a given config file (p...
Definition: CParameterizedTrajectoryGenerator_factory.cpp:21
MRPT_END
#define MRPT_END
Definition: exceptions.h:266
string
GLsizei const GLchar ** string
Definition: glext.h:4101
mrpt::system::trim
std::string trim(const std::string &str)
Removes leading and trailing spaces.
Definition: string_utils.cpp:270
mrpt::nav::CParameterizedTrajectoryGenerator
This is the base class for any user-defined PTG.
Definition: CParameterizedTrajectoryGenerator.h:76
mrpt::nav::CParameterizedTrajectoryGenerator::loadFromConfigFile
virtual void loadFromConfigFile(const mrpt::config::CConfigFileBase &cfg, const std::string &sSection) override
Parameters accepted by this base class:
Definition: CParameterizedTrajectoryGenerator.cpp:58
mrpt::rtti::findRegisteredClass
const TRuntimeClassId * findRegisteredClass(const std::string &className)
Return info about a given class by its name, or nullptr if the class is not registered.
Definition: internal_class_registry.cpp:202



Page generated by Doxygen 1.8.17 for MRPT 1.9.9 Git: ad3a9d8ae Tue May 1 23:10:22 2018 -0700 at miƩ 12 jul 2023 10:03:34 CEST