gem5  v20.1.0.0
Classes | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | List of all members
IniFile Class Reference

This class represents the contents of a ".ini" file. More...

#include <inifile.hh>

Classes

class  Entry
 A single key/value pair. More...
 
class  Section
 A section. More...
 

Public Member Functions

 IniFile ()
 Constructor. More...
 
 ~IniFile ()
 Destructor. More...
 
bool load (std::istream &f)
 Load parameter settings from given istream. More...
 
bool load (const std::string &file)
 Load the specified file. More...
 
bool add (const std::string &s)
 Take string of the form "<section>:<parameter>=<value>" or "<section>:<parameter>+=<value>" and add to database. More...
 
bool find (const std::string &section, const std::string &entry, std::string &value) const
 Find value corresponding to given section and entry names. More...
 
bool entryExists (const std::string &section, const std::string &entry) const
 Determine whether the entry exists within named section exists in the .ini file. More...
 
bool sectionExists (const std::string &section) const
 Determine whether the named section exists in the .ini file. More...
 
void getSectionNames (std::vector< std::string > &list) const
 Push all section names into the given vector. More...
 
bool printUnreferenced ()
 Print unreferenced entries in object. More...
 
void dump ()
 Dump contents to cout. For debugging. More...
 

Protected Types

typedef std::unordered_map< std::string, Section * > SectionTable
 SectionTable type. Map of strings to Section object pointers. More...
 

Protected Member Functions

SectionaddSection (const std::string &sectionName)
 Look up section with the given name, creating a new section if not found. More...
 
SectionfindSection (const std::string &sectionName) const
 Look up section with the given name. More...
 

Protected Attributes

SectionTable table
 Hash of section names to Section object pointers. More...
 

Detailed Description

This class represents the contents of a ".ini" file.

It's basically a two level lookup table: a set of named sections, where each section is a set of key/value pairs. Section names, keys, and values are all uninterpreted strings.

Definition at line 51 of file inifile.hh.

Member Typedef Documentation

◆ SectionTable

typedef std::unordered_map<std::string, Section *> IniFile::SectionTable
protected

SectionTable type. Map of strings to Section object pointers.

Definition at line 138 of file inifile.hh.

Constructor & Destructor Documentation

◆ IniFile()

IniFile::IniFile ( )

Constructor.

Definition at line 41 of file inifile.cc.

◆ ~IniFile()

IniFile::~IniFile ( )

Destructor.

Definition at line 44 of file inifile.cc.

References ArmISA::i.

Member Function Documentation

◆ add()

bool IniFile::add ( const std::string &  s)

Take string of the form "<section>:<parameter>=<value>" or "<section>:<parameter>+=<value>" and add to database.

Return values
Trueif successful, false if parse error.

Definition at line 161 of file inifile.cc.

References eat_white(), ArmISA::offset, and ArmISA::s.

◆ addSection()

IniFile::Section * IniFile::addSection ( const std::string &  sectionName)
protected

Look up section with the given name, creating a new section if not found.

Return values
Pointerto section object.

Definition at line 133 of file inifile.cc.

References ArmISA::i.

◆ dump()

void IniFile::dump ( )

Dump contents to cout. For debugging.

Definition at line 341 of file inifile.cc.

References ArmISA::i.

◆ entryExists()

bool IniFile::entryExists ( const std::string &  section,
const std::string &  entry 
) const

Determine whether the entry exists within named section exists in the .ini file.

Returns
True if the section exists.

Definition at line 231 of file inifile.cc.

References IniFile::Section::findEntry().

Referenced by CheckpointIn::entryExists().

◆ find()

bool IniFile::find ( const std::string &  section,
const std::string &  entry,
std::string &  value 
) const

Find value corresponding to given section and entry names.

Value is returned by reference in 'value' param.

Return values
Trueif found, false if not.

Definition at line 214 of file inifile.cc.

References IniFile::Section::findEntry(), and IniFile::Entry::getValue().

Referenced by CheckpointIn::find(), CheckpointIn::findObj(), CxxIniFile::getParam(), CxxIniFile::getParamVector(), and TEST().

◆ findSection()

IniFile::Section * IniFile::findSection ( const std::string &  sectionName) const
protected

Look up section with the given name.

Return values
Pointerto section object, or NULL if not found.

Definition at line 150 of file inifile.cc.

References ArmISA::i.

◆ getSectionNames()

void IniFile::getSectionNames ( std::vector< std::string > &  list) const

Push all section names into the given vector.

Definition at line 293 of file inifile.cc.

References ArmISA::i.

Referenced by CxxIniFile::getAllObjectNames().

◆ load() [1/2]

bool IniFile::load ( const std::string &  file)

Load the specified file.

Parameter settings found in the file will be merged with any already defined in this object.

Parameters
fileThe path of the file to load.
Return values
Trueif successful, false if errors were encountered.

◆ load() [2/2]

bool IniFile::load ( std::istream &  f)

Load parameter settings from given istream.

This is a helper function for load(string) and loadCPP(), which open a file and then pass it here.

Return values
Trueif successful, false if errors were encountered.

Referenced by CheckpointIn::CheckpointIn(), CxxIniFile::load(), and TEST().

◆ printUnreferenced()

bool IniFile::printUnreferenced ( )

Print unreferenced entries in object.

Iteratively calls printUnreferend() on all the constituent sections.

Definition at line 303 of file inifile.cc.

References IniFile::Section::findEntry(), ArmISA::i, IniFile::Section::isReferenced(), and IniFile::Section::printUnreferenced().

◆ sectionExists()

bool IniFile::sectionExists ( const std::string &  section) const

Determine whether the named section exists in the .ini file.

Note that the 'Section' class is (intentionally) not public, so all clients can do is get a bool that says whether there are any values in that section or not.

Returns
True if the section exists.

Definition at line 242 of file inifile.cc.

Referenced by CxxIniFile::objectExists(), and CheckpointIn::sectionExists().

Member Data Documentation

◆ table

SectionTable IniFile::table
protected

Hash of section names to Section object pointers.

Definition at line 142 of file inifile.hh.


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

Generated on Wed Sep 30 2020 14:02:26 for gem5 by doxygen 1.8.17