diff options
Diffstat (limited to 'include/swconfig.h')
-rw-r--r-- | include/swconfig.h | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/include/swconfig.h b/include/swconfig.h new file mode 100644 index 0000000..8e37d2c --- /dev/null +++ b/include/swconfig.h @@ -0,0 +1,91 @@ +/****************************************************************************** + * swconfig.h - definition of Class SWConfig used for saving and retrieval + * of configuration information + * + * $Id: swconfig.h,v 1.16 2002/03/19 23:59:41 scribe Exp $ + * + * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org) + * CrossWire Bible Society + * P. O. Box 2528 + * Tempe, AZ 85280-2528 + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation version 2. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + */ + +#ifndef SWCONFIG_H +#define SWCONFIG_H + +#include <stdio.h> + +#include <string> +#include <map> + +#include <defs.h> +#include <multimapwdef.h> + +using namespace std; + + + +typedef multimapwithdefault < string, string, less < string > >ConfigEntMap; +typedef map < string, ConfigEntMap, less < string > >SectionMap; + +/** The class to read and save settings using a file on disk. +* +*/ +class SWDLLEXPORT SWConfig +{ +private: + char getline (FILE * fp, string & line); +public: + /** The filename used by this SWConfig object + * + */ + string filename; + /** Map of available sections + * The map of available sections. + */ + SectionMap Sections; + + /** Constructor of SWConfig + * @param ifilename The file, which should be used for this config. + */ + SWConfig (const char *ifilename); + virtual ~ SWConfig (); + + /** Load from disk + * Load the contzent from disk. + */ + virtual void Load (); + + /** Save to disk + * Save the content of this config object to disk. + */ + virtual void Save (); + + /** Merges the values of addFrom + * @param The config which values should be merged to this config object. Already existing values will be overwritten. + */ + virtual SWConfig & operator += (SWConfig & addFrom); + + /** Get a section + * This is an easy way to get and store config values. + * The following will work:\n + * + * @code + * SWConfig config("/home/user/.setttings"); + * config["Colors"]["Background"] = "red"; + * @endcode + */ + virtual ConfigEntMap & operator [] (const char *section); +}; + +#endif |