source: XMLIO_V2/dev/dev_rv/src/XMLIO/base_attribut.hpp @ 126

Last change on this file since 126 was 126, checked in by hozdoba, 14 years ago

Amélioration de quelques portions de code.
Ajout de contructeurs par copie.

File size: 2.7 KB
Line 
1#ifndef __BASE_ATTRIBUT__
2#define __BASE_ATTRIBUT__
3
4using std::ostream;
5using namespace blitz ;
6
7using XMLIOSERVER::XMLIOIncompatibleTypeException;
8
9namespace XMLIOSERVER
10{
11   class BaseAttribut
12   {
13      protected :
14
15         BaseAttribut(void)
16         { /* Ne rien faire de plus */ }
17
18         BaseAttribut(const BaseAttribut& _ba)
19         { /* Ne rien faire de plus */ }
20
21      public :
22
23         friend ostream& operator <<(ostream& _out,const BaseAttribut& _attr)
24         { return (_attr.print(_out)) ; }
25
26         bool hasId(void) const { return (true); }
27
28      public : /* virtual */
29
30         virtual string getId(void) const { return (getName()); } ;
31
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;
37
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() ; }
49
50         SETTER_AND_GETTER(int)
51         SETTER_AND_GETTER(bool)
52         SETTER_AND_GETTER(double)
53         SETTER_AND_GETTER(char)
54         SETTER_AND_GETTER(std::string)
55
56#undef SETTER_AND_GETTER
57
58         virtual ~BaseAttribut(void)
59         { /* Ne rien faire de plus */ }
60
61      public : /* static */
62
63         static void error_set(void)
64         { throw XMLIOIncompatibleTypeException
65           ("BaseAttribut::set<type> > Setting value type is incompatible with attribut type"); }
66
67         static void error_get(void)
68         { throw XMLIOIncompatibleTypeException
69           ("BaseAttribut::set<type> >Getting value type is incompatible with attribut type"); }
70
71   }; //class BaseAttribut
72} // namespace XMLIOSERVER
73
74#endif //__BASE_ATTRIBUT__
75
76
77
78
Note: See TracBrowser for help on using the repository browser.