source: XIOS3/trunk/src/attribute_enum.hpp @ 2386

Last change on this file since 2386 was 2386, checked in by jderouillat, 23 months ago

Set the code structure to compute the hash value of an element based on its attributs, use for now before writing an element in a file

  • 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: 3.7 KB
Line 
1#ifndef __XIOS_ATTRIBUTE_ENUM__
2#define __XIOS_ATTRIBUTE_ENUM__
3
4/// XIOS headers ///
5#include "xios_spl.hpp"
6#include "exception.hpp"
7#include "attribute.hpp"
8#include "buffer_in.hpp"
9#include "buffer_out.hpp"
10#include "type.hpp"
11#include "enum.hpp"
12
13
14namespace xios
15{
16      /// ////////////////////// Declarations ////////////////////// ///
17        /*!
18        \class CAttributeEnum
19        This class implements the attribute representing enumeration
20      */
21      template <class T>
22         class CAttributeEnum : public CAttribute, public CEnum<T>
23      {
24        typedef typename T::t_enum T_enum ;
25        public :
26
27            /// Constructeurs ///
28            explicit CAttributeEnum(const StdString & id);
29            CAttributeEnum(const StdString & id,
30                               xios_map<StdString, CAttribute*> & umap);
31            CAttributeEnum(const StdString & id, const T_enum & value);
32            CAttributeEnum(const StdString & id, const T_enum & value,
33                               xios_map<StdString, CAttribute*> & umap);
34
35            /// Accesseur ///
36            T_enum getValue(void) const;
37            string getStringValue(void) const;
38
39
40            /// Mutateurs ///
41            void setValue(const T_enum & value);
42           
43            void set(const CAttribute& attr) ;
44            void set(const CAttributeEnum& attr) ;
45            void reset(void);
46           
47            void setInheritedValue(const CAttributeEnum& attr );
48            void setInheritedValue(const CAttribute& attr );
49            T_enum getInheritedValue(void)  const;
50            string getInheritedStringValue(void) const;
51            bool hasInheritedValue(void) const;                   
52           
53            bool isEqual(const CAttribute& attr );
54            int computeHash(void);
55
56            /// Destructeur ///
57            virtual ~CAttributeEnum(void) { }
58
59            /// Operateur ///
60            CAttributeEnum& operator=(const T_enum & value);
61
62            /// Autre ///
63            virtual StdString toString(void) const { return _toString();}
64            virtual void fromString(const StdString & str) { if (str==resetInheritanceStr) { reset(); _canInherite=false ;}  else _fromString(str);}
65            virtual StdString dump(void) const { return _toString();}
66            virtual StdString dumpGraph(void) const { return _dumpGraph();}
67
68            virtual bool toBuffer  (CBufferOut& buffer) const { return _toBuffer(buffer);} 
69            virtual bool fromBuffer(CBufferIn& buffer) { return _fromBuffer(buffer); } 
70           
71            virtual void generateCInterface(ostream& oss,const string& className) ;
72            virtual void generateFortran2003Interface(ostream& oss,const string& className) ;
73            virtual void generateFortranInterfaceDeclaration_(ostream& oss,const string& className) ;
74            virtual void generateFortranInterfaceBody_(ostream& oss,const string& className) ;
75            virtual void generateFortranInterfaceDeclaration(ostream& oss,const string& className) ;
76            virtual void generateFortranInterfaceGetDeclaration_(ostream& oss,const string& className) ;
77            virtual void generateFortranInterfaceGetBody_(ostream& oss,const string& className) ;
78            virtual void generateFortranInterfaceGetDeclaration(ostream& oss,const string& className) ;     
79
80         private :
81          bool isEqual_(const CAttributeEnum& attr );
82          StdString _toString(void) const;
83          void _fromString(const StdString & str);
84          bool _toBuffer  (CBufferOut& buffer) const;
85          bool _fromBuffer(CBufferIn& buffer) ;
86          CEnum<T> inheritedValue ;
87          StdString _dumpGraph(void) const;
88      }; // class CAttributeEnum   
89   
90} // namespace xios
91
92#endif // __XIOS_ATTRIBUTE_ENUM__
Note: See TracBrowser for help on using the repository browser.