5 #ifndef ctrlplane_parse_object_h
6 #define ctrlplane_parse_object_h
11 #if defined(__linux__)
15 #ifdef __LITTLE_ENDIAN__
16 #define be64_to_host(data) bswap_64(data)
17 #define host_to_be64(data) bswap_64(data)
19 #define be64_to_host(data) (data)
20 #define host_to_be64(data) (data)
23 static inline uint32_t
get_short(
const uint8_t *data) {
24 uint32_t value = *data++;
32 for (
int i = 0; i < size; ++i) {
39 static inline uint64_t
get_value(
const uint8_t *data,
int size) {
43 }
else if (size == 2) {
45 }
else if (size <= 8) {
47 for (
int i = 0; i < size; ++i) {
55 static inline void put_value(uint8_t *data,
int size, uint64_t value) {
56 for (
int i = 0; i < size; i++) {
57 int offset = (size - (i + 1)) * 8;
58 if (offset >= (
int)
sizeof(value)*8) {
61 *data++ = ((value >> offset) & 0xff);
67 uint64_t *pp = (uint64_t *)data;
69 double *dp = (
double *)&re;
73 static inline void put_double(uint8_t *data,
double value) {
74 uint64_t *pp = (uint64_t *)data;
static uint64_t get_value_unaligned(const uint8_t *data, int size)
int FindOffset(const char *)
static double get_double(const uint8_t *data)
#define host_to_be64(data)
static uint64_t get_value(const uint8_t *data, int size)
static uint32_t get_short(const uint8_t *data)
static void put_double(uint8_t *data, double value)
void SaveOffset(std::string, int)
#define be64_to_host(data)
std::map< std::string, int > offsets_
static void put_value(uint8_t *data, int size, uint64_t value)