yast2-core
|
#include <IniFile.h>
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) |
IniSection & | 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 | setPrivate (bool p) |
bool | isPrivate () const |
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) |
![]() | |
virtual | ~IniBase () |
const char * | getName () const |
const char * | getComment () const |
int | getReadBy () const |
void | setName (const string &c) |
void | setComment (const string &c) |
void | setReadBy (int r) |
void | setDirty () |
void | initName (const string &c) |
void | initComment (const string &c) |
void | initReadBy (const int r) |
void | init (const string &n, const string &c, int rb) |
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 |
bool | is_private |
int | rewrite_by |
IniContainer | container |
IniEntryIndex | ivalues |
IniSectionIndex | isections |
Additional Inherited Members | |
![]() | |
IniBase (int rb) | |
IniBase (const string &n) | |
bool | getMapString (const YCPMap &in, const string &k, string &s) |
helper for setAllDoIt More... | |
bool | getMapInteger (const YCPMap &in, const string &k, int &i) |
helper for setAllDoIt More... | |
![]() | |
string | name |
string | comment |
int | read_by |
bool | dirty |
Section definition.
|
inline |
explicit uninitialized constructor
|
inline |
|
inline |
Must define an own copy constructor so that the indices point to the copy, not the original
References reindex().
|
inlinevirtual |
|
inline |
this is a constructor for newly added sections –> sets dirty
ip | parser to take options from |
n | name of section |
|
virtual |
set all subsection and values to clean
Reimplemented from IniBase.
References container, IniBase::dirty, and SECTION.
Referenced by IniAgent::Write(), and IniParser::write_helper().
int IniSection::Delete | ( | const YCPPath & | p | ) |
Generic delete for values, sections.
p | path to delete |
References delSection(), delValue(), delValueFlat(), ip, IniParser::isFlat(), and y2error.
Referenced by IniAgent::Write().
|
private |
deletes all values of this name we own
k | normalized key |
References delValue1(), ivalues, and y2debug.
Referenced by delValue(), and delValueFlat().
|
private |
Delete section on path. Deletes also all its subsections.
p | path to delete value at |
depth | see getSectionProp |
References IniParser::changeCase(), delSection(), delSection1(), ip, isections, y2debug, and y2error.
Referenced by Delete(), and delSection().
|
private |
deletes a section we own
References container, IniBase::dirty, and isections.
Referenced by delSection(), and setSectionProp().
|
private |
Delete value on path
p | path to delete value at |
depth | see getSectionProp |
References IniParser::changeCase(), delMyValue(), delValue(), ip, isections, and y2error.
Referenced by Delete(), and delValue().
|
private |
deletes a section we own
References container, IniBase::dirty, and ivalues.
Referenced by delMyValue(), and setMyValue().
|
private |
Delete value in flat mode
References IniParser::changeCase(), delMyValue(), and ip.
Referenced by Delete().
Generic interface to SCR::Dir
References YCPList::add(), dirHelper(), dirValueFlat(), ip, IniParser::isFlat(), and y2error.
Referenced by IniAgent::Dir().
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 |
References IniParser::changeCase(), dirHelper(), ip, isections, myDir(), SECTION, VALUE, and y2debug.
Referenced by Dir(), and dirHelper().
void IniSection::Dump | ( | ) |
Dump a section with subsections and subvalues to stdout.
References IniBase::comment, IniBase::getComment(), getContainerBegin(), getContainerEnd(), IniBase::getName(), IniEntry::getValue(), isections, ivalues, IniBase::name, SECTION, and VALUE.
int IniSection::findEndFromUp | ( | const vector< string > & | path, |
int | wanted, | ||
int | found = -1 , |
||
int | from = 0 |
||
) |
OBSOLETE, to be removed. 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 |
References IniParser::changeCase(), findEndFromUp(), ip, isections, IniBase::read_by, and y2error.
Referenced by findEndFromUp().
IniSection & IniSection::findSection | ( | const vector< string > & | path, |
int | from = 0 |
||
) |
OBSOLETE, to be removed. 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 |
References IniParser::changeCase(), findSection(), ip, isections, and y2error.
Referenced by findSection().
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" |
References IniParser::changeCase(), getAllDoIt(), ip, isections, and y2error.
Referenced by Read().
|
privatevirtual |
Gets data for this section and all its values and subsections
Reimplemented from IniBase.
References YCPMap::add(), YCPList::add(), IniBase::getAllDoIt(), getContainerBegin(), getContainerEnd(), rewrite_by, and VALUE.
Referenced by getAll().
IniIterator IniSection::getContainerBegin | ( | ) |
References container.
Referenced by Dump(), getAllDoIt(), reindex(), and IniParser::write_helper().
IniIterator IniSection::getContainerEnd | ( | ) |
References container.
Referenced by Dump(), getAllDoIt(), reindex(), and IniParser::write_helper().
|
inline |
References end_comment.
Referenced by IniParser::write_helper().
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 |
References YCPList::add(), IniParser::changeCase(), IniBase::getComment(), IniBase::getReadBy(), IniEntry::getValue(), ip, ivalues, IniParser::repeatNames(), and y2debug.
Referenced by getValue(), and getValueFlat().
|
inline |
References rewrite_by.
Referenced by IniParser::write().
IniSection & IniSection::getSection | ( | const char * | name | ) |
Aborts if entry doesn't exist!
name | name of the entry to get |
name | name of the section to get |
References isections, IniBase::name, and y2error.
|
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" |
References YCPList::add(), IniParser::changeCase(), IniBase::comment, getSectionProp(), ip, isections, IniBase::read_by, IniParser::repeatNames(), rewrite_by, and y2debug.
Referenced by getSectionProp(), and Read().
int IniSection::getSubSectionRewriteBy | ( | const char * | name | ) |
name | name of a section |
References isections.
Referenced by IniAgent::Write().
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" |
References IniParser::changeCase(), getMyValue(), ip, isections, and y2debug.
Referenced by Read().
Get value in flat mode.
p | path to value |
out | output |
References IniParser::changeCase(), getMyValue(), and ip.
Referenced by Read().
|
inline |
This function has very special purpose, it ensures that top-section delimiter is not written when saving multiple files.
References IniBase::read_by.
Referenced by IniParser::write().
IniSection & 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 |
References IniParser::changeCase(), IniBase::comment, container, IniBase::dirty, ip, isections, IniBase::name, IniBase::read_by, IniParser::repeatNames(), and rewrite_by.
Referenced by IniParser::parse_helper().
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 |
References IniParser::changeCase(), container, IniEntry::init(), ip, ivalues, and IniParser::repeatNames().
Referenced by IniParser::parse_helper().
bool IniSection::isDirty | ( | ) |
References IniBase::dirty, and isections.
Referenced by IniParser::write().
|
inline |
References is_private.
Referenced by IniParser::write_file().
Get directory of this section
l | result list |
what | VALUE or SECTION |
References YCPList::add(), container, and SECTION.
Referenced by dirHelper(), and dirValueFlat().
|
inline |
References container, end_comment, ip, is_private, reindex(), and rewrite_by.
Generic interface to SCR::Read
rewrite | a #19066 hack - if rewriting is active, .st accesses rewrite_by |
References getAll(), getSectionProp(), getValue(), getValueFlat(), ip, IniParser::isFlat(), and y2error.
Referenced by IniAgent::Read().
|
private |
build ivalues and isections
References IniParser::changeCase(), getContainerBegin(), getContainerEnd(), ip, isections, ivalues, and VALUE.
Referenced by IniSection(), operator=(), and setAllDoIt().
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 |
References IniParser::changeCase(), ip, isections, setAllDoIt(), and y2debug.
Referenced by Write().
|
privatevirtual |
Set all properties and values for a section.
in | value to set |
Reimplemented from IniBase.
References container, IniParser::getFileName(), IniBase::getMapInteger(), IniBase::getMapString(), ip, YCPElement::isNull(), reindex(), rewrite_by, IniBase::setAllDoIt(), IniEntry::setAllDoIt(), setAllDoIt(), YCPList::size(), YCPMap::value(), YCPList::value(), and y2error.
Referenced by setAll(), and setAllDoIt().
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 |
References IniBase::comment, container, and end_comment.
Referenced by IniParser::parse_helper().
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 ...
References YCPList::add(), as_integer(), as_list(), as_string(), IniParser::changeCase(), container, delValue1(), IniBase::dirty, ip, YCPElement::isNull(), ivalues, IniParser::repeatNames(), IniBase::setComment(), IniBase::setName(), IniBase::setReadBy(), IniEntry::setValue(), YCPList::size(), to_string(), YCPList::value(), y2debug, and y2error.
Referenced by setValue(), and setValueFlat().
|
inline |
References is_private.
Referenced by setSectionProp().
|
inline |
|
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 ...
References YCPList::add(), as_boolean(), as_integer(), as_list(), as_string(), IniParser::changeCase(), container, delSection1(), ip, isections, YCPElement::isNull(), IniParser::repeatNames(), IniBase::setComment(), setPrivate(), IniBase::setReadBy(), setRewriteBy(), YCPList::size(), str, YCPList::value(), and y2debug.
Referenced by Write().
|
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 |
References IniParser::changeCase(), container, ip, isections, setMyValue(), and y2debug.
Referenced by Write().
Set value in flat mode.
p | path to value |
out | input |
References IniParser::changeCase(), ip, and setMyValue().
Referenced by Write().
Generic interface to SCR::Write
rewrite | a #19066 hack - if rewriting is active, .st accesses rewrite_by |
References ip, IniParser::isFlat(), setAll(), setSectionProp(), setValue(), setValueFlat(), and y2error.
Referenced by IniAgent::Write().
|
private |
What entries of cvalues and csections are valid Values contained by this section Sections contained by this section
Referenced by clean(), delSection1(), delValue1(), getContainerBegin(), getContainerEnd(), initSection(), initValue(), myDir(), operator=(), setAllDoIt(), setEndComment(), setMyValue(), setSectionProp(), and setValue().
|
private |
if this is global section, there may be comment at the end this is quite special case, it is impossible to change it
Referenced by getEndComment(), operator=(), and setEndComment().
|
private |
The parser, queried about global settings But once the const is discarded to add to deleted_sections
Referenced by Delete(), delSection(), delValue(), delValueFlat(), Dir(), dirHelper(), findEndFromUp(), findSection(), getAll(), getMyValue(), getSectionProp(), getValue(), getValueFlat(), initSection(), initValue(), operator=(), Read(), reindex(), setAll(), setAllDoIt(), setMyValue(), setSectionProp(), setValue(), setValueFlat(), and Write().
|
private |
It is effective only when the section corresponds to a file. The file will not be readable by group and others. bnc#713661
Referenced by isPrivate(), operator=(), and setPrivate().
|
private |
Index of sections
Referenced by delSection(), delSection1(), delValue(), dirHelper(), Dump(), findEndFromUp(), findSection(), getAll(), getSection(), getSectionProp(), getSubSectionRewriteBy(), getValue(), initSection(), isDirty(), reindex(), setAll(), setSectionProp(), and setValue().
|
private |
Index of values
Referenced by delMyValue(), delValue1(), Dump(), getMyValue(), initValue(), reindex(), and setMyValue().
|
private |
index to IniParser::rewrites for filename - section name mapping It appears that read_by was used for both purposes, causing bug (#19066).
Referenced by getAllDoIt(), getRewriteBy(), getSectionProp(), initSection(), operator=(), setAllDoIt(), and setRewriteBy().