00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include <sys/types.h>
00020 #include <iostream>
00021 #include <stdio.h>
00022
00023 #ifndef _SDNV_H_
00024 #define _SDNV_H_
00025
00044 namespace dtn
00045 {
00046 namespace data
00047 {
00048 class SDNV {
00049 public:
00054 static const size_t MAX_LENGTH = 10;
00055
00056
00057 inline static size_t encoding_len(u_int16_t val){ return encoding_len((u_int64_t)val); }
00058 inline static size_t encoding_len(u_int32_t val){ return encoding_len((u_int64_t)val); }
00059 inline static int encode(u_int16_t val, char* bp, size_t len){ return encode((u_int64_t)val, (u_char*)bp, len); }
00060 inline static int encode(u_int32_t val, char* bp, size_t len){ return encode((u_int64_t)val, (u_char*)bp, len); }
00061 inline static int encode(u_int64_t val, char* bp, size_t len){ return encode(val, (u_char*)bp, len); }
00062 inline static int encode(float val, char* bp, size_t len){ return encode(val, (u_char*)bp, len); }
00063 inline static int decode(char* bp, size_t len, u_int64_t* val){ return decode((u_char*)bp, len, val); }
00064 inline static int decode(char* bp, size_t len, u_int32_t* val){ return decode((u_char*)bp, len, val); }
00065
00066 static size_t encoding_len(u_int64_t val);
00067 static size_t encoding_len(float val_f);
00068 static int encode(u_int64_t val, u_char* bp, size_t len);
00069 static int encode(float val_f, u_char* bp, size_t len);
00070 static int decode(const u_char* bp, size_t len, float* val_f);
00071 static int decode(const u_char* bp, size_t len, u_int64_t* val);
00072 static int decode(const u_char* bp, size_t len, u_int32_t* val);
00073 static int decode(const u_char* bp, size_t len, u_int16_t* val);
00074 static size_t len(const u_char* bp);
00075 };
00076 }
00077 }
00078
00079 #endif