00001 #ifndef FASTSHOWER_IDEBUG_H
00002 #define FASTSHOWER_IDEBUG_H
00003
00004 #ifndef STD_VECTOR_H
00005 #define STD_VECTOR_H
00006 #include <vector>
00007 #endif
00008
00009 #ifndef STD_STRING_H
00010 #define STD_STRING_H
00011 #include <string>
00012 #endif
00013
00014 namespace FastShower{
00019 class IPinger;
00020 class StatsCollector;
00021 class IFunctionStats;
00022 class ParticleParameters;
00023 class ostream;
00024 class IDebug{
00025 public:
00026
00027 typedef std::vector<const IDebug*> Cpts;
00028
00029 virtual ~IDebug();
00030 virtual void ping(IPinger&) const = 0;
00031 virtual std::string name() const = 0;
00032 virtual std::string text() const = 0;
00033 virtual void bumpStats(double x) const = 0;
00034 virtual void bumpStats(double x,
00035 const ParticleParameters*) const = 0;
00036 virtual void components(Cpts&) const = 0;
00037 virtual const IFunctionStats* statistics() const = 0;
00038 virtual void arm() const = 0;
00039 };
00040 class SimplePinger;
00041 class PingEach{
00042 public:
00043 PingEach(IPinger&);
00044 ~PingEach();
00045 void operator()(const IDebug*);
00046 private:
00047 IPinger& m_pinger;
00048 };
00049 }
00050 #endif
00051
00052