New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
attribute.hpp in vendors/XIOS/current/src – NEMO

source: vendors/XIOS/current/src/attribute.hpp @ 3408

Last change on this file since 3408 was 3408, checked in by rblod, 12 years ago

importing initial XIOS vendor drop

  • Property svn:keywords set to Id
File size: 3.5 KB
Line 
1#ifndef __XMLIO_CAttribute__
2#define __XMLIO_CAttribute__
3
4/// boost headers ///
5#include <boost/any.hpp>
6
7/// xios headers ///
8#include "xmlioserver_spl.hpp"
9#include "object.hpp"
10#include "base_type.hpp"
11#include "message.hpp"
12#include "buffer_in.hpp"
13#include "buffer_out.hpp"
14
15namespace xios
16{
17      /// ////////////////////// Déclarations ////////////////////// ///
18      class CAttribute : public CObject, public CBaseType
19      {
20            typedef CObject SuperClass;
21
22         public :
23
24            /// Constructeurs ///
25            explicit CAttribute(const StdString & id);
26            CAttribute(const CAttribute & attribut);
27            CAttribute(const CAttribute * const attribut); // Not implemented.
28
29            /// Accesseurs ///
30            const StdString & getName(void) const;
31            const boost::any & getAnyValue(void) const;
32            template <typename T> inline T getValue(void) const;
33            template <typename T> inline T* getRef(void);
34
35            /// Mutateurs ///
36            template <typename T> inline void setValue(const T & value);
37            void setAnyValue(const boost::any & value);
38            void clear(void);
39
40            /// Test ///
41            bool isEmpty(void) const;
42            template <typename T> inline bool isType(void);
43
44            /// Destructeur ///
45            virtual ~CAttribute(void);
46
47            /// Autres ///
48            virtual StdString toString(void) const = 0;
49            virtual void fromString(const StdString & str) = 0;
50
51            virtual void toBinary  (StdOStream & os) const = 0;
52            virtual void fromBinary(StdIStream & is) = 0;
53            virtual void generateCInterface(ostream& oss, const string& className) = 0 ;
54            virtual void generateFortran2003Interface(ostream& oss, const string& className) = 0 ;
55            virtual void generateFortranInterfaceDeclaration_(ostream& oss,const string& className) = 0 ;
56            virtual void generateFortranInterfaceDeclaration(ostream& oss,const string& className) = 0 ;
57            virtual void generateFortranInterfaceBody_(ostream& oss,const string& className) = 0 ;
58            virtual void generateFortranInterfaceGetDeclaration_(ostream& oss,const string& className) = 0 ;
59            virtual void generateFortranInterfaceGetDeclaration(ostream& oss,const string& className) = 0 ;
60            virtual void generateFortranInterfaceGetBody_(ostream& oss,const string& className) = 0 ;
61
62
63           
64         protected :
65
66            /// Constructeurs ///
67            CAttribute(void);  // Not implemented.
68
69            /// Propriété ///
70            boost::any value;
71
72      }; // class CAttribute
73
74      /// ////////////////////// Définitions ////////////////////// ///
75      template <typename T>
76         T CAttribute::getValue(void) const
77      { 
78         return (boost::any_cast<T>(this->value)); 
79      }
80
81      template <typename T>
82         T* CAttribute::getRef(void)
83      { 
84         return (boost::any_cast<T>(&value)); 
85      }
86
87      template <typename T>
88         void CAttribute::setValue(const T & value)
89      { 
90         this->value = value; 
91      }
92
93      template<typename T>
94         bool CAttribute::isType(void)
95      { 
96         return (this->value.type() == typeid(T)); 
97      }
98
99 
100   CMessage& operator<<(CMessage& msg,CAttribute& type) ;
101   CMessage& operator<<(CMessage& msg, const CAttribute&  type) ;
102 
103   CBufferOut& operator<<(CBufferOut& buffer,CAttribute& type) ;
104   CBufferIn& operator>>(CBufferIn& buffer, CAttribute&  type) ;
105}
106  // namespace xios
107
108#endif // __XMLIO_CAttribute__
Note: See TracBrowser for help on using the repository browser.