source: XIOS3/trunk/src/attribute.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.8 KB
Line 
1#ifndef __XIOS_CAttribute__
2#define __XIOS_CAttribute__
3
4/// boost headers ///
5#include <boost/any.hpp>
6
7/// XIOS headers ///
8#include "xios_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   /*!
19   \class CAttribute
20      The fundamental class which describes the attributes of other different class in XIOS.
21      This class only plays a role of interface, its class child will have specific implelemtation corresponding to type of attribute
22   */
23      class CAttribute : public CObject, public virtual CBaseType
24      {
25            typedef CObject SuperClass;
26
27         public :
28
29            /// Constructeurs ///
30            explicit CAttribute(const StdString & id);
31
32            /// Accesseurs ///
33            const StdString & getName(void) const;
34
35            virtual void set(const CAttribute& ) =0 ;
36            virtual void reset(void ) =0 ;
37            /// Destructeur ///
38            virtual ~CAttribute(void);
39
40            /// Autres ///
41            virtual StdString toString(void) const = 0;
42            virtual void fromString(const StdString & str) = 0;
43            virtual StdString dump(void) const = 0;
44            virtual StdString dumpGraph(void) const = 0;
45            virtual bool isEqual(const CAttribute& ) = 0;
46            virtual int computeHash(void) = 0;
47
48            //! Returns true if and only if the attribute should be publicly exposed in the API
49            virtual bool isPublic() const { return true; }
50           
51            //! Return true if the attribute should be sent to other clients or servers
52            virtual bool doSend() const { return true; }
53
54            /*
55              Groupd of functions to generate C and Fortran interface
56            */
57            virtual void generateCInterface(ostream& oss, const string& className) = 0 ;
58            virtual void generateCInterfaceIsDefined(ostream& oss, const string& className) ;
59            virtual void generateFortran2003Interface(ostream& oss, const string& className) = 0 ;
60            virtual void generateFortran2003InterfaceIsDefined(ostream& oss, const string& className) ;
61            virtual void generateFortranInterfaceDeclaration_(ostream& oss,const string& className) = 0 ;
62            virtual void generateFortranInterfaceDeclaration(ostream& oss,const string& className) = 0 ;
63            virtual void generateFortranInterfaceBody_(ostream& oss,const string& className) = 0 ;
64            virtual void generateFortranInterfaceGetDeclaration_(ostream& oss,const string& className) = 0 ;
65            virtual void generateFortranInterfaceGetDeclaration(ostream& oss,const string& className) = 0 ;
66            virtual void generateFortranInterfaceGetBody_(ostream& oss,const string& className) = 0 ;
67            virtual void generateFortranInterfaceIsDefinedDeclaration_(ostream& oss,const string& className) ;
68            virtual void generateFortranInterfaceIsDefinedDeclaration(ostream& oss,const string& className)  ;
69            virtual void generateFortranInterfaceIsDefinedBody_(ostream& oss,const string& className) ;
70
71            virtual void setInheritedValue(const CAttribute& ) = 0 ;
72            virtual bool hasInheritedValue(void) const = 0;
73
74            bool canInherite(void) {return _canInherite ;}
75         protected : 
76            bool _canInherite ;
77            static const StdString resetInheritanceStr ; 
78
79      }; // class CAttribute
80
81   CMessage& operator<<(CMessage& msg,CAttribute& type) ;
82   CMessage& operator<<(CMessage& msg, const CAttribute&  type) ;
83 
84   CBufferOut& operator<<(CBufferOut& buffer,CAttribute& type) ;
85   CBufferIn& operator>>(CBufferIn& buffer, CAttribute&  type) ;
86
87}
88  // namespace xios
89
90#endif // __XIOS_CAttribute__
Note: See TracBrowser for help on using the repository browser.