summaryrefslogtreecommitdiffstats
path: root/lib/misc.h
blob: 9437b61760cf84912617f922b35b78b2bf47c099 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/* Miscellaneous basic definitions
 * Copyright (C) 2010 Chris Hall (GMCH), Highwayman
 *
 * This file is part of GNU Zebra.
 *
 * GNU Zebra is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License as published by the
 * Free Software Foundation; either version 2, or (at your option) any
 * later version.
 *
 * GNU Zebra is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with GNU Zebra; see the file COPYING.  If not, write to the Free
 * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 * 02111-1307, USA.
 */

#ifndef _ZEBRA_MISC_H
#define _ZEBRA_MISC_H

/* Stuff which we generally expect to have                              */
#include <stddef.h>
#include <stdint.h>
#include <limits.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>

#include "zassert.h"

/* Bit number to bit mask                                               */
#define BIT(b)  (1 << b)

/* Just in case there are compiler issues                               */
#define Inline static inline

/* For things which have to be made extern -- typically because they are
 * used by an inline function -- but are not for public consumption.
 */
#define Private extern

/* Other names of true/false                                            */
enum on_off
{
  on   = true,
  off  = false
} ;
typedef enum on_off on_off_b ;

/* Whether to add or not on lookup.                                     */
enum add
{
  add     = true,
  no_add  = false
} ;
typedef enum add add_b ;

/* Used in object "reset" functions (destructors)                       */
enum free_keep
{
  free_it = true,
  keep_it = false
} ;
typedef enum free_keep free_keep_b ;

/* We really want to be able to assume that an int is at least 32 bits  */
CONFIRM(UINT_MAX >= 0xFFFFFFFF) ;

/* Some useful shorthand                                                */
typedef unsigned char byte ;
typedef unsigned char uchar ;
typedef unsigned int  uint ;
typedef unsigned int  usize ;
typedef unsigned int  ulen ;

#endif /* _ZEBRA_MISC_H */