#ifndef __BUFFER_IMPL_HPP__ #define __BUFFER_IMPL_HPP__ namespace xios { // template spectialisation : CBuffer::put template <> bool CBuffer::put(const char& data) { return put_template(data) ; } template <> bool CBuffer::put(const int& data) { return put_template(data) ; } template <> bool CBuffer::put(const short& data) { return put_template(data) ; } template <> bool CBuffer::put(const long& data) { return put_template(data) ; } template <> bool CBuffer::put(const uint& data) { return put_template(data) ; } template <> bool CBuffer::put(const ushort& data) { return put_template(data) ; } template <> bool CBuffer::put(const ulong& data) { return put_template(data) ; } template <> bool CBuffer::put(const float& data) { return put_template(data) ; } template <> bool CBuffer::put(const double& data) { return put_template(data) ; } template <> bool CBuffer::put(const long double& data) { return put_template(data) ;} template <> bool CBuffer::put(const char* data, size_t n) { return put_template(data,n) ; } template <> bool CBuffer::put(const int* data, size_t n) { return put_template(data,n) ; } template <> bool CBuffer::put(const short* data, size_t n) { return put_template(data,n) ; } template <> bool CBuffer::put(const long* data, size_t n) { return put_template(data,n) ; } template <> bool CBuffer::put(const uint* data, size_t n) { return put_template(data,n) ; } template <> bool CBuffer::put(const ushort* data, size_t n) { return put_template(data,n) ; } template <> bool CBuffer::put(const ulong* data, size_t n) { return put_template(data,n) ; } template <> bool CBuffer::put(const float* data, size_t n) { return put_template(data,n) ; } template <> bool CBuffer::put(const double* data, size_t n) { return put_template(data,n) ; } template <> bool CBuffer::put(const long double* data, size_t n) { return put_template(data,n) ;} template <> bool CBuffer::put_ptr(const char*& data, size_t n) { return put_ptr_template(data,n) ; } template <> bool CBuffer::put_ptr(const int*& data, size_t n) { return put_ptr_template(data,n) ; } template <> bool CBuffer::put_ptr(const short*& data, size_t n) { return put_ptr_template(data,n) ; } template <> bool CBuffer::put_ptr(const long*& data, size_t n) { return put_ptr_template(data,n) ; } template <> bool CBuffer::put_ptr(const uint*& data, size_t n) { return put_ptr_template(data,n) ; } template <> bool CBuffer::put_ptr(const ushort*& data, size_t n) { return put_ptr_template(data,n) ; } template <> bool CBuffer::put_ptr(const ulong*& data, size_t n) { return put_ptr_template(data,n) ; } template <> bool CBuffer::put_ptr(const float*& data, size_t n) { return put_ptr_template(data,n) ; } template <> bool CBuffer::put_ptr(const double*& data, size_t n) { return put_ptr_template(data,n) ; } template <> bool CBuffer::put_ptr(const long double*& data, size_t n) { return put_ptr_template(data,n) ;} // template spectialisation : CBuffer::get template <> bool CBuffer::get(char& data) { return get_template(data) ; } template <> bool CBuffer::get(int& data) { return get_template(data) ; } template <> bool CBuffer::get(short& data) { return get_template(data) ; } template <> bool CBuffer::get(long& data) { return get_template(data) ; } template <> bool CBuffer::get(uint& data) { return get_template(data) ; } template <> bool CBuffer::get(ushort& data) { return get_template(data) ; } template <> bool CBuffer::get(ulong& data) { return get_template(data) ; } template <> bool CBuffer::get(float& data) { return get_template(data) ; } template <> bool CBuffer::get(double& data) { return get_template(data) ; } template <> bool CBuffer::get(long double& data) { return get_template(data) ;} template <> bool CBuffer::get(char* data, size_t n) { return get_template(data,n) ; } template <> bool CBuffer::get(int* data, size_t n) { return get_template(data,n) ; } template <> bool CBuffer::get(short* data, size_t n) { return get_template(data,n) ; } template <> bool CBuffer::get(long* data, size_t n) { return get_template(data,n) ; } template <> bool CBuffer::get(uint* data, size_t n) { return get_template(data,n) ; } template <> bool CBuffer::get(ushort* data, size_t n) { return get_template(data,n) ; } template <> bool CBuffer::get(ulong* data, size_t n) { return get_template(data,n) ; } template <> bool CBuffer::get(float* data, size_t n) { return get_template(data,n) ; } template <> bool CBuffer::get(double* data, size_t n) { return get_template(data,n) ; } template <> bool CBuffer::get(long double* data, size_t n) { return get_template(data,n) ;} template <> bool CBuffer::get_ptr(char*& data, size_t n) { return get_ptr_template(data,n) ; } template <> bool CBuffer::get_ptr(int*& data, size_t n) { return get_ptr_template(data,n) ; } template <> bool CBuffer::get_ptr(short*& data, size_t n) { return get_ptr_template(data,n) ; } template <> bool CBuffer::get_ptr(long*& data, size_t n) { return get_ptr_template(data,n) ; } template <> bool CBuffer::get_ptr(uint*& data, size_t n) { return get_ptr_template(data,n) ; } template <> bool CBuffer::get_ptr(ushort*& data, size_t n) { return get_ptr_template(data,n) ; } template <> bool CBuffer::get_ptr(ulong*& data, size_t n) { return get_ptr_template(data,n) ; } template <> bool CBuffer::get_ptr(float*& data, size_t n) { return get_ptr_template(data,n) ; } template <> bool CBuffer::get_ptr(double*& data, size_t n) { return get_ptr_template(data,n) ; } template <> bool CBuffer::get_ptr(long double*& data, size_t n) { return get_ptr_template(data,n) ;} template bool CBuffer::put_template(const T& data) { return put_template(&data,1); } template bool CBuffer::put_template(const T* data, size_t n) { bool ret; char* dataBuff ; size_t dataSize=sizeof(T)*n ; if (count+dataSize<=size) { dataBuff=(char*) data ; for(size_t i=0;i bool CBuffer::put_ptr_template(const T*& data, size_t n) { bool ret; char* dataBuff ; size_t dataSize=sizeof(T)*n ; if (count+dataSize<=size) { data=(T*) write ; write+=dataSize ; count+=dataSize; ret=true ; } else ret=false ; return ret ; } template bool CBuffer::get_template(T& data) { return get_template(&data,1) ; } template bool CBuffer::get_template(T* data, size_t n) { bool ret; char* dataBuff ; size_t dataSize=sizeof(T)*n ; if (read+dataSize<=buffer+size) { dataBuff=(char*) data ; for(size_t i=0;i bool CBuffer::get_ptr_template(T*& data, size_t n) { bool ret; char* dataBuff ; size_t dataSize=sizeof(T)*n ; if (read+dataSize<=buffer+size) { data=(T*) read ; read+=dataSize ; ret=true ; } else ret=false ; return ret ; } } #endif