IniDict.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00012 #ifndef ZYPP_PARSER_INIDICT_H
00013 #define ZYPP_PARSER_INIDICT_H
00014
00015 #include <iosfwd>
00016 #include <map>
00017 #include <string>
00018
00019 #include "zypp/base/PtrTypes.h"
00020 #include "zypp/base/InputStream.h"
00021 #include "zypp/base/Iterator.h"
00022 #include "zypp/parser/IniParser.h"
00023
00025 namespace zypp
00026 {
00027
00028 namespace parser
00029 {
00030
00032
00033
00034
00040 class IniDict : public IniParser
00041 {
00042 friend std::ostream & operator<<( std::ostream & str, const IniDict & obj );
00043 public:
00044 typedef std::map<std::string, std::string> EntrySet;
00045 typedef std::map<std::string, EntrySet> SectionSet;
00046 typedef MapKVIteratorTraits<SectionSet>::Key_const_iterator section_const_iterator;
00047 typedef EntrySet::const_iterator entry_const_iterator;
00048
00062 section_const_iterator sectionsBegin() const;
00063 section_const_iterator sectionsEnd() const;
00065
00080 entry_const_iterator entriesBegin(const std::string §ion) const;
00081 entry_const_iterator entriesEnd(const std::string §ion) const;
00083
00088 IniDict( const InputStream &is,
00089 const ProgressData::ReceiverFnc & progress = ProgressData::ReceiverFnc() );
00090
00094 IniDict();
00095
00097 ~IniDict();
00098
00103 void read( const InputStream &is,
00104 const ProgressData::ReceiverFnc & progress = ProgressData::ReceiverFnc() );
00105
00112 void insertEntry( const std::string §ion,
00113 const std::string &key,
00114 const std::string &value );
00115
00122 void deleteSection( const std::string §ion );
00123
00128 bool hasSection( const std::string §ion ) const;
00129
00138 bool hasEntry( const std::string §ion,
00139 const std::string &entry ) const;
00140 public:
00141
00143 virtual void consume( const std::string §ion );
00145 virtual void consume( const std::string §ion,
00146 const std::string &key,
00147 const std::string &value );
00148
00149 private:
00150 SectionSet _dict;
00156 EntrySet _empty_map;
00157 };
00159
00161 std::ostream & operator<<( std::ostream & str, const IniDict & obj );
00162
00164 }
00167 }
00169 #endif // ZYPP_PARSER_INIDICT_H