xref: /haiku/headers/private/drivers/lendian_bitfield.h (revision 1e60bdeab63fa7a57bc9a55b032052e95a18bd2c)
1 /*
2  * Copyright 2015, Haiku, Inc. All RightsReserved.
3  * Copyright 2002, Thomas Kurschel. All rights reserved.
4  * Distributed under the terms of the MIT License.
5  */
6 #ifndef LENDIAN_BITFIELD_H
7 #define LENDIAN_BITFIELD_H
8 
9 
10 #include <ByteOrder.h>
11 
12 
13 #if B_HOST_IS_BENDIAN
14 
15 #define B_LBITFIELD8_2(b1,b2)						uint8 b2,b1
16 #define B_LBITFIELD8_3(b1,b2,b3)					uint8 b3,b2,b1
17 #define B_LBITFIELD8_4(b1,b2,b3,b4)					uint8 b4,b3,b2,b1
18 #define B_LBITFIELD8_5(b1,b2,b3,b4,b5)				uint8 b5,b4,b3,b2,b1
19 #define B_LBITFIELD8_6(b1,b2,b3,b4,b5,b6)			uint8 b6,b5,b4,b3,b2,b1
20 #define B_LBITFIELD8_7(b1,b2,b3,b4,b5,b6,b7)		uint8 b7,b6,b5,b4,b3,b2,b1
21 #define B_LBITFIELD8_8(b1,b2,b3,b4,b5,b6,b7,b8)		uint8 b8,b7,b6,b5,b4,b3,b2,b1
22 
23 
24 #define B_LBITFIELD16_2(b1,b2)														uint16 b2,b1
25 #define B_LBITFIELD16_3(b1,b2,b3)													uint16 b3,b2,b1
26 #define B_LBITFIELD16_4(b1,b2,b3,b4)												uint16 b4,b3,b2,b1
27 #define B_LBITFIELD16_5(b1,b2,b3,b4,b5)												uint16 b5,b4,b3,b2,b1
28 #define B_LBITFIELD16_6(b1,b2,b3,b4,b5,b6)											uint16 b6,b5,b4,b3,b2,b1
29 #define B_LBITFIELD16_7(b1,b2,b3,b4,b5,b6,b7)								 		uint16 b7,b6,b5,b4,b3,b2,b1
30 #define B_LBITFIELD16_8(b1,b2,b3,b4,b5,b6,b7,b8)									uint16 b8,b7,b6,b5,b4,b3,b2,b1
31 #define B_LBITFIELD16_9(b1,b2,b3,b4,b5,b6,b7,b8,b9)									uint16 b9,b8,b7,b6,b5,b4,b3,b2,b1
32 #define B_LBITFIELD16_10(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10)							uint16 b10,b9,b8,b7,b6,b5,b4,b3,b2,b1
33 #define B_LBITFIELD16_11(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11)						uint16 b11,b10,b9,b8,b7,b6,b5,b4,b3,b2,b1
34 #define B_LBITFIELD16_12(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12)					uint16 b12,b11,b10,b9,b8,b7,b6,b5,b4,b3,b2,b1
35 #define B_LBITFIELD16_13(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13)				uint16 b13,b12,b11,b10,b9,b8,b7,b6,b5,b4,b3,b2,b1
36 #define B_LBITFIELD16_14(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14)			uint16 b14,b13,b12,b11,b10,b9,b8,b7,b6,b5,b4,b3,b2,b1
37 #define B_LBITFIELD16_15(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15)		uint16 b15,b14,b13,b12,b11,b10,b9,b8,b7,b6,b5,b4,b3,b2,b1
38 #define B_LBITFIELD16_16(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16)	uint16 b16,b15,b14,b13,b12,b11,b10,b9,b8,b7,b6,b5,b4,b3,b2,b1
39 
40 #define B_LBITFIELD32_2(b1,b2)														uint32 b2,b1
41 #define B_LBITFIELD32_3(b1,b2,b3)													uint32 b3,b2,b1
42 #define B_LBITFIELD32_4(b1,b2,b3,b4)												uint32 b4,b3,b2,b1
43 #define B_LBITFIELD32_5(b1,b2,b3,b4,b5)												uint32 b5,b4,b3,b2,b1
44 #define B_LBITFIELD32_6(b1,b2,b3,b4,b5,b6)											uint32 b6,b5,b4,b3,b2,b1
45 #define B_LBITFIELD32_7(b1,b2,b3,b4,b5,b6,b7)							 			uint32 b7,b6,b5,b4,b3,b2,b1
46 #define B_LBITFIELD32_8(b1,b2,b3,b4,b5,b6,b7,b8)									uint32 b8,b7,b6,b5,b4,b3,b2,b1
47 #define B_LBITFIELD32_9(b1,b2,b3,b4,b5,b6,b7,b8,b9)									uint32 b9,b8,b7,b6,b5,b4,b3,b2,b1
48 #define B_LBITFIELD32_10(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10)							uint32 b10,b9,b8,b7,b6,b5,b4,b3,b2,b1
49 #define B_LBITFIELD32_11(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11)						uint32 b11,b10,b9,b8,b7,b6,b5,b4,b3,b2,b1
50 #define B_LBITFIELD32_12(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12)					uint32 b12,b11,b10,b9,b8,b7,b6,b5,b4,b3,b2,b1
51 #define B_LBITFIELD32_13(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13)				uint32 b13,b12,b11,b10,b9,b8,b7,b6,b5,b4,b3,b2,b1
52 #define B_LBITFIELD32_14(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14)			uint32 b14,b13,b12,b11,b10,b9,b8,b7,b6,b5,b4,b3,b2,b1
53 #define B_LBITFIELD32_15(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15)		uint32 b15,b14,b13,b12,b11,b10,b9,b8,b7,b6,b5,b4,b3,b2,b1
54 #define B_LBITFIELD32_16(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16)	uint32 b16,b15,b14,b13,b12,b11,b10,b9,b8,b7,b6,b5,b4,b3,b2,b1
55 
56 #elif B_HOST_IS_LENDIAN
57 
58 #define B_LBITFIELD8_2(b1,b2)						uint8 b1,b2
59 #define B_LBITFIELD8_3(b1,b2,b3)					uint8 b1,b2,b3
60 #define B_LBITFIELD8_4(b1,b2,b3,b4)					uint8 b1,b2,b3,b4
61 #define B_LBITFIELD8_5(b1,b2,b3,b4,b5)				uint8 b1,b2,b3,b4,b5
62 #define B_LBITFIELD8_6(b1,b2,b3,b4,b5,b6)			uint8 b1,b2,b3,b4,b5,b6
63 #define B_LBITFIELD8_7(b1,b2,b3,b4,b5,b6,b7)		uint8 b1,b2,b3,b4,b5,b6,b7
64 #define B_LBITFIELD8_8(b1,b2,b3,b4,b5,b6,b7,b8)		uint8 b1,b2,b3,b4,b5,b6,b7,b8
65 
66 #define B_LBITFIELD16_2(b1,b2)														uint16 b1,b2
67 #define B_LBITFIELD16_3(b1,b2,b3)													uint16 b1,b2,b3
68 #define B_LBITFIELD16_4(b1,b2,b3,b4)												uint16 b1,b2,b3,b4
69 #define B_LBITFIELD16_5(b1,b2,b3,b4,b5)												uint16 b1,b2,b3,b4,b5
70 #define B_LBITFIELD16_6(b1,b2,b3,b4,b5,b6)											uint16 b1,b2,b3,b4,b5,b6
71 #define B_LBITFIELD16_7(b1,b2,b3,b4,b5,b6,b7)										uint16 b1,b2,b3,b4,b5,b6,b7
72 #define B_LBITFIELD16_8(b1,b2,b3,b4,b5,b6,b7,b8)									uint16 b1,b2,b3,b4,b5,b6,b7,b8
73 #define B_LBITFIELD16_9(b1,b2,b3,b4,b5,b6,b7,b8,b9) 								uint16 b1,b2,b3,b4,b5,b6,b7,b8,b9
74 #define B_LBITFIELD16_10(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10)							uint16 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10
75 #define B_LBITFIELD16_11(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11)						uint16 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11
76 #define B_LBITFIELD16_12(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12)					uint16 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12
77 #define B_LBITFIELD16_13(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13)				uint16 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13
78 #define B_LBITFIELD16_14(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14)			uint16 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14
79 #define B_LBITFIELD16_15(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15)		uint16 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15
80 #define B_LBITFIELD16_16(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16)	uint16 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16
81 
82 #define B_LBITFIELD32_2(b1,b2)														uint32 b1,b2
83 #define B_LBITFIELD32_3(b1,b2,b3)													uint32 b1,b2,b3
84 #define B_LBITFIELD32_4(b1,b2,b3,b4)												uint32 b1,b2,b3,b4
85 #define B_LBITFIELD32_5(b1,b2,b3,b4,b5)												uint32 b1,b2,b3,b4,b5
86 #define B_LBITFIELD32_6(b1,b2,b3,b4,b5,b6)											uint32 b1,b2,b3,b4,b5,b6
87 #define B_LBITFIELD32_7(b1,b2,b3,b4,b5,b6,b7)										uint32 b1,b2,b3,b4,b5,b6,b7
88 #define B_LBITFIELD32_8(b1,b2,b3,b4,b5,b6,b7,b8)									uint32 b1,b2,b3,b4,b5,b6,b7,b8
89 #define B_LBITFIELD32_9(b1,b2,b3,b4,b5,b6,b7,b8,b9) 								uint32 b1,b2,b3,b4,b5,b6,b7,b8,b9
90 #define B_LBITFIELD32_10(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10)							uint32 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10
91 #define B_LBITFIELD32_11(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11)						uint32 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11
92 #define B_LBITFIELD32_12(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12)					uint32 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12
93 #define B_LBITFIELD32_13(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13)				uint32 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13
94 #define B_LBITFIELD32_14(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14)			uint32 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14
95 #define B_LBITFIELD32_15(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15)		uint32 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15
96 #define B_LBITFIELD32_16(b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16)	uint32 b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16
97 
98 #else
99 #	error "Unknown host endianness"
100 #endif
101 
102 #endif /* LENDIAN_BITFIELD_H */
103