#include "IO/PackData.h" #include /******************************************************** * Concrete implimentations for packing/unpacking * ********************************************************/ // unsigned char template<> size_t packsize( const unsigned char& rhs ) { return sizeof(unsigned char); } template<> void pack( const unsigned char& rhs, char *buffer ) { memcpy(buffer,&rhs,sizeof(unsigned char)); } template<> void unpack( unsigned char& data, const char *buffer ) { memcpy(&data,buffer,sizeof(unsigned char)); } // char template<> size_t packsize( const char& rhs ) { return sizeof(char); } template<> void pack( const char& rhs, char *buffer ) { memcpy(buffer,&rhs,sizeof(char)); } template<> void unpack( char& data, const char *buffer ) { memcpy(&data,buffer,sizeof(char)); } // int template<> size_t packsize( const int& rhs ) { return sizeof(int); } template<> void pack( const int& rhs, char *buffer ) { memcpy(buffer,&rhs,sizeof(int)); } template<> void unpack( int& data, const char *buffer ) { memcpy(&data,buffer,sizeof(int)); } // unsigned int template<> size_t packsize( const unsigned int& rhs ) { return sizeof(unsigned int); } template<> void pack( const unsigned int& rhs, char *buffer ) { memcpy(buffer,&rhs,sizeof(int)); } template<> void unpack( unsigned int& data, const char *buffer ) { memcpy(&data,buffer,sizeof(int)); } // size_t template<> size_t packsize( const size_t& rhs ) { return sizeof(size_t); } template<> void pack( const size_t& rhs, char *buffer ) { memcpy(buffer,&rhs,sizeof(size_t)); } template<> void unpack( size_t& data, const char *buffer ) { memcpy(&data,buffer,sizeof(size_t)); } // std::string template<> size_t packsize( const std::string& rhs ) { return rhs.size()+1; } template<> void pack( const std::string& rhs, char *buffer ) { memcpy(buffer,rhs.c_str(),rhs.size()+1); } template<> void unpack( std::string& data, const char *buffer ) { data = std::string(buffer); }