00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef SWCONFIG_H
00024 #define SWCONFIG_H
00025
00026 #include <stdio.h>
00027
00028 #include <string>
00029 #include <map>
00030
00031 #include <defs.h>
00032 #include <multimapwdef.h>
00033
00034
00035 SWORD_NAMESPACE_START
00036
00037 typedef multimapwithdefault < std::string, std::string, std::less < std::string > >ConfigEntMap;
00038 typedef std::map < std::string, ConfigEntMap, std::less < std::string > >SectionMap;
00039
00043 class SWDLLEXPORT SWConfig {
00044 private:
00045 char getline(FILE * fp, std::string & line);
00046 public:
00050 std::string filename;
00054 SectionMap Sections;
00055
00059 SWConfig(const char *ifilename);
00060 virtual ~SWConfig();
00061
00065 virtual void Load();
00066
00070 virtual void Save();
00071
00075 virtual void augment(SWConfig &addFrom);
00076 virtual SWConfig & operator +=(SWConfig &addFrom) { augment(addFrom); return *this; }
00077
00087 virtual ConfigEntMap & operator [](const char *section);
00088 };
00089 SWORD_NAMESPACE_END
00090 #endif