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

Detailed Description

This class allows loading and storing values and vectors of different types from ".ini" files easily.

The contents of the file will be modified by "write" operations in memory, and will be saved back to the file at the destructor, and only if at least one write operation has been applied.

Definition at line 28 of file CConfigFile.h.

#include <mrpt/utils/CConfigFile.h>

Inheritance diagram for mrpt::utils::CConfigFile:
Inheritance graph

Public Member Functions

 CConfigFile (const std::string &fileName)
 Constructor that opens a configuration file.
 
 CConfigFile ()
 Constructor, does not open any file.
 
void setFileName (const std::string &fil_path)
 Associate this object with the given file, so future read/write operations will be applied to that file (it's synchronized at destruction)
 
void writeNow ()
 Dumps the changes to the physical configuration file now, not waiting until destruction.
 
std::string getAssociatedFile () const
 Returns the file currently open by this object.
 
virtual ~CConfigFile ()
 Destructor.
 
virtual void getAllSections (vector_string &sections) const MRPT_OVERRIDE
 Returns a list with all the section names.
 
virtual 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

std::string m_file
 The name of the file.
 
void_ptr_noncopy m_ini
 The interface to the file:
 
bool m_modified
 If modified since load.
 

Constructor & Destructor Documentation

◆ CConfigFile() [1/2]

mrpt::utils::CConfigFile::CConfigFile ( const std::string &  fileName)

Constructor that opens a configuration file.

◆ CConfigFile() [2/2]

mrpt::utils::CConfigFile::CConfigFile ( )

Constructor, does not open any file.

You should call "setFileName" before reading or writting or otherwise nothing will be read and write operations will be eventually lost. However, it's perfectly right to use this object without an associated file, in which case it will behave as an "in-memory" file.

◆ ~CConfigFile()

virtual mrpt::utils::CConfigFile::~CConfigFile ( )
virtual

Destructor.

Member Function Documentation

◆ getAllKeys()

virtual void mrpt::utils::CConfigFile::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()

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

Returns a list with all the section names.

Implements mrpt::utils::CConfigFileBase.

◆ getAssociatedFile()

std::string mrpt::utils::CConfigFile::getAssociatedFile ( ) const
inline

Returns the file currently open by this object.

Definition at line 63 of file CConfigFile.h.

◆ 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::CConfigFile::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)

◆ setFileName()

void mrpt::utils::CConfigFile::setFileName ( const std::string &  fil_path)

Associate this object with the given file, so future read/write operations will be applied to that file (it's synchronized at destruction)

◆ 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

◆ writeNow()

void mrpt::utils::CConfigFile::writeNow ( )

Dumps the changes to the physical configuration file now, not waiting until destruction.

◆ writeString() [1/2]

void mrpt::utils::CConfigFile::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_file

std::string mrpt::utils::CConfigFile::m_file
private

The name of the file.

Definition at line 31 of file CConfigFile.h.

◆ m_ini

void_ptr_noncopy mrpt::utils::CConfigFile::m_ini
private

The interface to the file:

Definition at line 32 of file CConfigFile.h.

◆ m_modified

bool mrpt::utils::CConfigFile::m_modified
private

If modified since load.

Definition at line 33 of file CConfigFile.h.




Page generated by Doxygen 1.9.8 for MRPT 1.4.0 SVN: at Wed Dec 6 15:06:50 UTC 2023