XROAD
xroad_binary.h
Go to the documentation of this file.
1 
6 #pragma once
7 
8 #ifndef _GNU_SOURCE
9 # define _GNU_SOURCE
10 #endif
11 
12 #include "xroad_common_fwd.h"
13 #include <stdint.h>
14 
15 #ifdef __cplusplus
16 extern "C"
17 {
18 #endif
19 
24 {
25  uint32_t len;
26  void* data;
27 };
28 
32 #define xroad_binary_is_null(bin) \
33 ({ \
34  xroad_binary_t a = (bin); \
35  (a.len == 0 && a.data == NULL); \
36 })
37 
41 #define xroad_binary(bin, len) \
42  ({ \
43  void* _b_11_ = (void*)(bin); \
44  (xroad_binary_t){_b_11_ == NULL ? 0 : (uint32_t)(len), _b_11_}; \
45  })
46 
50 #define xroad_binary_null (xroad_binary_t){0, NULL}
51 
56 #define xroad_binary_cmp(a, b) \
57 ({ \
58  xroad_binary_t tmp_1234599 = (a); \
59  xroad_binary_t tmp_5432199 = (b); \
60  tmp_1234599.len == tmp_5432199.len ? \
61  memcmp(tmp_1234599.data, tmp_5432199.data, tmp_1234599.len) : \
62  (tmp_1234599.len < tmp_5432199.len ? -1 : 1); \
63 })
64 #ifdef __cplusplus
65 }
66 #endif
Definition: xroad_binary.h:24
uint32_t len
length of data
Definition: xroad_binary.h:25
void * data
binary data
Definition: xroad_binary.h:26