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 };
00039
00040 } ENDSEMI
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;
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 virtual char *getConfigurationString(char *infix) ;
00080 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