00001 #ifndef CONFIGURATION_H 00002 #define CONFIGURATION_H 00003 // $Id: configuration_h-source.html,v 1.1 2001/04/16 17:42:58 dvermeir Exp $ 00004 00005 #include <iostream> 00006 #include <set> 00007 #include "expression.h" 00008 00010 class Configuration { 00011 public: 00012 enum CRITERIUM { DATE, PATH, DOMAIN, NONE }; 00013 Configuration(); 00014 ~Configuration(); 00015 00016 CRITERIUM format() const { return format_; } 00017 unsigned int max_level() const { return max_level_; } 00018 const set<unsigned int>& levels() const { return levels_; } 00019 const set<CRITERIUM>& criteria() const { return criteria_; } 00020 const Expression* select() const { return select_; } 00021 00022 unsigned int parse(istream&); 00023 00024 00025 friend ostream& operator<<(ostream&,const Configuration&); 00026 00027 protected: 00028 bool parse_format(istream&); 00029 bool parse_select(istream&); 00030 bool parse_exclude(istream&); 00031 Expression* parse_expression(istream&); 00032 CRITERIUM parse_criterium(istream&); 00033 bool parse_levels(istream&,set<unsigned int>& levels); 00034 00035 void add_expression(Expression* e); 00036 private: 00037 CRITERIUM format_; 00038 set<CRITERIUM> criteria_; 00039 set<unsigned int> levels_; 00040 unsigned int max_level_; 00041 AndExpression* select_; 00042 }; 00043 00044 ostream& operator<<(ostream&,const Configuration::CRITERIUM&); 00045 #endif 00046