1 /* CC0 license (public domain) - see LICENSE file for details */
3 #include <ccan/endian/endian.h>
6 bool pull_bytes(const char **p, size_t *max_len, void *dst, size_t len)
20 bool pull_u64(const char **p, size_t *max_len, uint64_t *val)
24 if (pull_bytes(p, max_len, &v, sizeof(v))) {
26 *val = le64_to_cpu(v);
32 bool pull_u32(const char **p, size_t *max_len, uint32_t *val)
36 if (pull_bytes(p, max_len, &v, sizeof(v))) {
38 *val = le32_to_cpu(v);
44 bool pull_u16(const char **p, size_t *max_len, uint16_t *val)
48 if (pull_bytes(p, max_len, &v, sizeof(v))) {
50 *val = le16_to_cpu(v);
56 bool pull_u8(const char **p, size_t *max_len, uint8_t *val)
58 return pull_bytes(p, max_len, val, sizeof(*val));
61 bool pull_s64(const char **p, size_t *max_len, int64_t *val)
65 if (pull_bytes(p, max_len, &v, sizeof(v))) {
67 *val = le64_to_cpu(v);
73 bool pull_s32(const char **p, size_t *max_len, int32_t *val)
77 if (pull_bytes(p, max_len, &v, sizeof(v))) {
79 *val = le32_to_cpu(v);
85 bool pull_s16(const char **p, size_t *max_len, int16_t *val)
89 if (pull_bytes(p, max_len, &v, sizeof(v))) {
91 *val = le16_to_cpu(v);
97 bool pull_s8(const char **p, size_t *max_len, int8_t *val)
99 return pull_bytes(p, max_len, val, sizeof(*val));
102 bool pull_char(const char **p, size_t *max_len, char *val)
104 return pull_bytes(p, max_len, val, sizeof(*val));