source: XIOS3/trunk/src/attribute_template.hpp @ 2426

Last change on this file since 2426 was 2388, checked in by jderouillat, 22 months ago

Manage hash values with size_t in hash tables of elements associated to output files

  • Property copyright set to
    Software name : XIOS (Xml I/O Server)
    http://forge.ipsl.jussieu.fr/ioserver
    Creation date : January 2009
    Licence : CeCCIL version2
    see license file in root directory : Licence_CeCILL_V2-en.txt
    or http://www.cecill.info/licences/Licence_CeCILL_V2-en.html
    Holder : CEA/LSCE (Laboratoire des Sciences du CLimat et de l'Environnement)
    CNRS/IPSL (Institut Pierre Simon Laplace)
    Project Manager : Yann Meurdesoif
    yann.meurdesoif@cea.fr
File size: 4.7 KB
Line 
1#ifndef __XIOS_CAttributeTemplate__
2#define __XIOS_CAttributeTemplate__
3
4/// boost headers ///
5#include <boost/lexical_cast.hpp>
6
7/// XIOS headers ///
8#include "xios_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
15namespace xios
16{
17      /// ////////////////////// Déclarations ////////////////////// ///
18  /*!
19    \class CAttributeTemplate
20    The class implements attribute of some basic types
21  */
22       template <class T>
23         class CAttributeTemplate : public CAttribute, public CType<T>
24      {
25            typedef CAttribute SuperClass;
26
27         public :
28
29            /// Typedef ///
30            typedef T ValueType;
31
32            /// Constructeurs ///
33            explicit CAttributeTemplate(const StdString & id);
34            CAttributeTemplate(const StdString & id,
35                               xios_map<StdString, CAttribute*> & umap);
36            CAttributeTemplate(const StdString & id, const ValueType & value);
37            CAttributeTemplate(const StdString & id, const ValueType & value,
38                               xios_map<StdString, CAttribute*> & umap);
39//            CAttributeTemplate(const CAttribute & attribut) throw (CException);
40//            CAttributeTemplate(const CAttribute * const attribut); // Not implemented.
41
42          public :
43
44            /// Accesseur ///
45            ValueType getValue(void) const;
46//            ValueType* getRef(void) ;
47
48            /// Mutateurs ///
49            void setValue(const ValueType & value);
50
51            void set(const CAttribute& attr) ;
52            void set(const CAttributeTemplate& attr) ;
53            void reset(void) ;
54            void checkEmpty(void) const;
55
56
57            void setInheritedValue(const CAttributeTemplate& attr );
58            void setInheritedValue(const CAttribute& attr );
59            T getInheritedValue(void) const ;
60            bool hasInheritedValue(void) const;
61           
62            bool isEqual(const CAttribute& attr );
63            size_t computeHash(void);
64
65            /// Destructeur ///
66            virtual ~CAttributeTemplate(void) { }
67
68            /// Operateur ///
69            CAttributeTemplate& operator=(const ValueType & value);
70
71            /// Autre ///
72            virtual StdString toString(void) const { return _toString();}
73            virtual void fromString(const StdString & str) { if (str==resetInheritanceStr) { reset(); _canInherite=false ;}  else _fromString(str);}
74//            virtual CAttributeTemplate* clone() const {}
75//            virtual void toBinary  (StdOStream & os) const;
76//            virtual void fromBinary(StdIStream & is);
77            virtual StdString dump(void) const { return _dump();}
78            virtual StdString dumpGraph(void) const { return _dumpGraph();}
79
80            virtual bool toBuffer  (CBufferOut& buffer) const { return _toBuffer(buffer);}
81            virtual bool fromBuffer(CBufferIn& buffer) { return _fromBuffer(buffer); }
82//            virtual size_t size(void) const;
83            virtual void generateCInterface(ostream& oss,const string& className) ;
84            virtual void generateFortran2003Interface(ostream& oss,const string& className) ;
85            virtual void generateFortranInterfaceDeclaration_(ostream& oss,const string& className) ;
86            virtual void generateFortranInterfaceBody_(ostream& oss,const string& className) ;
87            virtual void generateFortranInterfaceDeclaration(ostream& oss,const string& className) ;
88            virtual void generateFortranInterfaceGetDeclaration_(ostream& oss,const string& className) ;
89            virtual void generateFortranInterfaceGetBody_(ostream& oss,const string& className) ;
90            virtual void generateFortranInterfaceGetDeclaration(ostream& oss,const string& className) ;
91//            virtual void generateFortranInterfaceIsDefinedDeclaration_(ostream& oss,const string& className) ;
92//            virtual void generateFortranInterfaceIsDefinedBody_(ostream& oss,const string& className) ;
93//            virtual void generateFortranInterfaceIsDefinedDeclaration(ostream& oss,const string& className) ;
94
95
96         protected :
97
98            /// Constructeurs ///
99//            CAttributeTemplate(void); // Not implemented.
100         private :
101          bool isEqual_(const CAttributeTemplate& attr);
102          StdString _toString(void) const;
103          StdString _dump(void) const;
104          StdString _dumpGraph(void) const;
105          void _fromString(const StdString & str);
106          bool _toBuffer  (CBufferOut& buffer) const;
107          bool _fromBuffer(CBufferIn& buffer) ;
108
109          CType<T> inheritedValue ;
110      }; // class CAttribute
111
112
113   template <class T>  void FromBinary(StdIStream & is, T & obj);
114
115
116} // namespace xios
117
118#endif // __XIOS_CAttributeTemplate__
Note: See TracBrowser for help on using the repository browser.