00001 #ifndef INCLUDED_Serializer_h
00002 #define INCLUDED_Serializer_h
00003
00004
00005 class Serializer {
00006 public:
00007
00008 protected:
00009
00010 template<class T>
00011 inline static void encode(char **dst, T value) {
00012 memcpy(*dst, (char *)&value, sizeof(T));
00013
00014
00015
00016 (*dst) += sizeof(T);
00017 }
00018
00019
00020 inline static void hostToNetwork(char *dst, char *src, int length) {
00021 for (int i=0; i<length; i++)
00022 dst[length-1-i]=src[i];
00023 }
00024
00025
00026 inline static void encode(char **dst, char *src, int length) {
00027 memcpy(*dst, src, length);
00028 (*dst) +=length;
00029 }
00030
00031
00032 inline static void encodeDoublesAsFloats(char **dst, double *src, int length) {
00033 for (int i=0; i<length; i++)
00034 encode(dst, float(src[i]));
00035 }
00036 };
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049 #endif