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

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

Mise à jour

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