00001 #ifndef __AbsParameter__
00002 #define __AbsParameter__
00003 
00004 
00005 
00024 #include <stdio.h>
00025 
00026 
00027 enum  ParameterType { Integer=0, Bool= 1, Real=2, String=3, Structured=4, Object=5 };
00028 
00029 class AbsParameter
00030 {
00031 private:
00032 
00033 char*                           name;
00034 ParameterType           type;
00035 int                                     cardinality;
00036 bool                            rangeFlag;
00037 
00038 public:
00039         
00040 AbsParameter(char* aname, ParameterType atype= Integer, int acardinality=1, bool arangeFlag=false )
00041         {
00042         name= aname; 
00043         type= atype;
00044         cardinality= acardinality;
00045         rangeFlag= arangeFlag;
00046         }
00047 
00048 virtual ~AbsParameter(){delete[] name;}
00049 
00050 virtual char*                   getName(){return name;}
00051 virtual ParameterType   getType(){return type;}
00052 
00053 virtual int                             getCardinality(){ return cardinality; }
00054 virtual bool                    hasARange(){ return rangeFlag; }
00055 
00056 
00057 virtual bool                    getBool()=0;
00058 virtual bool                    getDefaultBool()=0;
00059 
00060 virtual void                    setBool(bool val)=0;
00061 virtual void                    setDefaultBool(bool val)=0;
00062 
00063 
00064 virtual void                    addInteger(int value){}
00065 
00066 virtual int                             getInteger()=0;
00067 virtual int                             getDefaultInteger()=0;
00068 virtual int                             getMinInteger()=0;
00069 virtual int                             getMaxInteger()=0;
00070 virtual int                             getInteger(int index)=0;
00071 
00072 virtual void                    setInteger(int val)=0;
00073 virtual void                    setDefaultInteger(int val)=0;
00074 virtual void                    setRangeInteger(int low, int high)=0;
00075 virtual void                    setInteger(int index, int val)=0;
00076 
00077 
00078 virtual void                    addReal(double value){}
00079 
00080 virtual double                  getReal()=0;
00081 virtual double                  getDefaultReal()=0;
00082 virtual double                  getMinReal()=0;
00083 virtual double                  getMaxReal()=0;
00084 virtual double                  getReal(int index)=0;
00085 
00086 virtual void                    setReal(double val)=0;
00087 virtual void                    setDefaultReal(double val)=0;
00088 virtual void                    setRangeReal(int low, double high)=0;
00089 virtual void                    setReal(int index, double val)=0;
00090 
00091 
00092 virtual void                    addString(char* value){}
00093 
00094 virtual char*                   getString()=0;
00095 virtual char*                   getDefaultString()=0;
00096 virtual char*                   getString(int index)=0;
00097 
00098 virtual void                    setString(char* val)=0;
00099 virtual void                    setDefaultString(char* val)=0;
00100 virtual void                    setString(int index, char* val)=0;
00101 
00102 virtual char*                   shortDescription()=0;
00103 virtual char*                   description()=0;
00104 
00105 virtual void report(FILE* file){}
00106 };
00107 
00108 
00109 #endif