00001
00002
00003 #ifndef DEV_W3_ORG__2001_BLINDFOLD_SRC_TRACE_H
00004 #define DEV_W3_ORG__2001_BLINDFOLD_SRC_TRACE_H
00005
00006 #include "config.h"
00007 #include <hash_map>
00008 #include "EqStr.h"
00009
00013 class Trace {
00014
00015 public:
00016
00017
00018 Trace();
00019 Trace(const Trace& other);
00020 const Trace& operator=(const Trace& other);
00021 bool operator==(const Trace& other) const;
00022 bool operator<(const Trace& other) const;
00023 size_t hash() const;
00024 friend std::ostream& operator<<(std::ostream& s, const Trace& me);
00025 std::ostream& print_to(std::ostream& stream) const;
00026 ~Trace();
00027
00028
00029
00030
00031
00032 static void set(const char* moduleName, bool on=true);
00033
00034 static bool get(const char* moduleName);
00035
00036 private:
00037
00038 typedef std::hash_map<const char*, bool, std::hash<const char*>, EqStr> Map;
00039
00040 static Map map;
00041
00042 };
00043
00044 STANDARD_EXTERNAL(Trace)
00045
00046 #endif