TSDuck v3.38-3738
MPEG Transport Stream Toolkit
Loading...
Searching...
No Matches
ts::ConfigFile Class Reference

Representation of a configuration file. More...

#include <tsConfigFile.h>

Inheritance diagram for ts::ConfigFile:

Public Types

enum  FileStyle {
  LOCAL_SYSTEM ,
  UNIX_STYLE ,
  WINDOWS_STYLE
}
 System-specific style of default configuration file name. More...
 

Public Member Functions

 ConfigFile (const fs::path &filename1, const fs::path &filename2, Report &report=(ts::CerrReport::Instance()), const UString env_disable=UString())
 Constructor.
 
 ConfigFile (const fs::path &filename=fs::path(), Report &report=(ts::CerrReport::Instance()), const UString env_disable=UString())
 Constructor.
 
 ConfigFile (std::istream &strm)
 Constructor.
 
void deleteSection (const UString &name)
 Delete a section.
 
fs::path fileName () const
 Get the latest loaded file.
 
void getSectionNames (UStringVector &names) const
 Get the names of all sections.
 
bool load (const fs::path &filename, Report &report=(ts::CerrReport::Instance()))
 Reload the configuration from a file.
 
bool merge (const fs::path &filename, Report &report=(ts::CerrReport::Instance()))
 Merge the configuration from a file.
 
void merge (std::istream &strm)
 Merge the configuration from a file.
 
ConfigSectionoperator[] (const UString &name)
 Index operator: get a reference to a section inside the configuration file instance.
 
const ConfigSectionoperator[] (const UString &name) const
 Index operator: get a reference to a section inside the configuration file instance.
 
void reset ()
 Reset the content of the configuration.
 
bool save (const fs::path &filename=UString(), Report &report=(ts::CerrReport::Instance())) const
 Save a configuration file.
 
std::ostream & save (std::ostream &strm) const
 Save a configuration file in a stream.
 
ConfigSectionsection (const UString &name)
 Get a reference to a section inside the configuration file instance.
 
const ConfigSectionsection (const UString &name) const
 Get a reference to a section inside the configuration file instance.
 
size_t sectionCount () const
 Get the number of sections in the file.
 

Static Public Member Functions

static fs::path DefaultFileName (FileStyle style=LOCAL_SYSTEM, const UString &app_name=UString())
 Get the default configuration file name.
 

Detailed Description

Representation of a configuration file.

Configuration files are based on the old ".INI" syntax on Windows systems. Lines starting with a '#' are comments and are ignored. The same entry can be specified several times in the same sections, all values are kept in a list.

Member Enumeration Documentation

◆ FileStyle

System-specific style of default configuration file name.

Enumerator
LOCAL_SYSTEM 

Same as local operating system.

UNIX_STYLE 

$HOME/.appname

WINDOWS_STYLE 

appname.ini in same directory as executable

Constructor & Destructor Documentation

◆ ConfigFile() [1/3]

ts::ConfigFile::ConfigFile ( const fs::path &  filename = fs::path(),
Report report = (ts::CerrReport::Instance()),
const UString  env_disable = UString() 
)
explicit

Constructor.

Parameters
[in]filenameA file name to read. Don't read a file if empty.
[in,out]reportWhere to report errors.
[in]env_disableOptional name of an environment variable. When the corresponding environment variable is defined to some non-empty value, the file is not loaded.

◆ ConfigFile() [2/3]

ts::ConfigFile::ConfigFile ( const fs::path &  filename1,
const fs::path &  filename2,
Report report = (ts::CerrReport::Instance()),
const UString  env_disable = UString() 
)

Constructor.

Parameters
[in]filename1A file name to read. Don't read a file if empty.
[in]filename2A file name to read if filename1 does not exist. Don't read a file if empty.
[in,out]reportWhere to report errors.
[in]env_disableOptional name of an environment variable. When the corresponding environment variable is defined to some non-empty value, the file is not loaded.

◆ ConfigFile() [3/3]

ts::ConfigFile::ConfigFile ( std::istream &  strm)
explicit

Constructor.

Parameters
[in,out]strmOpened input text stream to read the configuration file.

Member Function Documentation

◆ DefaultFileName()

static fs::path ts::ConfigFile::DefaultFileName ( FileStyle  style = LOCAL_SYSTEM,
const UString app_name = UString() 
)
static

Get the default configuration file name.

Parameters
[in]styleSystem style for file name.
[in]app_nameApplication name (default: executable base name).
Returns
The default configuration file name for the application.

◆ fileName()

fs::path ts::ConfigFile::fileName ( ) const
inline

Get the latest loaded file.

Returns
The name of the latest loaded file.

◆ load()

bool ts::ConfigFile::load ( const fs::path &  filename,
Report report = (ts::CerrReport::Instance()) 
)

Reload the configuration from a file.

Parameters
[in]filenameA file name to read.
[in,out]reportWhere to report errors.
Returns
True on success, false on error.

◆ merge() [1/2]

bool ts::ConfigFile::merge ( const fs::path &  filename,
Report report = (ts::CerrReport::Instance()) 
)

Merge the configuration from a file.

The values which are read from the specified file override previous values.

Parameters
[in]filenameA file name to read.
[in,out]reportWhere to report errors.
Returns
True on success, false on error.

◆ merge() [2/2]

void ts::ConfigFile::merge ( std::istream &  strm)

Merge the configuration from a file.

The values which are read from the specified file override previous values.

Parameters
[in,out]strmOpened input text stream to read the configuration file.

◆ save() [1/2]

bool ts::ConfigFile::save ( const fs::path &  filename = UString(),
Report report = (ts::CerrReport::Instance()) 
) const

Save a configuration file.

Parameters
[in]filenameA file name to write. If no file name is specified, use the file name from constructor or last load() or merge().
[in,out]reportWhere to report errors.
Returns
True on success, false on error.

◆ save() [2/2]

std::ostream & ts::ConfigFile::save ( std::ostream &  strm) const

Save a configuration file in a stream.

Parameters
[in,out]strmOpened output text stream to write the configuration file.
Returns
A reference to strm.

◆ sectionCount()

size_t ts::ConfigFile::sectionCount ( ) const
inline

Get the number of sections in the file.

Returns
The number of sections in the file.

◆ getSectionNames()

void ts::ConfigFile::getSectionNames ( UStringVector names) const

Get the names of all sections.

Parameters
[out]namesReturned names of all sections.

◆ section() [1/2]

ConfigSection & ts::ConfigFile::section ( const UString name)
inline

Get a reference to a section inside the configuration file instance.

Create the section if it does not exist.

Parameters
[in]nameThe section name.
Returns
A reference to the section.

◆ operator[]() [1/2]

ConfigSection & ts::ConfigFile::operator[] ( const UString name)
inline

Index operator: get a reference to a section inside the configuration file instance.

Create the section if it does not exist.

Parameters
[in]nameThe section name.
Returns
A reference to the section.

◆ section() [2/2]

const ConfigSection & ts::ConfigFile::section ( const UString name) const

Get a reference to a section inside the configuration file instance.

Create the section if it does not exist.

Parameters
[in]nameThe section name.
Returns
A read-only reference to the section.

◆ operator[]() [2/2]

const ConfigSection & ts::ConfigFile::operator[] ( const UString name) const
inline

Index operator: get a reference to a section inside the configuration file instance.

Create the section if it does not exist.

Parameters
[in]nameThe section name.
Returns
A read-only reference to the section.

◆ deleteSection()

void ts::ConfigFile::deleteSection ( const UString name)
inline

Delete a section.

Parameters
[in]nameThe section name to delete.

The documentation for this class was generated from the following file: