gem5 v24.0.0.0
Loading...
Searching...
No Matches
gem5::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
 Visitor callback that receives key/value pairs.
 

Public Member Functions

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

Protected Types

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

Protected Member Functions

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

Protected Attributes

SectionTable table
 Hash of section names to Section object pointers.
 

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 55 of file inifile.hh.

Member Typedef Documentation

◆ SectionTable

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

SectionTable type. Map of strings to Section object pointers.

Definition at line 146 of file inifile.hh.

◆ VisitSectionCallback

Initial value:
std::function<void(
const std::string&, const std::string&)>

Visitor callback that receives key/value pairs.

Definition at line 214 of file inifile.hh.

Constructor & Destructor Documentation

◆ IniFile()

gem5::IniFile::IniFile ( )

Constructor.

Definition at line 42 of file inifile.cc.

Member Function Documentation

◆ add()

bool gem5::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 154 of file inifile.cc.

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

◆ addSection()

IniFile::Section * gem5::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 130 of file inifile.cc.

References table.

Referenced by add(), and load().

◆ dump()

void gem5::IniFile::dump ( )

Dump contents to cout. For debugging.

Definition at line 330 of file inifile.cc.

References gem5::ArmISA::i, and table.

◆ entryExists()

bool gem5::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 224 of file inifile.cc.

References findSection().

Referenced by gem5::CheckpointIn::entryExists().

◆ find()

bool gem5::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 207 of file inifile.cc.

References findSection().

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

◆ findSection() [1/2]

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

Look up section with the given name.

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

Definition at line 136 of file inifile.cc.

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

◆ findSection() [2/2]

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

Definition at line 143 of file inifile.cc.

References gem5::ArmISA::i, and table.

◆ getSectionNames()

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

Push all section names into the given vector.

Definition at line 286 of file inifile.cc.

References table.

Referenced by gem5::CxxIniFile::getAllObjectNames().

◆ load() [1/2]

bool gem5::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 46 of file inifile.cc.

References gem5::ArmISA::f, and load().

◆ load() [2/2]

bool gem5::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 171 of file inifile.cc.

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

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

◆ printUnreferenced()

bool gem5::IniFile::printUnreferenced ( ) const

Print unreferenced entries in object.

Iteratively calls printUnreferend() on all the constituent sections.

Definition at line 295 of file inifile.cc.

References table.

◆ sectionExists()

bool gem5::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 236 of file inifile.cc.

References findSection().

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

◆ visitSection()

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

Iterate over key/value pairs of the given section.

Definition at line 351 of file inifile.cc.

References table.

Referenced by gem5::CheckpointIn::visitSection().

Member Data Documentation

◆ table


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

Generated on Tue Jun 18 2024 16:24:12 for gem5 by doxygen 1.11.0