CCAFFEINE  0.8.8
DefaultParameterPort.h
00001 #ifndef DefaultParameterPort_h_seen
00002 #define DefaultParameterPort_h_seen
00003 
00004 #include <string>
00005 #include <vector>
00006 #include <stdexcept>
00010 namespace dpp {
00011 
00012 class tvElement {
00013 private:
00014         std::string tabName;
00015         BaseParameter *bp;
00016         bool isString;
00017 public:
00018         ~tvElement() {
00019                 tabName = "deleted";
00020                 bp = 0;
00021         }
00022         tvElement(std::string & s)
00023                 : tabName(s), bp(0), isString(true) {}
00024         tvElement(BaseParameter *p)
00025                 : tabName(""), bp(p), isString(false) {}
00026         std::string getN() { 
00027                 if (!isString) { 
00028                         throw std::logic_error("not tabname element");
00029                 }
00030                 return tabName; 
00031         }
00032         BaseParameter *getP() {
00033                 if (isString) { 
00034                         throw std::logic_error("not parameter element");
00035                 }
00036                 return bp;
00037         }
00038 }; // end tvElement class
00039 
00040 } ENDSEMI // end namespace dpp
00041 
00053 class DefaultParameterPort :  public virtual ConfigurableParameterPort {
00054 
00055 private:
00060   ::std::vector< ::std::vector< ::dpp::tvElement > > tabVector;
00061   ::std::vector< BaseParameter *> pVector;
00062   char *title; // assume to live in user space
00063   bool configured;
00064   int requestCount;
00065   ::std::vector< ParameterGetListener * > getListeners;
00066   ::std::vector< ParameterSetListener * > setListeners;
00067 
00068 public:
00069 
00070   DefaultParameterPort() ;
00071   virtual ~DefaultParameterPort() ;
00072 
00074   virtual int setConfigurationString(char * fieldName, char *value);
00075 
00076 
00079   /*CFREE*/ virtual char *getConfigurationString(char *infix) ;
00080   /*CFREE*/ virtual char *getConfigurationString(char *infix, char *fieldName) ;
00081 
00089   bool isFullyConfigured() ;
00090 
00092   void clearRequests() ;
00093 
00097   void setUpdater(ParameterGetListener *po);
00098 
00099   void setUpdatedListener(ParameterSetListener *po);
00100 
00104   void setBatchTitle(char *title_) ;
00105 
00111   void setGroupName(char *name) ;
00112 
00138   void addRequest(BaseParameter *p) ;
00139 
00140   BaseParameter *getParameter(char  *name);
00141 };
00142 #endif //DefaultParameterPort_h_seen