[98] | 1 | #ifndef __BASE_ATTRIBUT__ |
---|
| 2 | #define __BASE_ATTRIBUT__ |
---|
[79] | 3 | |
---|
[98] | 4 | using std::ostream; |
---|
| 5 | using namespace blitz ; |
---|
| 6 | |
---|
[104] | 7 | using XMLIOSERVER::XMLIOIncompatibleTypeException; |
---|
[98] | 8 | |
---|
| 9 | namespace XMLIOSERVER |
---|
[79] | 10 | { |
---|
[98] | 11 | class BaseAttribut |
---|
| 12 | { |
---|
[126] | 13 | protected : |
---|
[108] | 14 | |
---|
[126] | 15 | BaseAttribut(void) |
---|
| 16 | { /* Ne rien faire de plus */ } |
---|
[108] | 17 | |
---|
[126] | 18 | BaseAttribut(const BaseAttribut& _ba) |
---|
| 19 | { /* Ne rien faire de plus */ } |
---|
[108] | 20 | |
---|
[126] | 21 | public : |
---|
| 22 | |
---|
| 23 | friend ostream& operator <<(ostream& _out,const BaseAttribut& _attr) |
---|
| 24 | { return (_attr.print(_out)) ; } |
---|
| 25 | |
---|
[113] | 26 | bool hasId(void) const { return (true); } |
---|
[108] | 27 | |
---|
[126] | 28 | public : /* virtual */ |
---|
| 29 | |
---|
[113] | 30 | virtual string getId(void) const { return (getName()); } ; |
---|
[79] | 31 | |
---|
[126] | 32 | virtual bool hasValue (void) const = 0; |
---|
| 33 | virtual string getName (void) const = 0; |
---|
| 34 | virtual ostream & print (ostream& o) const = 0; |
---|
| 35 | virtual void assignValue (const BaseAttribut*) = 0; |
---|
| 36 | virtual void setFromString(const std::string&) = 0; |
---|
[108] | 37 | |
---|
[126] | 38 | #define SETTER_AND_GETTER(TYPE) \ |
---|
| 39 | virtual void setValue(const TYPE&) { BaseAttribut::error_set() ; }\ |
---|
| 40 | virtual void setValue(const Array<TYPE,1>&) { BaseAttribut::error_set() ; }\ |
---|
| 41 | virtual void setValue(const Array<TYPE,2>&) { BaseAttribut::error_set() ; }\ |
---|
| 42 | virtual void setValue(const Array<TYPE,3>&) { BaseAttribut::error_set() ; }\ |
---|
| 43 | virtual void setValue(const Array<TYPE,4>&) { BaseAttribut::error_set() ; }\ |
---|
| 44 | virtual void getValue(TYPE&) const { BaseAttribut::error_get() ; }\ |
---|
| 45 | virtual void getValue(Array<TYPE,1>&) const { BaseAttribut::error_get() ; }\ |
---|
| 46 | virtual void getValue(Array<TYPE,2>&) const { BaseAttribut::error_get() ; }\ |
---|
| 47 | virtual void getValue(Array<TYPE,3>&) const { BaseAttribut::error_get() ; }\ |
---|
| 48 | virtual void getValue(Array<TYPE,4>&) const { BaseAttribut::error_get() ; } |
---|
[108] | 49 | |
---|
[104] | 50 | SETTER_AND_GETTER(int) |
---|
| 51 | SETTER_AND_GETTER(bool) |
---|
| 52 | SETTER_AND_GETTER(double) |
---|
| 53 | SETTER_AND_GETTER(char) |
---|
[126] | 54 | SETTER_AND_GETTER(std::string) |
---|
[108] | 55 | |
---|
[104] | 56 | #undef SETTER_AND_GETTER |
---|
[79] | 57 | |
---|
[126] | 58 | virtual ~BaseAttribut(void) |
---|
| 59 | { /* Ne rien faire de plus */ } |
---|
| 60 | |
---|
| 61 | public : /* static */ |
---|
| 62 | |
---|
[104] | 63 | static void error_set(void) |
---|
[126] | 64 | { throw XMLIOIncompatibleTypeException |
---|
| 65 | ("BaseAttribut::set<type> > Setting value type is incompatible with attribut type"); } |
---|
[104] | 66 | |
---|
| 67 | static void error_get(void) |
---|
[126] | 68 | { throw XMLIOIncompatibleTypeException |
---|
| 69 | ("BaseAttribut::set<type> >Getting value type is incompatible with attribut type"); } |
---|
[108] | 70 | |
---|
[98] | 71 | }; //class BaseAttribut |
---|
| 72 | } // namespace XMLIOSERVER |
---|
[79] | 73 | |
---|
[98] | 74 | #endif //__BASE_ATTRIBUT__ |
---|
[108] | 75 | |
---|
[114] | 76 | |
---|
| 77 | |
---|
| 78 | |
---|