XFusion API v1.3.0
载入中...
搜索中...
未找到
xf_bit_defs.h
浏览该文件的文档.
1
12#ifndef __XF_BIT_DEFS_H__
13#define __XF_BIT_DEFS_H__
14
15/* ==================== [Includes] ========================================== */
16
17#include "xf_common_config.h"
18
28#ifdef __cplusplus
29extern "C" {
30#endif
31
32/* ==================== [Defines] =========================================== */
33
38#if (!defined(BIT0))
39#define BIT31 0x80000000
40#define BIT30 0x40000000
41#define BIT29 0x20000000
42#define BIT28 0x10000000
43#define BIT27 0x08000000
44#define BIT26 0x04000000
45#define BIT25 0x02000000
46#define BIT24 0x01000000
47#define BIT23 0x00800000
48#define BIT22 0x00400000
49#define BIT21 0x00200000
50#define BIT20 0x00100000
51#define BIT19 0x00080000
52#define BIT18 0x00040000
53#define BIT17 0x00020000
54#define BIT16 0x00010000
55#define BIT15 0x00008000
56#define BIT14 0x00004000
57#define BIT13 0x00002000
58#define BIT12 0x00001000
59#define BIT11 0x00000800
60#define BIT10 0x00000400
61#define BIT9 0x00000200
62#define BIT8 0x00000100
63#define BIT7 0x00000080
64#define BIT6 0x00000040
65#define BIT5 0x00000020
66#define BIT4 0x00000010
67#define BIT3 0x00000008
68#define BIT2 0x00000004
69#define BIT1 0x00000002
70#define BIT0 0x00000001
71#endif /* (!defined(BIT0)) */
81#if (!defined(BIT32))
82#define BIT63 (0x80000000ULL << 32)
83#define BIT62 (0x40000000ULL << 32)
84#define BIT61 (0x20000000ULL << 32)
85#define BIT60 (0x10000000ULL << 32)
86#define BIT59 (0x08000000ULL << 32)
87#define BIT58 (0x04000000ULL << 32)
88#define BIT57 (0x02000000ULL << 32)
89#define BIT56 (0x01000000ULL << 32)
90#define BIT55 (0x00800000ULL << 32)
91#define BIT54 (0x00400000ULL << 32)
92#define BIT53 (0x00200000ULL << 32)
93#define BIT52 (0x00100000ULL << 32)
94#define BIT51 (0x00080000ULL << 32)
95#define BIT50 (0x00040000ULL << 32)
96#define BIT49 (0x00020000ULL << 32)
97#define BIT48 (0x00010000ULL << 32)
98#define BIT47 (0x00008000ULL << 32)
99#define BIT46 (0x00004000ULL << 32)
100#define BIT45 (0x00002000ULL << 32)
101#define BIT44 (0x00001000ULL << 32)
102#define BIT43 (0x00000800ULL << 32)
103#define BIT42 (0x00000400ULL << 32)
104#define BIT41 (0x00000200ULL << 32)
105#define BIT40 (0x00000100ULL << 32)
106#define BIT39 (0x00000080ULL << 32)
107#define BIT38 (0x00000040ULL << 32)
108#define BIT37 (0x00000020ULL << 32)
109#define BIT36 (0x00000010ULL << 32)
110#define BIT35 (0x00000008ULL << 32)
111#define BIT34 (0x00000004ULL << 32)
112#define BIT33 (0x00000002ULL << 32)
113#define BIT32 (0x00000001ULL << 32)
114#endif /* (!defined(BIT32)) */
120/* ==================== [Typedefs] ========================================== */
121
122/* ==================== [Global Prototypes] ================================= */
123
124/* ==================== [Macros] ============================================ */
125
126#ifndef __ASSEMBLER__
127#ifndef BIT
135#define BIT(nr) (1UL << (nr))
136#endif
137#ifndef BIT64
145#define BIT64(nr) (1ULL << (nr))
146#endif
147#else /* defined (__ASSEMBLER__) */
148#ifndef BIT
154#define BIT(nr) (1 << (nr))
155#endif
156#endif /* __ASSEMBLER__ */
157
161#ifndef BIT_SET0
168#define BIT_SET0(var, n) ((var) &= ~BIT(n))
169#endif
170
171#ifndef BIT_SET1
178#define BIT_SET1(var, n) ((var) |= BIT(n))
179#endif
180
181#ifndef BIT_SET
189#define BIT_SET(var, n, value) \
190 ((value) ? BIT_SET1((var), (n)) : BIT_SET0((var), (n)))
191#endif
192
193#ifndef BIT_FLIP
200#define BIT_FLIP(var, n) ((var) ^= BIT(n))
201#endif
202
203#ifndef BIT_GET
212#define BIT_GET(src, n) (((src) & BIT(n)) >> (n))
213#endif
214
215#ifndef BIT_GET_MODIFY0
224#define BIT_GET_MODIFY0(src, n) ((src) & ~BIT(n))
225#endif
226
227#ifndef BIT_GET_MODIFY1
236#define BIT_GET_MODIFY1(src, n) ((src) | BIT(n))
237#endif
238
239#ifndef BIT_GET_MODIFY
249#define BIT_GET_MODIFY(src, n, value) \
250 ((value) ? BIT_GET_MODIFY1((src), (n)) : BIT_GET_MODIFY0((src), (n)))
251#endif
252
253#ifndef BIT_GET_MODIFY_FLIP
262#define BIT_GET_MODIFY_FLIP(src, n) ((src) ^ BIT(n))
263#endif
264
268#ifndef BITS_MASK
282#define BITS_MASK(n) (((n) < 32) ? (BIT(n) - 1) : (~0UL))
283#endif
284
285#ifndef BITS_SET0
303#define BITS_SET0(var, bits_mask) ((var) &= ~(bits_mask))
304#endif
305
306#ifndef BITS_SET1
324#define BITS_SET1(var, bits_mask) ((var) |= (bits_mask))
325#endif
326
327#ifndef BITS_FLIP
337#define BITS_FLIP(var, bits_mask) ((var) ^= (bits_mask))
338#endif
339
340#ifndef BITS_GET
362#define BITS_GET(src, n, offset) (((src) & (BITS_MASK(n) << (offset))) >> (offset))
363#endif
364
365#ifndef BITS_CHECK
375#define BITS_CHECK(src, bits_mask) (!!((src) & (bits_mask)))
376#endif
377
378#ifndef BITS_GET_MODIFY
420#define BITS_GET_MODIFY(src, n, offset, value) \
421 ((((src) ^ ((BITS_MASK(n) & (value)) << (offset))) \
422 & (BITS_MASK(n) << (offset))) \
423 ^ (src))
424#endif
425
426#ifndef BITS_SET
434#define BITS_SET(src, n, offset, value) \
435 ((src) = BITS_GET_MODIFY((src), (n), (offset), (value)))
436#endif
437
438#ifdef __cplusplus
439} /*extern "C"*/
440#endif
441
447#endif /* __XF_BIT_DEFS_H__ */
预定义. xf_attr.h 等头文件通过包含本文件减少对其余外部文件的直接依赖. 如: xfconfig.h.