32 return ((ptrdiff_t)a)-((ptrdiff_t)b);
36 return ((
uint8_t*)ptr)+byte_len;
40 return ((
uint8_t*)ptr)-byte_len;
47 #define ZRTOS_TYPES__BYTE_ALIGNMENT (__alignof__(max_align_t)) 48 #define ZRTOS_TYPES__BYTE_ALIGNMENT_MASK (__alignof__(max_align_t)-1) 51 uintptr_t ret = (uintptr_t)ptr;
66 #define zrtos_types__get_offset_of(type,member) \ 67 __builtin_offsetof(type,member) 69 #define zrtos_types__get_container_of(ptr, type, member) \ 71 typeof( ((type *)0)->member ) *mptr__ = (typeof( ((type *)0)->member ) *)(ptr); \ 72 (type *)((char *)mptr__ - zrtos_types__get_offset_of(type,member)); \ 75 #define zrtos_types__get_container_of_ex(ptr, type, member) \ 76 ((ptr) ? zrtos_types__get_container_of(ptr, type, member) : 0) \ 78 #define ZRTOS_TYPES__MIN(a,b) ((a)<(b)?(a):(b)) 79 #define ZRTOS_TYPES__MAX(a,b) ((a)>(b)?(a):(b)) 80 #define ZRTOS_TYPES__CMP(type,a_len,b_len)\ 81 ((a_len) < (b_len) ? - 1 : ((a_len) > (b_len) ? 1 : 0)) 84 uint32_t first_address
85 ,uint32_t last_address
89 if(offset >= first_address
90 && offset <= last_address){
93 ,last_address - offset
126 uint64_t first_address
127 ,uint64_t last_address
131 if(offset >= first_address
132 && offset <= last_address){
135 ,last_address - offset
144 #define ZRTOS_TYPES__TYPEOF(a) auto 146 #define ZRTOS_TYPES__TYPEOF(a) typeof(a) 149 #define ZRTOS_TYPES__SWAP(a,b) \ 151 ZRTOS_TYPES__TYPEOF(a) a____ = (a); \ 156 #define ZRTOS_TYPES__SWAP_PTR_CONTENTS(a,b) \ 158 ZRTOS_TYPES__TYPEOF(*a) a____ = *(a); \ 163 #define ZRTOS_TYPES__IS_ADD_OVERFLOW(a,b) \ 166 #define ZRTOS_TYPES__GET_STATIC_ARRAY_LENGTH(arr) \ 167 (sizeof(arr)/sizeof((arr)[0])) 169 #define ZRTOS_TYPES__SIZE_MIN (0) 170 #define ZRTOS_TYPES__SIZE_MAX SIZE_MAX 172 #define ZRTOS_TYPES__INT8_MIN INT8_MIN 173 #define ZRTOS_TYPES__INT8_MAX INT8_MAX 174 #define ZRTOS_TYPES__INT16_MIN INT16_MIN 175 #define ZRTOS_TYPES__INT16_MAX INT16_MAX 176 #define ZRTOS_TYPES__INT32_MIN INT32_MIN 177 #define ZRTOS_TYPES__INT32_MAX INT32_MAX 178 #define ZRTOS_TYPES__INT64_MIN INT64_MIN 179 #define ZRTOS_TYPES__INT64_MAX INT64_MAX 181 #define ZRTOS_TYPES__UINT8_MIN (0) 182 #define ZRTOS_TYPES__UINT8_MAX UINT8_MAX 183 #define ZRTOS_TYPES__UINT16_MIN (0) 184 #define ZRTOS_TYPES__UINT16_MAX UINT16_MAX 185 #define ZRTOS_TYPES__UINT32_MIN (0) 186 #define ZRTOS_TYPES__UINT32_MAX UINT32_MAX 187 #define ZRTOS_TYPES__UINT64_MIN (0) 188 #define ZRTOS_TYPES__UINT64_MAX UINT64_MAX 207 #define ZRTOS_TYPES__MAP(value,in_min,in_max,out_min,out_max)\ 208 (((value)-(in_min))*((out_max)-(out_min))/((in_max)-(in_min))+(out_min)) 211 return ((__uint16_t) ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)));
215 return ((((x) & 0xff000000u) >> 24) | (((x) & 0x00ff0000u) >> 8)
216 | (((x) & 0x0000ff00u) << 8) | (((x) & 0x000000ffu) << 24));
221 ((((x) & 0xff00000000000000ull) >> 56)
222 | (((x) & 0x00ff000000000000ull) >> 40)
223 | (((x) & 0x0000ff0000000000ull) >> 24)
224 | (((x) & 0x000000ff00000000ull) >> 8)
225 | (((x) & 0x00000000ff000000ull) << 8)
226 | (((x) & 0x0000000000ff0000ull) << 24)
227 | (((x) & 0x000000000000ff00ull) << 40)
228 | (((x) & 0x00000000000000ffull) << 56))
232 #if ZRTOS_ARCH__BYTE_ORDER == ZRTOS_ARCH__BYTE_ORDER_LITTLE_ENDIAN 233 # define zrtos_types__htobe16(x) zrtos_types__uint16_bswap(x) 234 # define zrtos_types__htole16(x) (x) 235 # define zrtos_types__be16toh(x) zrtos_types__uint16_bswap(x) 236 # define zrtos_types__le16toh(x) (x) 238 # define zrtos_types__htobe32(x) zrtos_types__uint32_bswap(x) 239 # define zrtos_types__htole32(x) (x) 240 # define zrtos_types__be32toh(x) zrtos_types__uint32_bswap(x) 241 # define zrtos_types__le32toh(x) (x) 243 # define zrtos_types__htobe64(x) zrtos_types__uint64_bswap(x) 244 # define zrtos_types__htole64(x) (x) 245 # define zrtos_types__be64toh(x) zrtos_types__uint64_bswap(x) 246 # define zrtos_types__le64toh(x) (x) 248 # define zrtos_types__htobe16(x) (x) 249 # define zrtos_types__htole16(x) zrtos_types__uint16_bswap(x) 250 # define zrtos_types__be16toh(x) (x) 251 # define zrtos_types__le16toh(x) zrtos_types__uint16_bswap(x) 253 # define zrtos_types__htobe32(x) (x) 254 # define zrtos_types__htole32(x) zrtos_types__uint32_bswap(x) 255 # define zrtos_types__be32toh(x) (x) 256 # define zrtos_types__le32toh(x) zrtos_types__uint32_bswap(x) 258 # define zrtos_types__htobe64(x) (x) 259 # define zrtos_types__htole64(x) zrtos_types__uint64_bswap(x) 260 # define zrtos_types__be64toh(x) (x) 261 # define zrtos_types__le64toh(x) zrtos_types__uint64_bswap(x) 265 return c >=
'0' && c <=
'9';
269 return c ==
' ' || c ==
'\t';
273 return c ==
'\r' || c ==
'\n';
void * zrtos_types__ptr_subtract(void *ptr, size_t byte_len)
bool zrtos_types__uint32_is_valid_address_range(uint32_t first_address, uint32_t last_address, uint32_t offset, size_t *length)
#define ZRTOS_TYPES__BYTE_ALIGNMENT
void * zrtos_types__ptr_to_alignment(void *ptr)
uint32_t zrtos_types__uint32_bswap(uint32_t x)
size_t zrtos_types__uint8_to_hex(uint8_t *dest, uint8_t src)
uint16_t zrtos_types__uint16_bswap(uint16_t x)
bool zrtos_types__uint64_is_valid_address_range(uint64_t first_address, uint64_t last_address, uint64_t offset, size_t *length)
bool zrtos_types__is_digit(char c)
uint64_t zrtos_types__uint64_bswap(uint64_t x)
#define ZRTOS_TYPES__MIN(a, b)
void * zrtos_types__ptr_add(void *ptr, size_t byte_len)
bool zrtos_types__is_newline(char c)
size_t zrtos_types__ptr_get_byte_distance(void *bigger, void *smaller)
int zrtos_types__ptr_cmp(void *a, void *b)
#define ZRTOS_TYPES__BYTE_ALIGNMENT_MASK
bool zrtos_types__ptr_is_valid_address_range(void *first_address, void *last_address, size_t offset, size_t *length)
size_t zrtos_types__ceil_size_to_alignment(size_t len)
bool zrtos_types__is_whitespace(char c)