// // HtConfiguration.h // // HtConfiguration: extends Configuration class // to implement Apache-style config. Uses parser // generated by Bison from conf_parser.yxx // // Part of the ht://Dig package // Copyright (c) 1995-2004 The ht://Dig Group // For copyright details, see the file COPYING in your distribution // or the GNU Library General Public License (LGPL) version 2 or later // // // $Id: HtConfiguration.h,v 1.5 2004/05/28 13:15:12 lha Exp $ // #ifndef _HtConfiguration_h_ #define _HtConfiguration_h_ #include"Configuration.h" #include "ParsedString.h" #include "URL.h" class HtConfiguration : public Configuration { public: const String Find(const String& name) const {return(Configuration::Find(name));} int Value(const String& name, int default_value = 0) const {return(Configuration::Value (name,default_value));} double Double(const String& name, double default_value = 0) const {return(Configuration::Double (name,default_value));} int Boolean(const String& name, int default_value = 0) const {return(Configuration::Boolean(name,default_value));} void Add(const String& str){Configuration::Add(str);} void Add(const String& name, const String& value) {Configuration::Add(name,value);} void AddParsed(const String& name, const String& value) {Configuration::AddParsed(name,value);} void Add(const char *name, const char *value, Configuration *aList); const String Find(URL *aUrl, const char *value) const; const String Find(const char *blockName, const char *name, const char *value) const; int Value(const char *blockName, const char *name, const char *value, int default_value = 0); double Double(const char *blockName, const char *name, const char *value, double default_value = 0); int Boolean(const char *blockName, const char *name, const char *value, int default_value = 0); int Value(URL *aUrl,const char *value,int default_value = 0); double Double(URL *aUrl,const char *value,double default_value = 0); int Boolean(URL *aUrl,const char *value,int default_value = 0); inline String ParseString(const char*) const; // parse ${var} string String getFileName() const { return FileName; } // // We need some way of reading in the database from a configuration file // ... this uses the parser virtual int Read(const String& filename); protected: Dictionary dcBlocks; Dictionary dcUrls; String FileName; // config's file name public: HtConfiguration():Configuration() {;} HtConfiguration(const HtConfiguration& config) : Configuration(config), dcBlocks(config.dcBlocks), dcUrls(config.dcUrls) { ; } static HtConfiguration* const config(); private: static HtConfiguration* _config; }; //******************************************************************** // inline String HtConfiguration::ParseString(const char *str) const { return ParsedString(str).get(dcGlobalVars); } #endif