attribute_array.hpp 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #ifndef __XIOS_ATTRIBUTE_ARRAY__
  2. #define __XIOS_ATTRIBUTE_ARRAY__
  3. /// XIOS headers ///
  4. #include "xios_spl.hpp"
  5. #include "exception.hpp"
  6. #include "attribute.hpp"
  7. #include "buffer_in.hpp"
  8. #include "buffer_out.hpp"
  9. #include "array_new.hpp"
  10. namespace xios
  11. {
  12. /// ////////////////////// Déclarations ////////////////////// ///
  13. /*!
  14. \class CAttributeArray
  15. This class implements the attribute representing array of value
  16. */
  17. template <typename T_numtype, int N_rank>
  18. class CAttributeArray : public CAttribute, public CArray<T_numtype, N_rank>
  19. {
  20. public :
  21. using CArray<T_numtype,N_rank>::operator = ;
  22. /// Constructeurs ///
  23. explicit CAttributeArray(const StdString & id);
  24. CAttributeArray(const StdString & id, xios_map<StdString, CAttribute*> & umap);
  25. CAttributeArray(const StdString & id, const CArray<T_numtype, N_rank>& value);
  26. CAttributeArray(const StdString & id, const CArray<T_numtype, N_rank>& value,
  27. xios_map<StdString, CAttribute*> & umap);
  28. /// Accesseur ///
  29. CArray<T_numtype, N_rank> getValue(void) const;
  30. /// Mutateurs ///
  31. void setValue(const CArray<T_numtype, N_rank>& value);
  32. void set(const CAttribute& attr) ;
  33. void set(const CAttributeArray& attr) ;
  34. void reset(void) ;
  35. void setInheritedValue(const CAttributeArray& attr );
  36. void setInheritedValue(const CAttribute& attr );
  37. CArray<T_numtype, N_rank> getInheritedValue(void) const ;
  38. bool hasInheritedValue(void) const;
  39. bool isEqual(const CAttribute& attr);
  40. /// Destructeur ///
  41. virtual ~CAttributeArray(void) { }
  42. /// Autre ///
  43. virtual string toString(void) const { return _toString();}
  44. virtual void fromString(const StdString & str) { if (str==resetInheritanceStr) { reset(); _canInherite=false ;} else _fromString(str);}
  45. virtual bool toBuffer (CBufferOut& buffer) const { return _toBuffer(buffer);}
  46. virtual bool fromBuffer(CBufferIn& buffer) { return _fromBuffer(buffer); }
  47. virtual void generateCInterface(ostream& oss,const string& className) ;
  48. virtual void generateFortran2003Interface(ostream& oss,const string& className) ;
  49. virtual void generateFortranInterfaceDeclaration_(ostream& oss,const string& className) ;
  50. virtual void generateFortranInterfaceBody_(ostream& oss,const string& className) ;
  51. virtual void generateFortranInterfaceDeclaration(ostream& oss,const string& className) ;
  52. virtual void generateFortranInterfaceGetDeclaration_(ostream& oss,const string& className) ;
  53. virtual void generateFortranInterfaceGetBody_(ostream& oss,const string& className) ;
  54. virtual void generateFortranInterfaceGetDeclaration(ostream& oss,const string& className) ;
  55. private :
  56. bool isEqual_(const CAttributeArray& attr);
  57. CArray<T_numtype, N_rank> inheritedValue ;
  58. StdString _toString(void) const;
  59. void _fromString(const StdString & str);
  60. bool _toBuffer (CBufferOut& buffer) const;
  61. bool _fromBuffer(CBufferIn& buffer) ;
  62. }; // class CAttributeEnum
  63. } // namespace xios
  64. #endif // __XIOS_ATTRIBUTE_ARRAY__