blob: 266b58f108adb71d6d95e8fb9b1ef2c40152d469 [file] [log] [blame]
Allan MacKinnon4359d522018-06-19 13:57:04 -07001/*
2 * Copyright 2016 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can
5 * be found in the LICENSE file.
6 *
7 */
8
9#pragma once
10
11//
12//
13//
14
Allan MacKinnon9e0d7e42018-07-16 15:57:05 -070015#include <stdint.h>
Allan MacKinnon4359d522018-06-19 13:57:04 -070016
17//
18//
19//
20
Allan MacKinnon9e0d7e42018-07-16 15:57:05 -070021#define ARRAY_LENGTH_MACRO(x) (sizeof(x)/sizeof(x[0]))
22#define OFFSET_OF_MACRO(t,m) ((size_t)&(((t*)0)->m))
23#define MEMBER_SIZE_MACRO(t,m) sizeof(((t*)0)->m)
24
25
26//
27//
28//
29
30#define MAX_MACRO(a,b) (((a) > (b)) ? (a) : (b))
31#define MIN_MACRO(a,b) (((a) < (b)) ? (a) : (b))
32#define GTE_MACRO(a,b) ((a) >= (b))
33#define LT_MACRO(a,b) ((a) < (b))
34
35//
36//
37//
38
39#if defined(_MSC_VER)
40#define ALLOCA_MACRO(n) _alloca(n)
41#else
42#define ALLOCA_MACRO(n) alloca(n)
43#endif
Allan MacKinnon4359d522018-06-19 13:57:04 -070044
45//
46//
47//
48
49#define BITS_TO_MASK(n) (((uint32_t)1<<(n))-1)
50#define BITS_TO_MASK_64(n) (((uint64_t)1<<(n))-1)
51
52#define BITS_TO_MASK_AT(n,b) (BITS_TO_MASK(n)<<(b))
53#define BITS_TO_MASK_AT_64(n,b) (BITS_TO_MASK_64(n)<<(b))
54
55//
Allan MacKinnon9e0d7e42018-07-16 15:57:05 -070056// Convert 4 byte pointer to network order dword to a host order.
Allan MacKinnon4359d522018-06-19 13:57:04 -070057//
58
Allan MacKinnon9e0d7e42018-07-16 15:57:05 -070059#define NPBTOHL_MACRO(pb4) ((((pb4)[0])<<24) | (((pb4)[1])<<16) | \
60 (((pb4)[2])<< 8) | (pb4)[3])
61
62#define NTOHL_MACRO(nl) ntohl(nl)
63
Allan MacKinnon4359d522018-06-19 13:57:04 -070064//
65//
66//