#ifndef __XMLIO_CArray__ #define __XMLIO_CArray__ /// boost headers /// #include #include #include /// xmlioserver headers /// #include "xmlioserver_spl.hpp" #include "buffer_in.hpp" #include "buffer_out.hpp" namespace xmlioserver { template detail::multi_array::extent_gen getExtentNull(void) { return getExtentNull()[0];} template<> 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); explicit CArray(); template CArray(const ExtentList & sizes, const boost::general_storage_order & store); 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 xmlioserver #include "array_impl.hpp" #include "array_mac.hpp" #endif // __XMLIO_CArray__