#include <IniFile.h>
Inheritance diagram for IniSection:

Public Member Functions | |
| IniSection (const char *u) | |
| IniSection (const IniParser *p) | |
| IniSection (const IniSection &s) | |
| void | operator= (const IniSection &s) |
| virtual | ~IniSection () |
| IniSection (const IniParser *p, string n) | |
| void | initValue (const string &key, const string &val, const string &comment, int rb) |
| void | initSection (const string &name, const string &comment, int rb, int wb=-2) |
| void | initReadBy () |
| void | setRewriteBy (int c) |
| int | getRewriteBy () |
| int | getSubSectionRewriteBy (const char *name) |
| void | setEndComment (const char *c) |
| const char * | getEndComment () const |
| bool | isDirty () |
| virtual void | clean () |
| IniSection & | findSection (const vector< string > &path, int from=0) |
| int | findEndFromUp (const vector< string > &path, int wanted, int found=-1, int from=0) |
| void | Dump () |
| int | Read (const YCPPath &p, YCPValue &out, bool rewrite) |
| int | Dir (const YCPPath &p, YCPList &out) |
| int | Write (const YCPPath &p, const YCPValue &v, bool rewrite) |
| int | Delete (const YCPPath &p) |
| IniIterator | getContainerBegin () |
| IniIterator | getContainerEnd () |
| IniSection & | getSection (const char *name) |
Private Member Functions | |
| void | reindex () |
| int | getMyValue (const YCPPath &p, YCPValue &out, int what, int depth) |
| int | getValue (const YCPPath &p, YCPValue &out, int what, int depth=0) |
| int | getSectionProp (const YCPPath &p, YCPValue &out, int what, int depth=0) |
| int | getAll (const YCPPath &p, YCPValue &out, int depth) |
| YCPMap | getAllDoIt () |
| int | myDir (YCPList &l, IniType what) |
| int | dirHelper (const YCPPath &p, YCPList &out, int sections, int depth=0) |
| int | setMyValue (const YCPPath &p, const YCPValue &in, int what, int depth) |
| int | setValue (const YCPPath &p, const YCPValue &in, int what, int depth=0) |
| int | setSectionProp (const YCPPath &p, const YCPValue &in, int what, int depth) |
| int | setAll (const YCPPath &p, const YCPValue &in, int depth) |
| int | setAllDoIt (const YCPMap &in) |
| int | delValue (const YCPPath &p, int depth) |
| int | delSection (const YCPPath &p, int depth) |
| void | delMyValue (const string &k) |
| void | delValue1 (IniEntryIdxIterator exi) |
| void | delSection1 (IniSectionIdxIterator sxi) |
| int | getValueFlat (const YCPPath &p, YCPValue &out) |
| int | setValueFlat (const YCPPath &p, const YCPValue &in) |
| int | delValueFlat (const YCPPath &p) |
| int | dirValueFlat (const YCPPath &p, YCPList &l) |
Private Attributes | |
| const IniParser * | ip |
| string | end_comment |
| int | rewrite_by |
| IniContainer | container |
| IniEntryIndex | ivalues |
| IniSectionIndex | isections |
| IniSection::IniSection | ( | const char * | u | ) | [inline] |
explicit uninitialized constructor
| IniSection::IniSection | ( | const IniParser * | p | ) | [inline] |
| IniSection::IniSection | ( | const IniSection & | s | ) | [inline] |
Must define an own copy constructor so that the indices point to the copy, not the original
| virtual IniSection::~IniSection | ( | ) | [inline, virtual] |
| IniSection::IniSection | ( | const IniParser * | p, | |
| string | n | |||
| ) | [inline] |
this is a constructor for newly added sections --> sets dirty
| ip | parser to take options from | |
| n | name of section |
| void IniSection::reindex | ( | ) | [private] |
build ivalues and isections
Get a value (or list of them if repeat_names) in this section It would be enough to pass only k instead of p and depth, but then the error messages would not know the whole path
| p | path | |
| out | output is placed here as YCPString or YCPInteger | |
| what | 0 - value, 1 - comment, other - read-by | |
| depth | path index |
Get a value on a path
| p | path to value: .value.sec1.sec2.key | |
| out | output is placed here as YCPString or YCPInteger | |
| what | 0 - value, 1 - comment, other - read-by | |
| depth | Index of current path component. This function is recursive and depth marks the depth of recursion. We look for path[depth] in current "scope" |
| int IniSection::getSectionProp | ( | const YCPPath & | p, | |
| YCPValue & | out, | |||
| int | what, | |||
| int | depth = 0 | |||
| ) | [private] |
Get section property -- comment or read-by
| p | path to value: .section_commment.sec1.sec2.sec3 | |
| out | output is placed here as YCPString or YCPInteger | |
| what | 0 - comment, 1 - rewrite_by, other - read-by | |
| depth | Index of current path component. This function is recursive and depth marks the depth of recursion. We look for path[depth] in current "scope" |
Get a complete subtree
| p | path : .all or .all.sec1.sec2 | |
| out | output is placed here | |
| depth | Index of current path component. This function is recursive and depth marks the depth of recursion. We look for path[depth] in current "scope" |
| YCPMap IniSection::getAllDoIt | ( | ) | [private, virtual] |
Gets data for this section and all its values and subsections
Reimplemented from IniBase.
Get directory of this section
| l | result list | |
| what | VALUE or SECTION |
| int IniSection::dirHelper | ( | const YCPPath & | p, | |
| YCPList & | out, | |||
| int | sections, | |||
| int | depth = 0 | |||
| ) | [private] |
Recursive function to find the one section we want to dir and at last to do dir.
| p | path | |
| out | list of sections/keys | |
| sections | get sections (0) or values (!0)? | |
| depth | see getSectionProp |
| int IniSection::setMyValue | ( | const YCPPath & | p, | |
| const YCPValue & | in, | |||
| int | what, | |||
| int | depth | |||
| ) | [private] |
Set a value (or list of them if repeat_names) in this section It would be enough to pass only k instead of p and depth, but then the error messages would not know the whole path
| p | path | |
| in | value to set (YCPString or YCPInteger) (or YCPList) | |
| what | 0 -- value, 1 -- comment, other -- read-by. | |
| depth | path index |
need to add a value ...
| int IniSection::setValue | ( | const YCPPath & | p, | |
| const YCPValue & | in, | |||
| int | what, | |||
| int | depth = 0 | |||
| ) | [private] |
Set value on path. Creates recursively all non-existing subsections.
| p | path to set value on | |
| in | value to set (YCPString or YCPInteger) | |
| what | 0 -- value, 1 -- comment, other -- read-by. | |
| depth | see getSectionProp |
| int IniSection::setSectionProp | ( | const YCPPath & | p, | |
| const YCPValue & | in, | |||
| int | what, | |||
| int | depth | |||
| ) | [private] |
Set section comment or read-by. Creates recursively all non-existing subsections.
| p | path to set value on | |
| in | value to set (YCPString or YCPInteger) | |
| what | 0 -- comment, 1 - rewrite_by, other -- read-by. | |
| depth | see getSectionProp |
need to add a section ...
Set all properties and values for a section. No recursive creation of the specified path.
| p | path where to start | |
| in | value to set | |
| depth | see getSectionProp |
| int IniSection::setAllDoIt | ( | const YCPMap & | in | ) | [private, virtual] |
Set all properties and values for a section.
| in | value to set |
Reimplemented from IniBase.
| int IniSection::delValue | ( | const YCPPath & | p, | |
| int | depth | |||
| ) | [private] |
Delete value on path
| p | path to delete value at | |
| depth | see getSectionProp |
| int IniSection::delSection | ( | const YCPPath & | p, | |
| int | depth | |||
| ) | [private] |
Delete section on path. Deletes also all its subsections.
| p | path to delete value at | |
| depth | see getSectionProp |
| void IniSection::delMyValue | ( | const string & | k | ) | [private] |
deletes all values of this name we own
| k | normalized key |
| void IniSection::delValue1 | ( | IniEntryIdxIterator | exi | ) | [private] |
deletes a section we own
| void IniSection::delSection1 | ( | IniSectionIdxIterator | sxi | ) | [private] |
deletes a section we own
Get value in flat mode.
| p | path to value | |
| out | output |
Set value in flat mode.
| p | path to value | |
| out | input |
| int IniSection::delValueFlat | ( | const YCPPath & | p | ) | [private] |
Delete value in flat mode
Get list of values in flat mode.
| void IniSection::operator= | ( | const IniSection & | s | ) | [inline] |
| void IniSection::initValue | ( | const string & | key, | |
| const string & | val, | |||
| const string & | comment, | |||
| int | rb | |||
| ) |
If value doesn't exist, creates new, otherwise calls method init of the existing one.
| key | key | |
| val | value | |
| comment | comment | |
| rb | read-by |
| void IniSection::initSection | ( | const string & | name, | |
| const string & | comment, | |||
| int | rb, | |||
| int | wb = -2 | |||
| ) |
If section already exist, it is updated only in case, that it isn't dirty.
| name | section name | |
| comment | comment | |
| rb | read-by | |
| wb | rewrite-by. if -2 (default), it is not changed |
| void IniSection::initReadBy | ( | ) | [inline] |
This function has very special purpose, it ensures that top-section delimiter is not written when saving multiple files.
| void IniSection::setRewriteBy | ( | int | c | ) | [inline] |
sets dirty flag also
| int IniSection::getRewriteBy | ( | ) | [inline] |
| int IniSection::getSubSectionRewriteBy | ( | const char * | name | ) |
| name | name of a section |
| void IniSection::setEndComment | ( | const char * | c | ) |
If there is no comment at the beginning and no values and no sections, it is better to set is as comment at the beginning. Sets also dirty flag.
| c | comment |
| const char* IniSection::getEndComment | ( | ) | const [inline] |
| bool IniSection::isDirty | ( | ) |
| void IniSection::clean | ( | ) | [virtual] |
set all subsection and values to clean
Reimplemented from IniBase.
| IniSection & IniSection::findSection | ( | const vector< string > & | path, | |
| int | from = 0 | |||
| ) |
Gets section on a path. Recursive. Attention! This function aborts when it doesn't find the section! Use with care! (Used only by IniParser::parse_helper)
| path | path to the section | |
| from | recursion depth |
| int IniSection::findEndFromUp | ( | const vector< string > & | path, | |
| int | wanted, | |||
| int | found = -1, |
|||
| int | from = 0 | |||
| ) |
If currently parsed end-section-tag hasn't matched currently processed section by name, we need to find the best possible match by type (read_by). Hence we look for a section on current path which can be closed by found end-section-tag. Note: this function can abort if the path passed in invalid.
| path | stack of the sections | |
| wanted | read-by we want to find | |
| found | let unset, last path index that matched | |
| from | let unset, current path index |
| void IniSection::Dump | ( | ) |
Dump a section with subsections and subvalues to stdout.
Generic interface to SCR::Read
| rewrite | a #19066 hack - if rewriting is active, .st accesses rewrite_by |
Generic interface to SCR::Write
| rewrite | a #19066 hack - if rewriting is active, .st accesses rewrite_by |
| int IniSection::Delete | ( | const YCPPath & | p | ) |
Generic delete for values, sections.
| p | path to delete |
| IniIterator IniSection::getContainerBegin | ( | ) |
| IniIterator IniSection::getContainerEnd | ( | ) |
| IniSection & IniSection::getSection | ( | const char * | name | ) |
Aborts if section doesn't exist! TODO gets any of multiple sections
| name | name of the section to get |
const IniParser* IniSection::ip [private] |
The parser, queried about global settings But once the const is discarded to add to deleted_sections
string IniSection::end_comment [private] |
if this is global section, there may be comment at the end this is quite special case, it is impossible to change it
int IniSection::rewrite_by [private] |
index to IniParser::rewrites for filename - section name mapping It appears that read_by was used for both purposes, causing bug (#19066).
IniContainer IniSection::container [private] |
What entries of cvalues and csections are valid Values contained by this section Sections contained by this section
IniEntryIndex IniSection::ivalues [private] |
Index of values
IniSectionIndex IniSection::isections [private] |
Index of sections
1.5.0