00001
00002 #ifndef HT_OPTIONS_CONFIG_H
00003 #define HT_OPTIONS_CONFIG_H
00004
00005 #include <hightest/config.h>
00006 #include <utils/Error.h>
00007
00008 #include <options/Attribute.h>
00009
00010 #include <string>
00011 #include <vector>
00012
00013 namespace ht {
00014 namespace options {
00016 class ConfigError : public utils::BaseException {
00017 public:
00019 ConfigError(const std::string &s) : BaseException(s) {}
00020 };
00021
00022 class Config;
00023 typedef std::vector<Config *> Configs;
00024
00026 class Config {
00027 public:
00028 virtual ~Config();
00030 virtual Attribute attribute(const std::string &) const = 0;
00031
00034 virtual Attribute attribute(const std::string &,
00035 const std::string &) const = 0;
00036
00042 virtual const Config *
00043 child(const std::string &) const = 0;
00044
00046 virtual Configs children() const = 0;
00047
00049 virtual std::string name() const = 0;
00050 };
00051 }
00052 }
00053
00054 #endif