Garmin Fleet Management Controller
2.19.0
Main Page
Related Pages
Classes
Files
File List
File Members
util_macros.h
Go to the documentation of this file.
1
/*********************************************************************
2
*
3
* HEADER NAME:
4
* util_macros.h
5
*
6
* Copyright 2008-2009 by Garmin Ltd. or its subsidiaries.
7
*---------------------------------------------------------------------
8
* $NoKeywords$
9
*********************************************************************/
10
#ifndef UTIL_MACROS_H
11
#define UTIL_MACROS_H
12
13
//----------------------------------------------------------------------
16
//----------------------------------------------------------------------
17
18
//----------------------------------------------------------------------
23
//----------------------------------------------------------------------
24
#define setbits( _b, _len ) ( ( ( 1U << ( (_len) - 1 ) ) - 1U + ( 1U << ( (_len) - 1 ) ) ) << (_b) )
25
26
//----------------------------------------------------------------------
29
//----------------------------------------------------------------------
30
#define setbit( _b ) ( (unsigned)1 << (_b) )
31
32
//----------------------------------------------------------------------
37
//----------------------------------------------------------------------
38
#define clrbits( _b, _len) ( ~setbits( (_b), (_len) ) )
39
40
//----------------------------------------------------------------------
44
//----------------------------------------------------------------------
45
#define clrbit( _b ) ( ~setbit( _b ) )
46
47
//----------------------------------------------------------------------
51
//----------------------------------------------------------------------
52
#define allbitset( _val, _mask ) ( ( (_val) & (_mask) ) == (_mask) )
53
54
//----------------------------------------------------------------------
58
//----------------------------------------------------------------------
59
#define anybitset( _val, _mask ) ( ( (_val) & (_mask) ) != 0 )
60
61
//----------------------------------------------------------------------
64
//----------------------------------------------------------------------
65
#define max_sint_val( _t ) ( setbits( 0, ( sizeof( _t ) * 8 ) - 1 ) )
66
67
//----------------------------------------------------------------------
70
//----------------------------------------------------------------------
71
#define min_sint_val( _t ) ( ~max_sint_val( _t ) )
72
73
//----------------------------------------------------------------------
76
//----------------------------------------------------------------------
77
#define max_uint_val( _t ) ( setbits( 0, ( sizeof( _t ) * 8 ) ) )
78
79
//----------------------------------------------------------------------
83
//----------------------------------------------------------------------
84
#define offset_of( _s, _m ) ( (unsigned char *)&( ( (_s *)0 )->_m ) - (unsigned char *)0 )
85
86
//----------------------------------------------------------------------
89
//----------------------------------------------------------------------
90
#define cnt_of_array( _a ) ( sizeof( (_a) ) / sizeof( (_a)[0] ) )
91
92
//----------------------------------------------------------------------
94
//----------------------------------------------------------------------
95
#define minval( _x, _y ) ( (_x) < (_y) ? (_x) : (_y) )
96
97
//----------------------------------------------------------------------
99
//----------------------------------------------------------------------
100
#define maxval( _x, _y ) ( (_x) > (_y) ? (_x) : (_y) )
101
102
//----------------------------------------------------------------------
105
//----------------------------------------------------------------------
106
#define returnif( _check ) \
107
{ \
108
if( _check ) \
109
{ \
110
return; \
111
} \
112
}
/* returnif */
113
114
//----------------------------------------------------------------------
118
//----------------------------------------------------------------------
119
#define returnif_v( _check, _value ) \
120
{ \
121
if( _check ) \
122
{ \
123
return( _value ); \
124
} \
125
}
/* returnif */
126
127
//----------------------------------------------------------------------
133
//----------------------------------------------------------------------
134
#define _tokcat( _x, _y ) _x ## _y
135
136
//----------------------------------------------------------------------
145
//----------------------------------------------------------------------
146
#define tokcat( _x, _y ) _tokcat( _x, _y )
147
148
//----------------------------------------------------------------------
154
//----------------------------------------------------------------------
155
#define _compiler_assert( _e, _m ) \
156
struct tokcat( __, tokcat( _m, __LINE__ ) ) { int _ : ( (_e) ? 1 : 0 ); }
157
158
//----------------------------------------------------------------------
163
//----------------------------------------------------------------------
164
#define compiler_assert( _e ) _compiler_assert( _e, _UTIL_H_ )
165
166
#endif
util_macros.h
Generated by
1.8.11