gem5  v21.0.1.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Classes | Public Types | 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 Types

using VisitSectionCallback = std::function< void(const std::string &, const std::string &)>
 Visitor callback that receives key/value pairs. 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...
 
void visitSection (const std::string &sectionName, VisitSectionCallback cb)
 Iterate over key/value pairs of the given section. 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 52 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 142 of file inifile.hh.

◆ VisitSectionCallback

using IniFile::VisitSectionCallback = std::function<void( const std::string&, const std::string&)>

Visitor callback that receives key/value pairs.

Definition at line 213 of file inifile.hh.

Constructor & Destructor Documentation

◆ IniFile()

IniFile::IniFile ( )

Constructor.

Definition at line 39 of file inifile.cc.

◆ ~IniFile()

IniFile::~IniFile ( )

Destructor.

Definition at line 42 of file inifile.cc.

References ArmISA::i, and table.

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 159 of file inifile.cc.

References addSection(), 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 131 of file inifile.cc.

References ArmISA::i, and table.

Referenced by add(), and load().

◆ dump()

void IniFile::dump ( )

Dump contents to cout. For debugging.

Definition at line 340 of file inifile.cc.

References ArmISA::i, and table.

◆ 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 229 of file inifile.cc.

References IniFile::Section::findEntry(), and findSection().

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 212 of file inifile.cc.

References IniFile::Section::findEntry(), findSection(), 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 148 of file inifile.cc.

References ArmISA::i, and table.

Referenced by entryExists(), find(), and sectionExists().

◆ getSectionNames()

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

Push all section names into the given vector.

Definition at line 292 of file inifile.cc.

References ArmISA::i, sc_dt::list, and table.

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.

Definition at line 54 of file inifile.cc.

References ArmISA::f, and load().

◆ 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.

Definition at line 176 of file inifile.cc.

References IniFile::Section::add(), addSection(), eat_end_white(), eat_white(), and ArmISA::f.

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

◆ printUnreferenced()

bool IniFile::printUnreferenced ( )

Print unreferenced entries in object.

Iteratively calls printUnreferend() on all the constituent sections.

Definition at line 302 of file inifile.cc.

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

◆ 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 241 of file inifile.cc.

References findSection().

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

◆ visitSection()

void IniFile::visitSection ( const std::string &  sectionName,
IniFile::VisitSectionCallback  cb 
)

Iterate over key/value pairs of the given section.

Definition at line 361 of file inifile.cc.

References table.

Referenced by CheckpointIn::visitSection().

Member Data Documentation

◆ table

SectionTable IniFile::table
protected

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

Generated on Tue Jun 22 2021 15:28:40 for gem5 by doxygen 1.8.17