source: XIOS/trunk/src/attribute_template.hpp @ 450

Last change on this file since 450 was 445, checked in by ymipsl, 11 years ago

Add possibility to make inheritance of attributes and reference before closing the context definition.
New fortran fonction : xios_solve inheritance()
After this call, the value of attribute have the inherited value of their parent.

YM

File size: 4.2 KB
Line 
1#ifndef __XMLIO_CAttributeTemplate__
2#define __XMLIO_CAttributeTemplate__
3
4/// boost headers ///
5#include <boost/lexical_cast.hpp>
6
7/// xios headers ///
8#include "xmlioserver_spl.hpp"
9#include "exception.hpp"
10#include "attribute.hpp"
11#include "buffer_in.hpp"
12#include "buffer_out.hpp"
13#include "type.hpp"
14
15
16namespace xios
17{
18      /// ////////////////////// Déclarations ////////////////////// ///
19      template <class T>
20         class CAttributeTemplate : public CAttribute, public CType<T>
21      {
22            typedef CAttribute SuperClass;
23
24         public :
25
26            /// Typedef ///
27            typedef T ValueType;
28
29            /// Constructeurs ///
30            explicit CAttributeTemplate(const StdString & id);
31            CAttributeTemplate(const StdString & id,
32                               xios_map<StdString, CAttribute*> & umap);
33            CAttributeTemplate(const StdString & id, const ValueType & value);
34            CAttributeTemplate(const StdString & id, const ValueType & value,
35                               xios_map<StdString, CAttribute*> & umap);
36//            CAttributeTemplate(const CAttribute & attribut) throw (CException);
37//            CAttributeTemplate(const CAttribute * const attribut); // Not implemented.
38
39          public :
40
41            /// Accesseur ///
42            ValueType getValue(void) const;
43//            ValueType* getRef(void) ;
44
45            /// Mutateurs ///
46            void setValue(const ValueType & value);
47           
48            void set(const CAttribute& attr) ;
49            void set(const CAttributeTemplate& attr) ;
50
51            void setInheritedValue(const CAttributeTemplate& attr );
52            void setInheritedValue(const CAttribute& attr );
53            T getInheritedValue(void) const ;
54            bool hasInheritedValue(void) const;
55           
56            /// Destructeur ///
57            virtual ~CAttributeTemplate(void) { }
58
59            /// Operateur ///
60            CAttributeTemplate& operator=(const ValueType & value);
61
62            /// Autre ///
63            virtual StdString toString(void) const { return _toString();}
64            virtual void fromString(const StdString & str) { _fromString(str);}
65//            virtual CAttributeTemplate* clone() const {}
66//            virtual void toBinary  (StdOStream & os) const;
67//            virtual void fromBinary(StdIStream & is);           
68
69            virtual bool toBuffer  (CBufferOut& buffer) const { return _toBuffer(buffer);} 
70            virtual bool fromBuffer(CBufferIn& buffer) { return _fromBuffer(buffer); } 
71//            virtual size_t size(void) const;
72            virtual void generateCInterface(ostream& oss,const string& className) ;
73            virtual void generateFortran2003Interface(ostream& oss,const string& className) ;
74            virtual void generateFortranInterfaceDeclaration_(ostream& oss,const string& className) ;
75            virtual void generateFortranInterfaceBody_(ostream& oss,const string& className) ;
76            virtual void generateFortranInterfaceDeclaration(ostream& oss,const string& className) ;
77            virtual void generateFortranInterfaceGetDeclaration_(ostream& oss,const string& className) ;
78            virtual void generateFortranInterfaceGetBody_(ostream& oss,const string& className) ;
79            virtual void generateFortranInterfaceGetDeclaration(ostream& oss,const string& className) ;
80//            virtual void generateFortranInterfaceIsDefinedDeclaration_(ostream& oss,const string& className) ;
81//            virtual void generateFortranInterfaceIsDefinedBody_(ostream& oss,const string& className) ;
82//            virtual void generateFortranInterfaceIsDefinedDeclaration(ostream& oss,const string& className) ;
83
84     
85         protected :
86
87            /// Constructeurs ///
88//            CAttributeTemplate(void); // Not implemented.
89         private :
90          StdString _toString(void) const;
91          void _fromString(const StdString & str);
92          bool _toBuffer  (CBufferOut& buffer) const;
93          bool _fromBuffer(CBufferIn& buffer) ;
94         
95          CType<T> inheritedValue ;
96      }; // class CAttribute   
97     
98   
99   template <class T>  void FromBinary(StdIStream & is, T & obj);
100   
101} // namespace xios
102
103#endif // __XMLIO_CAttributeTemplate__
Note: See TracBrowser for help on using the repository browser.