ConfigFileManager.h

Go to the documentation of this file.
00001 /*
00002 Copyright (C) 2002-2004 The Pentagram team
00003 
00004 This program is free software; you can redistribute it and/or
00005 modify it under the terms of the GNU General Public License
00006 as published by the Free Software Foundation; either version 2
00007 of the License, or (at your option) any later version.
00008 
00009 This program is distributed in the hope that it will be useful,
00010 but WITHOUT ANY WARRANTY; without even the implied warranty of
00011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012 GNU General Public License for more details.
00013 
00014 You should have received a copy of the GNU General Public License
00015 along with this program; if not, write to the Free Software
00016 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
00017 */
00018 
00019 #ifndef CONFIGFILEMANAGER_H
00020 #define CONFIGFILEMANAGER_H
00021 
00022 #include <string>
00023 #include "istring.h"
00024 #include <vector>
00025 
00026 class INIFile;
00027 
00028 class ConfigFileManager
00029 {
00030 public:
00031         ConfigFileManager();
00032         ~ConfigFileManager();
00033 
00034         static ConfigFileManager* get_instance() { return configfilemanager; }
00035 
00041         bool readConfigFile(std::string fname, Pentagram::istring root,
00042                                                 bool readonly=false);
00043         bool readConfigString(std::string config, Pentagram::istring root,
00044                                                   bool readonly=false);
00045 
00048         void write(Pentagram::istring root = c_empty_string);
00049 
00051         void clear();
00052 
00054         void clearRoot(Pentagram::istring root);
00055 
00057         bool exists(Pentagram::istring key);
00058 
00060         bool get(Pentagram::istring key,std::string &ret);
00062         bool get(Pentagram::istring key, int &ret);
00064         bool get(Pentagram::istring, bool &ret);
00065 
00067         void set(Pentagram::istring key, std::string value);
00069         void set(Pentagram::istring key, const char* value);
00071         void set(Pentagram::istring key, int value);
00073         void set(Pentagram::istring key, bool value);
00074 
00076         void unset(Pentagram::istring key);
00077 
00083         std::vector<Pentagram::istring> listKeys(Pentagram::istring section,
00084                                                                                   bool longformat = false);
00085 
00090         std::vector<Pentagram::istring> listSections(Pentagram::istring root,
00091                                                                                           bool longformat = false);
00092 
00097         std::map<Pentagram::istring,std::string> listKeyValues(
00098                 Pentagram::istring section, bool longformat = false);
00099 
00100 private:
00101 
00102         INIFile* findKeyINI(Pentagram::istring key);
00103         INIFile* findWriteINI(Pentagram::istring key);
00104 
00105         std::vector<INIFile*> inifiles;
00106 
00107         static ConfigFileManager* configfilemanager;
00108 };
00109 
00110 #endif

Generated on Fri Jul 27 22:27:11 2007 for pentagram by  doxygen 1.4.7