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

Last change on this file since 438 was 432, checked in by ymipsl, 11 years ago

Enhancement : Add fortran interface to know if an attribute is set or not
ex : CALL xios_is_defined_field_attr("field_A",enabled=ok)

YM

File size: 3.9 KB
RevLine 
[219]1#ifndef __XMLIO_CAttributeTemplate__
2#define __XMLIO_CAttributeTemplate__
3
4/// boost headers ///
5#include <boost/lexical_cast.hpp>
6
[335]7/// xios headers ///
[219]8#include "xmlioserver_spl.hpp"
9#include "exception.hpp"
10#include "attribute.hpp"
[300]11#include "buffer_in.hpp"
12#include "buffer_out.hpp"
[369]13#include "type.hpp"
[219]14
[300]15
[335]16namespace xios
[219]17{
18      /// ////////////////////// Déclarations ////////////////////// ///
19      template <class T>
[369]20         class CAttributeTemplate : public CAttribute, public CType<T>
[219]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);
[369]36//            CAttributeTemplate(const CAttribute & attribut) throw (CException);
37//            CAttributeTemplate(const CAttribute * const attribut); // Not implemented.
[219]38
39          public :
40
41            /// Accesseur ///
[354]42            ValueType getValue(void) const;
[369]43//            ValueType* getRef(void) ;
[219]44
45            /// Mutateurs ///
[354]46            void setValue(const ValueType & value);
[369]47           
48            void set(const CAttribute& attr) ;
49            void set(const CAttributeTemplate& attr) ;
50           
[219]51            /// Destructeur ///
[369]52            virtual ~CAttributeTemplate(void) { }
[219]53
54            /// Operateur ///
[369]55            CAttributeTemplate& operator=(const ValueType & value);
[219]56
57            /// Autre ///
[369]58            virtual StdString toString(void) const { return _toString();}
59            virtual void fromString(const StdString & str) { _fromString(str);}
60//            virtual CAttributeTemplate* clone() const {}
61//            virtual void toBinary  (StdOStream & os) const;
62//            virtual void fromBinary(StdIStream & is);           
[219]63
[369]64            virtual bool toBuffer  (CBufferOut& buffer) const { return _toBuffer(buffer);} 
65            virtual bool fromBuffer(CBufferIn& buffer) { return _fromBuffer(buffer); } 
66//            virtual size_t size(void) const;
[313]67            virtual void generateCInterface(ostream& oss,const string& className) ;
68            virtual void generateFortran2003Interface(ostream& oss,const string& className) ;
69            virtual void generateFortranInterfaceDeclaration_(ostream& oss,const string& className) ;
70            virtual void generateFortranInterfaceBody_(ostream& oss,const string& className) ;
71            virtual void generateFortranInterfaceDeclaration(ostream& oss,const string& className) ;
72            virtual void generateFortranInterfaceGetDeclaration_(ostream& oss,const string& className) ;
73            virtual void generateFortranInterfaceGetBody_(ostream& oss,const string& className) ;
74            virtual void generateFortranInterfaceGetDeclaration(ostream& oss,const string& className) ;
[432]75//            virtual void generateFortranInterfaceIsDefinedDeclaration_(ostream& oss,const string& className) ;
76//            virtual void generateFortranInterfaceIsDefinedBody_(ostream& oss,const string& className) ;
77//            virtual void generateFortranInterfaceIsDefinedDeclaration(ostream& oss,const string& className) ;
[300]78
[313]79     
[219]80         protected :
81
82            /// Constructeurs ///
[369]83//            CAttributeTemplate(void); // Not implemented.
84         private :
85          StdString _toString(void) const;
86          void _fromString(const StdString & str);
87          bool _toBuffer  (CBufferOut& buffer) const;
88          bool _fromBuffer(CBufferIn& buffer) ;
[219]89      }; // class CAttribute   
90     
91   
92   template <class T>  void FromBinary(StdIStream & is, T & obj);
93   
[335]94} // namespace xios
[219]95
96#endif // __XMLIO_CAttributeTemplate__
Note: See TracBrowser for help on using the repository browser.