00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef BALL_MOLMEC_COMMON_RULEEVALUATOR_H
00010 #define BALL_MOLMEC_COMMON_RULEEVALUATOR_H
00011
00012 #ifndef BALL_DATATYPE_STRINGHASHMAP_H
00013 # include <BALL/DATATYPE/stringHashMap.h>
00014 #endif
00015
00016 #ifndef BALL_KERNEL_EXPRESSION_H
00017 # include <BALL/KERNEL/expression.h>
00018 #endif
00019
00020 #include <list>
00021 #include <utility>
00022
00023 namespace BALL
00024 {
00025 class INIFile;
00026
00037 class BALL_EXPORT RuleEvaluator
00038 {
00039 public:
00040
00041 BALL_CREATE(RuleEvaluator)
00042
00043
00046
00049 typedef std::list<std::pair<Expression, String> > RuleList;
00050
00053 typedef StringHashMap<RuleList> RuleMap;
00054
00056
00059
00062 RuleEvaluator() ;
00063
00066 RuleEvaluator(INIFile& file, const String& prefix) ;
00067
00070 RuleEvaluator(const RuleEvaluator& evaluator) ;
00071
00074 virtual ~RuleEvaluator() ;
00075
00077
00080
00083 bool initialize(INIFile& file, const String& prefix) ;
00084
00087 const String& getPrefix() const ;
00088
00091 void setPrefix(const String& prefix) ;
00092
00094
00097
00100 const RuleEvaluator& operator = (const RuleEvaluator& evaluator)
00101 ;
00102
00105 virtual void clear() ;
00106
00108
00111
00117 String operator () (const Atom& atom) const ;
00118
00120 bool operator == (const RuleEvaluator& evaluator) const ;
00121
00123
00126
00129 bool isValid() const ;
00130
00133 void dump(std::ostream& s = std::cout, Size indent_depth = 0) const
00134 ;
00135
00137
00138 protected:
00139
00140
00141 void extractSection_(INIFile& file, const String& symbol) ;
00142
00143
00144 String prefix_;
00145
00146
00147 RuleMap rule_map_;
00148
00149
00150 bool valid_;
00151
00152 };
00153 }
00154
00155
00156 #endif // BALL_MOLMEC_COMMON_RULEEVALUATOR_H