Main MRPT website > C++ reference for MRPT 1.4.0
List of all members | Public Member Functions | Protected Member Functions | Private Attributes
mrpt::utils::CConfigFilePrefixer Class Reference

Detailed Description

A wrapper for other CConfigFileBase-based objects that prefixes a given token to every key and/or section.

If, for example, your code expect:

[params1]
foo = 34.0
bar = /dev/ttyUSB0

Using this class with key entries prefix "s1_" will enable the same existing code to transparently parse this file content:

[params1]
s1_foo = 34.0
s1_bar = /dev/ttyUSB0
See also
CConfigFileBase

Definition at line 36 of file CConfigFilePrefixer.h.

#include <mrpt/utils/CConfigFilePrefixer.h>

Inheritance diagram for mrpt::utils::CConfigFilePrefixer:
Inheritance graph

Public Member Functions

 CConfigFilePrefixer ()
 Unbound constructor: must bind this object to CConfigFileBase before usage with bind() and setPrefixes()
 
 CConfigFilePrefixer (const CConfigFileBase &o, const std::string &prefix_sections, const std::string &prefix_keys)
 Construct and bind to (wrap) a given object with given prefix texts.
 
void bind (const CConfigFileBase &o)
 Make this object to wrap the given existing CConfigFileBase object.
 
void setPrefixes (const std::string &prefix_sections, const std::string &prefix_keys)
 Change the prefix for sections and keys.
 
std::string getSectionPrefix () const
 
std::string getKeyPrefix () const
 
CConfigFileBasegetBoundConfigFileBase () const
 Returns the currently-bounded config source, or NULL if none.
 
virtual ~CConfigFilePrefixer ()
 
void getAllSections (vector_string &sections) const MRPT_OVERRIDE
 Returns a list with all the section names.
 
void getAllKeys (const std::string &section, vector_string &keys) const MRPT_OVERRIDE
 Returs a list with all the keys into a section.
 
bool sectionExists (const std::string &section_name) const
 Checks if a given section exists (name is case insensitive)
 
double read_double (const std::string &section, const std::string &name, double defaultValue, bool failIfNotFound=false) const
 Reads a configuration parameter of type "double".
 
float read_float (const std::string &section, const std::string &name, float defaultValue, bool failIfNotFound=false) const
 Reads a configuration parameter of type "float".
 
bool read_bool (const std::string &section, const std::string &name, bool defaultValue, bool failIfNotFound=false) const
 Reads a configuration parameter of type "bool", codified as "1"/"0" or "true"/"false" or "yes"/"no" for true/false, repectively.
 
int read_int (const std::string &section, const std::string &name, int defaultValue, bool failIfNotFound=false) const
 Reads a configuration parameter of type "int".
 
uint64_t read_uint64_t (const std::string &section, const std::string &name, uint64_t defaultValue, bool failIfNotFound=false) const
 Reads a configuration parameter of type "uint64_t": As in all other methods, the numeric value can be in decimal or hexadecimal with the prefix "0x".
 
std::string read_string (const std::string &section, const std::string &name, const std::string &defaultValue, bool failIfNotFound=false) const
 Reads a configuration parameter of type "string".
 
std::string read_string_first_word (const std::string &section, const std::string &name, const std::string &defaultValue, bool failIfNotFound=false) const
 Reads a configuration parameter of type "string", and keeps only the first word (this can be used to eliminate possible comments at the end of the line)
 
template<class VECTOR_TYPE >
void read_vector (const std::string &section, const std::string &name, const VECTOR_TYPE &defaultValue, VECTOR_TYPE &outValues, bool failIfNotFound=false) const
 Reads a configuration parameter of type vector, stored in the file as a string: "[v1 v2 v3 ... ]", where spaces could also be commas.
 
template<class MATRIX_TYPE >
void read_matrix (const std::string &section, const std::string &name, MATRIX_TYPE &outMatrix, const MATRIX_TYPE &defaultMatrix=MATRIX_TYPE(), bool failIfNotFound=false) const
 Reads a configuration parameter as a matrix written in a matlab-like format - for example: "[2 3 4 ; 7 8 9]" This template method can be instantiated for matrices of the types: int, long, unsinged int, unsigned long, float, double, long double.
 
template<typename ENUMTYPE >
ENUMTYPE read_enum (const std::string &section, const std::string &name, const ENUMTYPE &defaultValue, bool failIfNotFound=false) const
 Reads an "enum" value, where the value in the config file can be either a numerical value or the symbolic name, for example: In the code:
 
Save a configuration parameter. Optionally pads with spaces up to the desired width in number of characters (-1: no fill), and add a final comment field at the end of the line (a "// " prefix is automatically inserted).
void write (const std::string &section, const std::string &name, double value, const int name_padding_width=-1, const int value_padding_width=-1, const std::string &comment=std::string())
 
void write (const std::string &section, const std::string &name, float value, const int name_padding_width=-1, const int value_padding_width=-1, const std::string &comment=std::string())
 
void write (const std::string &section, const std::string &name, int value, const int name_padding_width=-1, const int value_padding_width=-1, const std::string &comment=std::string())
 
void write (const std::string &section, const std::string &name, uint32_t value, const int name_padding_width=-1, const int value_padding_width=-1, const std::string &comment=std::string())
 
void write (const std::string &section, const std::string &name, uint64_t value, const int name_padding_width=-1, const int value_padding_width=-1, const std::string &comment=std::string())
 
void write (const std::string &section, const std::string &name, const std::string &value, const int name_padding_width=-1, const int value_padding_width=-1, const std::string &comment=std::string())
 
void write (const std::string &section, const std::string &name, const std::vector< int > &value, const int name_padding_width=-1, const int value_padding_width=-1, const std::string &comment=std::string())
 
void write (const std::string &section, const std::string &name, const std::vector< unsigned int > &value, const int name_padding_width=-1, const int value_padding_width=-1, const std::string &comment=std::string())
 
void write (const std::string &section, const std::string &name, const std::vector< float > &value, const int name_padding_width=-1, const int value_padding_width=-1, const std::string &comment=std::string())
 
void write (const std::string &section, const std::string &name, const std::vector< double > &value, const int name_padding_width=-1, const int value_padding_width=-1, const std::string &comment=std::string())
 
void write (const std::string &section, const std::string &name, const std::vector< bool > &value, const int name_padding_width=-1, const int value_padding_width=-1, const std::string &comment=std::string())
 

Protected Member Functions

void writeString (const std::string &section, const std::string &name, const std::string &str) MRPT_OVERRIDE
 A virtual method to write a generic string.
 
std::string readString (const std::string &section, const std::string &name, const std::string &defaultStr, bool failIfNotFound=false) const MRPT_OVERRIDE
 A virtual method to read a generic string.
 
void writeString (const std::string &section, const std::string &name, const std::string &str, const int name_padding_width, const int value_padding_width, const std::string &comment)
 Write a generic string with optional padding and a comment field ("// ...") at the end of the line.
 

Private Attributes

CConfigFileBasem_bound_object
 The object we are wrapping.
 
std::string m_prefix_sections
 
std::string m_prefix_keys
 

Constructor & Destructor Documentation

◆ CConfigFilePrefixer() [1/2]

mrpt::utils::CConfigFilePrefixer::CConfigFilePrefixer ( )

Unbound constructor: must bind this object to CConfigFileBase before usage with bind() and setPrefixes()

◆ CConfigFilePrefixer() [2/2]

mrpt::utils::CConfigFilePrefixer::CConfigFilePrefixer ( const CConfigFileBase o,
const std::string &  prefix_sections,
const std::string &  prefix_keys 
)

Construct and bind to (wrap) a given object with given prefix texts.

◆ ~CConfigFilePrefixer()

virtual mrpt::utils::CConfigFilePrefixer::~CConfigFilePrefixer ( )
virtual

Member Function Documentation

◆ bind()

void mrpt::utils::CConfigFilePrefixer::bind ( const CConfigFileBase o)

Make this object to wrap the given existing CConfigFileBase object.

Can be changed at any moment after construction

◆ getAllKeys()

void mrpt::utils::CConfigFilePrefixer::getAllKeys ( const std::string &  section,
vector_string keys 
) const
virtual

Returs a list with all the keys into a section.

Implements mrpt::utils::CConfigFileBase.

◆ getAllSections()

void mrpt::utils::CConfigFilePrefixer::getAllSections ( vector_string sections) const
virtual

Returns a list with all the section names.

Implements mrpt::utils::CConfigFileBase.

◆ getBoundConfigFileBase()

CConfigFileBase * mrpt::utils::CConfigFilePrefixer::getBoundConfigFileBase ( ) const

Returns the currently-bounded config source, or NULL if none.

◆ getKeyPrefix()

std::string mrpt::utils::CConfigFilePrefixer::getKeyPrefix ( ) const

◆ getSectionPrefix()

std::string mrpt::utils::CConfigFilePrefixer::getSectionPrefix ( ) const

◆ read_bool()

bool mrpt::utils::CConfigFileBase::read_bool ( const std::string &  section,
const std::string &  name,
bool  defaultValue,
bool  failIfNotFound = false 
) const
inherited

Reads a configuration parameter of type "bool", codified as "1"/"0" or "true"/"false" or "yes"/"no" for true/false, repectively.

Exceptions
std::exceptionIf the key name is not found and "failIfNotFound" is true. Otherwise the "defaultValue" is returned.

Referenced by mrpt::pbmap::config_heuristics::load_params().

◆ read_double()

double mrpt::utils::CConfigFileBase::read_double ( const std::string &  section,
const std::string &  name,
double  defaultValue,
bool  failIfNotFound = false 
) const
inherited

Reads a configuration parameter of type "double".

Exceptions
std::exceptionIf the key name is not found and "failIfNotFound" is true. Otherwise the "defaultValue" is returned.

◆ read_enum()

template<typename ENUMTYPE >
ENUMTYPE mrpt::utils::CConfigFileBase::read_enum ( const std::string &  section,
const std::string &  name,
const ENUMTYPE &  defaultValue,
bool  failIfNotFound = false 
) const
inlineinherited

Reads an "enum" value, where the value in the config file can be either a numerical value or the symbolic name, for example: In the code:

enum my_type_t { type_foo=0, type_bar };

In the config file:

[section]
type = type_bar // Use the symbolic name, or
type = 1 // use the numerical value (both lines will be equivalent)

Which can be loaded with:

cfgfile.read_enum<my_type_t>("section","type", type_foo );
Note
For an enum type to work with this template it is required that it defines a specialization of mrpt::utils::TEnumType

Definition at line 194 of file CConfigFileBase.h.

References mrpt::format(), MRPT_END, MRPT_START, mrpt::utils::TEnumType< ENUMTYPE >::name2value(), and THROW_EXCEPTION.

◆ read_float()

float mrpt::utils::CConfigFileBase::read_float ( const std::string &  section,
const std::string &  name,
float  defaultValue,
bool  failIfNotFound = false 
) const
inherited

Reads a configuration parameter of type "float".

Exceptions
std::exceptionIf the key name is not found and "failIfNotFound" is true. Otherwise the "defaultValue" is returned.

Referenced by mrpt::pbmap::config_heuristics::load_params().

◆ read_int()

int mrpt::utils::CConfigFileBase::read_int ( const std::string &  section,
const std::string &  name,
int  defaultValue,
bool  failIfNotFound = false 
) const
inherited

Reads a configuration parameter of type "int".

Exceptions
std::exceptionIf the key name is not found and "failIfNotFound" is true. Otherwise the "defaultValue" is returned.

Referenced by mrpt::pbmap::config_heuristics::load_params().

◆ read_matrix()

template<class MATRIX_TYPE >
void mrpt::utils::CConfigFileBase::read_matrix ( const std::string &  section,
const std::string &  name,
MATRIX_TYPE &  outMatrix,
const MATRIX_TYPE &  defaultMatrix = MATRIX_TYPE(),
bool  failIfNotFound = false 
) const
inlineinherited

Reads a configuration parameter as a matrix written in a matlab-like format - for example: "[2 3 4 ; 7 8 9]" This template method can be instantiated for matrices of the types: int, long, unsinged int, unsigned long, float, double, long double.

Exceptions
std::exceptionIf the key name is not found and "failIfNotFound" is true. Otherwise the "defaultValue" is returned.

Definition at line 157 of file CConfigFileBase.h.

References THROW_EXCEPTION_CUSTOM_MSG1.

◆ read_string()

std::string mrpt::utils::CConfigFileBase::read_string ( const std::string &  section,
const std::string &  name,
const std::string &  defaultValue,
bool  failIfNotFound = false 
) const
inherited

Reads a configuration parameter of type "string".

Exceptions
std::exceptionIf the key name is not found and "failIfNotFound" is true. Otherwise the "defaultValue" is returned.

Referenced by mrpt::pbmap::config_heuristics::load_params().

◆ read_string_first_word()

std::string mrpt::utils::CConfigFileBase::read_string_first_word ( const std::string &  section,
const std::string &  name,
const std::string &  defaultValue,
bool  failIfNotFound = false 
) const
inherited

Reads a configuration parameter of type "string", and keeps only the first word (this can be used to eliminate possible comments at the end of the line)

Exceptions
std::exceptionIf the key name is not found and "failIfNotFound" is true. Otherwise the "defaultValue" is returned.

◆ read_uint64_t()

uint64_t mrpt::utils::CConfigFileBase::read_uint64_t ( const std::string &  section,
const std::string &  name,
uint64_t  defaultValue,
bool  failIfNotFound = false 
) const
inherited

Reads a configuration parameter of type "uint64_t": As in all other methods, the numeric value can be in decimal or hexadecimal with the prefix "0x".

Exceptions
std::exceptionIf the key name is not found and "failIfNotFound" is true. Otherwise the "defaultValue" is returned.

◆ read_vector()

template<class VECTOR_TYPE >
void mrpt::utils::CConfigFileBase::read_vector ( const std::string &  section,
const std::string &  name,
const VECTOR_TYPE &  defaultValue,
VECTOR_TYPE &  outValues,
bool  failIfNotFound = false 
) const
inlineinherited

Reads a configuration parameter of type vector, stored in the file as a string: "[v1 v2 v3 ... ]", where spaces could also be commas.

Exceptions
std::exceptionIf the key name is not found and "failIfNotFound" is true. Otherwise the "defaultValue" is returned.

Definition at line 122 of file CConfigFileBase.h.

References mrpt::system::tokenize().

◆ readString()

std::string mrpt::utils::CConfigFilePrefixer::readString ( const std::string &  section,
const std::string &  name,
const std::string &  defaultStr,
bool  failIfNotFound = false 
) const
protectedvirtual

A virtual method to read a generic string.

Exceptions
std::exceptionIf the key name is not found and "failIfNotFound" is true. Otherwise the "defaultValue" is returned.

Implements mrpt::utils::CConfigFileBase.

◆ sectionExists()

bool mrpt::utils::CConfigFileBase::sectionExists ( const std::string &  section_name) const
inherited

Checks if a given section exists (name is case insensitive)

◆ setPrefixes()

void mrpt::utils::CConfigFilePrefixer::setPrefixes ( const std::string &  prefix_sections,
const std::string &  prefix_keys 
)

Change the prefix for sections and keys.

Can be called at any moment.

◆ write() [1/11]

void mrpt::utils::CConfigFileBase::write ( const std::string &  section,
const std::string &  name,
const std::string &  value,
const int  name_padding_width = -1,
const int  value_padding_width = -1,
const std::string &  comment = std::string() 
)
inherited

◆ write() [2/11]

void mrpt::utils::CConfigFileBase::write ( const std::string &  section,
const std::string &  name,
const std::vector< bool > &  value,
const int  name_padding_width = -1,
const int  value_padding_width = -1,
const std::string &  comment = std::string() 
)
inherited

◆ write() [3/11]

void mrpt::utils::CConfigFileBase::write ( const std::string &  section,
const std::string &  name,
const std::vector< double > &  value,
const int  name_padding_width = -1,
const int  value_padding_width = -1,
const std::string &  comment = std::string() 
)
inherited

◆ write() [4/11]

void mrpt::utils::CConfigFileBase::write ( const std::string &  section,
const std::string &  name,
const std::vector< float > &  value,
const int  name_padding_width = -1,
const int  value_padding_width = -1,
const std::string &  comment = std::string() 
)
inherited

◆ write() [5/11]

void mrpt::utils::CConfigFileBase::write ( const std::string &  section,
const std::string &  name,
const std::vector< int > &  value,
const int  name_padding_width = -1,
const int  value_padding_width = -1,
const std::string &  comment = std::string() 
)
inherited

◆ write() [6/11]

void mrpt::utils::CConfigFileBase::write ( const std::string &  section,
const std::string &  name,
const std::vector< unsigned int > &  value,
const int  name_padding_width = -1,
const int  value_padding_width = -1,
const std::string &  comment = std::string() 
)
inherited

◆ write() [7/11]

void mrpt::utils::CConfigFileBase::write ( const std::string &  section,
const std::string &  name,
double  value,
const int  name_padding_width = -1,
const int  value_padding_width = -1,
const std::string &  comment = std::string() 
)
inherited

◆ write() [8/11]

void mrpt::utils::CConfigFileBase::write ( const std::string &  section,
const std::string &  name,
float  value,
const int  name_padding_width = -1,
const int  value_padding_width = -1,
const std::string &  comment = std::string() 
)
inherited

◆ write() [9/11]

void mrpt::utils::CConfigFileBase::write ( const std::string &  section,
const std::string &  name,
int  value,
const int  name_padding_width = -1,
const int  value_padding_width = -1,
const std::string &  comment = std::string() 
)
inherited

◆ write() [10/11]

void mrpt::utils::CConfigFileBase::write ( const std::string &  section,
const std::string &  name,
uint32_t  value,
const int  name_padding_width = -1,
const int  value_padding_width = -1,
const std::string &  comment = std::string() 
)
inherited

◆ write() [11/11]

void mrpt::utils::CConfigFileBase::write ( const std::string &  section,
const std::string &  name,
uint64_t  value,
const int  name_padding_width = -1,
const int  value_padding_width = -1,
const std::string &  comment = std::string() 
)
inherited

◆ writeString() [1/2]

void mrpt::utils::CConfigFilePrefixer::writeString ( const std::string &  section,
const std::string &  name,
const std::string &  str 
)
protectedvirtual

A virtual method to write a generic string.

Implements mrpt::utils::CConfigFileBase.

◆ writeString() [2/2]

void mrpt::utils::CConfigFileBase::writeString ( const std::string &  section,
const std::string &  name,
const std::string &  str,
const int  name_padding_width,
const int  value_padding_width,
const std::string &  comment 
)
protectedinherited

Write a generic string with optional padding and a comment field ("// ...") at the end of the line.

Member Data Documentation

◆ m_bound_object

CConfigFileBase* mrpt::utils::CConfigFilePrefixer::m_bound_object
private

The object we are wrapping.

Definition at line 39 of file CConfigFilePrefixer.h.

◆ m_prefix_keys

std::string mrpt::utils::CConfigFilePrefixer::m_prefix_keys
private

Definition at line 40 of file CConfigFilePrefixer.h.

◆ m_prefix_sections

std::string mrpt::utils::CConfigFilePrefixer::m_prefix_sections
private

Definition at line 40 of file CConfigFilePrefixer.h.




Page generated by Doxygen 1.9.6 for MRPT 1.4.0 SVN: at Wed Mar 22 06:16:42 UTC 2023