Author: dmacvicar
Date: Mon May 7 16:54:51 2007
New Revision: 5510
URL: http://svn.opensuse.org/viewcvs/zypp?rev=5510&view=rev
Log:
r5206@piscola: dmacvicar | 2007-05-07 16:54:08 +0200
Ini* stuff is what I was looking for
I will add comments support in a near future, but for now this is what I need.
Only todo: add typed lookups:
getBoolEntry, getIntEntry, etc
Modified:
trunk/ (props changed)
trunk/libzypp/tests/parser/inifile/inidict_test.cc
trunk/libzypp/zypp/parser/IniDict.cc
trunk/libzypp/zypp/parser/IniDict.h
trunk/libzypp/zypp/parser/IniParser.cc
Modified: trunk/libzypp/tests/parser/inifile/inidict_test.cc
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/tests/parser/inifile/inidict_test.cc?rev=5510&r1=5509&r2=5510&view=diff
==============================================================================
--- trunk/libzypp/tests/parser/inifile/inidict_test.cc (original)
+++ trunk/libzypp/tests/parser/inifile/inidict_test.cc Mon May 7 16:54:51 2007
@@ -28,9 +28,14 @@
//MIL << dict["homedmacvicar"]["type"] << endl;
- for ( IniDict::const_iterator it = dict.begin(); it != dict.end(); ++it )
+ for ( IniDict::section_const_iterator it = dict.sectionsBegin(); it != dict.sectionsEnd(); ++it )
{
- MIL << (*it).first << endl;
+ MIL << (*it) << endl;
+
+ for ( IniDict::entry_const_iterator it2 = dict.entriesBegin(*it); it2 != dict.entriesEnd(*it); ++it2 )
+ {
+ MIL << " - " << (*it2).first << " | " << (*it2).second << endl;
+ }
}
}
Modified: trunk/libzypp/zypp/parser/IniDict.cc
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/parser/IniDict.cc?rev=5510&r1=5509&r2=5510&view=diff
==============================================================================
--- trunk/libzypp/zypp/parser/IniDict.cc (original)
+++ trunk/libzypp/zypp/parser/IniDict.cc Mon May 7 16:54:51 2007
@@ -54,13 +54,44 @@
void IniDict::consume( const std::string §ion, const std::string &key, const std::string &value )
{
//MIL << endl;
- PropertySet keys = _dict[section];
- keys[key] = value;
- _dict[section] = keys;
+ _dict[section][key] = value;
//MIL << this->size() << endl;
}
+ IniDict::entry_const_iterator IniDict::entriesBegin(const std::string §ion) const
+ {
+ SectionSet::const_iterator secit = _dict.find(section);
+ if ( secit == _dict.end() )
+ {
+ return _empty_map.begin();
+ }
+
+ return (secit->second).begin();
+ }
+
+ IniDict::entry_const_iterator IniDict::entriesEnd(const std::string §ion) const
+ {
+ SectionSet::const_iterator secit = _dict.find(section);
+ if ( secit == _dict.end() )
+ {
+ return _empty_map.end();
+ }
+
+ return (secit->second).end();
+ }
+
+
+ IniDict::section_const_iterator IniDict::sectionsBegin() const
+ {
+ return make_map_key_begin( _dict );
+ }
+
+ IniDict::section_const_iterator IniDict::sectionsEnd() const
+ {
+ return make_map_key_end( _dict );
+ }
+
/******************************************************************
**
** FUNCTION NAME : operator<<
Modified: trunk/libzypp/zypp/parser/IniDict.h
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/parser/IniDict.h?rev=5510&r1=5509&r2=5510&view=diff
==============================================================================
--- trunk/libzypp/zypp/parser/IniDict.h (original)
+++ trunk/libzypp/zypp/parser/IniDict.h Mon May 7 16:54:51 2007
@@ -18,6 +18,7 @@
#include "zypp/base/PtrTypes.h"
#include "zypp/base/InputStream.h"
+#include "zypp/base/Iterator.h"
#include "zypp/parser/IniParser.h"
///////////////////////////////////////////////////////////////////
@@ -40,18 +41,55 @@
{
friend std::ostream & operator<<( std::ostream & str, const IniDict & obj );
public:
- typedef std::map