#include <IniParser.h>
Public Member Functions | |
| IniParser () | |
| ~IniParser () | |
| void | initFiles (const char *fn) |
| void | initFiles (const YCPList &f) |
| int | initMachine (const YCPMap &scr) |
| bool | isStarted () |
| int | parse () |
| void | UpdateIfModif () |
| int | write () |
| bool | sectionNeedsEnd (int i) |
| string | getFileName (const string &sec, int rb) const |
| bool | HaveRewrites () const |
| bool | repeatNames () const |
| accessor method | |
| bool | isFlat () const |
| accessor method | |
| string | changeCase (const string &str) const |
Public Attributes | |
| set< string > | deleted_sections |
| IniSection | inifile |
Private Member Functions | |
| time_t | getTimeStamp () |
| int | scanner_start (const char *fn) |
| void | scanner_stop () |
| int | scanner_get (string &s) |
| int | parse_helper (IniSection &ini) |
| int | write_helper (IniSection &ini, ofstream &of, int depth) |
Private Attributes | |
| time_t | timestamp |
| map< string, FileDescr > | multi_files |
| string | file |
| bool | line_can_continue |
| bool | ignore_case_regexps |
| bool | ignore_case |
| bool | prefer_uppercase |
| bool | first_upper |
| bool | no_nested_sections |
| bool | global_values |
| bool | repeat_names |
| bool | comments_last |
| bool | join_multiline |
| bool | no_finalcomment_kill |
| bool | read_only |
| bool | flat |
| string | subindent |
| vector< Regex > | linecomments |
| vector< Regex > | comments |
| vector< section > | sections |
| vector< param > | params |
| vector< IoPattern > | rewrites |
| ifstream | scanner |
| string | scanner_file |
| int | scanner_line |
| bool | started |
| bool | multiple_files |
| vector< string > | files |
| IniParser::IniParser | ( | ) | [inline] |
| IniParser::~IniParser | ( | ) |
| time_t IniParser::getTimeStamp | ( | ) | [private] |
Get time stamp of file in sinble file mode.
| int IniParser::scanner_start | ( | const char * | fn | ) | [private] |
Open ini file.
| void IniParser::scanner_stop | ( | ) | [private] |
Close ini file.
| int IniParser::scanner_get | ( | string & | s | ) | [private] |
get line from ini file.
| int IniParser::parse_helper | ( | IniSection & | ini | ) | [private] |
Parse one ini file and build a structure of IniSection.
| int IniParser::write_helper | ( | IniSection & | ini, | |
| ofstream & | of, | |||
| int | depth | |||
| ) | [private] |
Write one ini file.
| void IniParser::initFiles | ( | const char * | fn | ) |
Sets parser to single file mode and sets the file name to read.
| fn | file name of ini file |
| void IniParser::initFiles | ( | const YCPList & | f | ) |
Sets parser to multiple file mode and sets the glob-expressions.
| f | list of glob-expressions |
| int IniParser::initMachine | ( | const YCPMap & | scr | ) |
Sets flags and regular expressions.
| scr | control script |
| bool IniParser::isStarted | ( | ) | [inline] |
| int IniParser::parse | ( | ) |
Parse the ini files. Parser must be started before this function is called.
| void IniParser::UpdateIfModif | ( | ) |
Check the ini files and in case some of them changed externally, reload it.
| int IniParser::write | ( | ) |
Write changed ini files on disk
| bool IniParser::sectionNeedsEnd | ( | int | i | ) | [inline] |
Does a section have end-mark defined?
| i | index of section rule |
| string IniParser::getFileName | ( | const string & | sec, | |
| int | rb | |||
| ) | const |
Get the file name of section. If there is a rewrite rule rb, rewrites section name to file name using the rule rb.
| sec | section name | |
| rb | index of rewrite rule |
| bool IniParser::HaveRewrites | ( | ) | const [inline] |
Using file name rewriting?
| bool IniParser::repeatNames | ( | ) | const [inline] |
accessor method
| bool IniParser::isFlat | ( | ) | const [inline] |
accessor method
| string IniParser::changeCase | ( | const string & | str | ) | const |
change case of string
| str | string to change |
time_t IniParser::timestamp [private] |
Time of last modification of file, used in single file mode.
map<string,FileDescr> IniParser::multi_files [private] |
Times of last modification of read files, used in multiple files mode.
string IniParser::file [private] |
File name of the ini file -- single file mode only.
bool IniParser::line_can_continue [private] |
if there is \ at the end of line, next line is appended to the current one
bool IniParser::ignore_case_regexps [private] |
ignore case in regexps
bool IniParser::ignore_case [private] |
ignore case in keys and section names
bool IniParser::prefer_uppercase [private] |
if ignore case, prefer upper case when saving
bool IniParser::first_upper [private] |
if ignore case, outputs first upper and other lower If not first_upper, nor prefer_uppercase is set, keys and values are saved in lower case.
bool IniParser::no_nested_sections [private] |
nested sections are not allowed
bool IniParser::global_values [private] |
values at the top level(not in section) are allowed
bool IniParser::repeat_names [private] |
more values or sections of the same name are allowed
bool IniParser::comments_last [private] |
lines are parsed for comments after they are parsed for values
bool IniParser::join_multiline [private] |
multiline values are connected into one
bool IniParser::no_finalcomment_kill [private] |
do not kill empty lines at final comment at the end of top-level section
bool IniParser::read_only [private] |
read-only
bool IniParser::flat [private] |
ini file sections are created in flat-mode
string IniParser::subindent [private] |
this string is printed before each line in subsections
vector<Regex> IniParser::linecomments [private] |
Regular expression for comments over whole line.
vector<Regex> IniParser::comments [private] |
Regular expressions for comments over part of the line.
vector<section> IniParser::sections [private] |
Regular expressions for sections.
vector<param> IniParser::params [private] |
Regular expressions for parameters (keys/values).
vector<IoPattern> IniParser::rewrites [private] |
Regular expressions for rewrite rules.
ifstream IniParser::scanner [private] |
opened file for scanner
string IniParser::scanner_file [private] |
name of scanned file
int IniParser::scanner_line [private] |
line number of scanned file
bool IniParser::started [private] |
set to true in initMachine (after internal parsing structures are initialized, when IniParser is ready to work).
bool IniParser::multiple_files [private] |
Multiple files mode or single file mode?
vector<string> IniParser::files [private] |
Vector of globe-expressions.
| set<string> IniParser::deleted_sections |
If Write (.s.section_name, nil) was called in multiple files mode, than the file section_name has to be removed at the end. But as we have file name rewrite rules, section_name needn't be file name. Hence it is necessary to convert section_name to file name before inserting to deleted_sections.
Note: Write (.s.section_name, nil); Write (.v.section_name.k, "v"); means that section is deleted at first and created again later. In this case file isn't removed!
Toplevel ini section.
1.5.0