#ifndef __XIOS_CArray__ #define __XIOS_CArray__ /// boost headers /// #include #include #include /// XIOS headers /// #include "xios_spl.hpp" #include "buffer_in.hpp" #include "buffer_out.hpp" namespace xios { template inline detail::multi_array::extent_gen getExtentNull(void) { return getExtentNull()[0];} template<> inline detail::multi_array::extent_gen<1> getExtentNull<1>(void) { return extents[0]; } /// ////////////////////// Déclarations ////////////////////// /// template > class CArray : public boost::multi_array { /// Définition de type /// typedef boost::multi_array SuperClass; public: typedef ValueType ValType; /// Constructeurs /// // template // explicit CArray(const ExtentList & sizes); template CArray(const ExtentList & sizes) : boost::multi_array (sizes, boost::fortran_storage_order()) { /* Ne rien faire de plus */ } explicit CArray(); // template // CArray(const ExtentList & sizes, const boost::general_storage_order & store); template CArray(const ExtentList & sizes, const boost::general_storage_order & store) : boost::multi_array (sizes, store) { /* Ne rien faire de plus */ } CArray(const CArray & array); // NEVER IMPLEMENTED. CArray(const CArray * const array); // NEVER IMPLEMENTED. public: /// Flux /// template friend StdOStream & operator << (StdOStream & os, const CArray & array); template friend StdIStream & operator >> (StdIStream & is, CArray & array); public: void toBinary (StdOStream & os) const; void fromBinary(StdIStream & is); size_t getSize(void) const ; bool toBuffer (CBufferOut& buffer) const; bool fromBuffer(CBufferIn& buffer); /// Destructeur /// virtual ~CArray(void); }; // class CArray ///--------------------------------------------------------------- } // namespace xios //#include "array_impl.hpp" #include "array_mac.hpp" namespace xios { template void FromBinary(StdIStream & is, ARRAY(ValueType, 1) & array) ; template void FromBinary(StdIStream & is, ARRAY(ValueType, 2) & array) ; template void FromBinary(StdIStream & is, ARRAY(ValueType, 3) & array) ; } #endif // __XIOS_CArray__