00001 
00002 
00003 #ifndef NMWR_GB_MUTATOR_BASE_H
00004 #define NMWR_GB_MUTATOR_BASE_H
00005 
00011 #include <iosfwd>
00012 #include <string>
00013 
00020 class Mutator {
00021 public:
00022   virtual void read (std::istream& in)  = 0;
00023   virtual void print(std::ostream& out) const = 0;
00024   virtual void print(std::ostream& out, const std::string& name) const = 0;
00025   virtual std::string description() const;
00026   virtual ~Mutator() {}
00027 };
00028 
00029 class ControlDevice;
00030 
00038 class controlable {
00039 public:
00040   virtual void register_at(ControlDevice&,const std::string& ) {}
00041   virtual void register_at(ControlDevice&) {}
00042   
00043 
00044   virtual void notify()  {} 
00045   virtual ~controlable() {}
00046 };
00047 
00048 
00049 #endif