4 extern struct symbol
*size_t_ctype
;
5 extern struct symbol
*ssize_t_ctype
;
8 * For "__attribute__((aligned))"
10 extern int max_alignment
;
15 extern int bits_in_bool
;
16 extern int bits_in_char
;
17 extern int bits_in_short
;
18 extern int bits_in_int
;
19 extern int bits_in_long
;
20 extern int bits_in_longlong
;
21 extern int bits_in_longlonglong
;
23 extern int max_int_alignment
;
26 * Floating point data types
28 extern int bits_in_float
;
29 extern int bits_in_double
;
30 extern int bits_in_longdouble
;
32 extern int max_fp_alignment
;
37 extern int bits_in_pointer
;
38 extern int pointer_alignment
;
43 extern int bits_in_enum
;
44 extern int enum_alignment
;
47 * Helper functions for converting bits to bytes and vice versa.
50 static inline int bits_to_bytes(int bits
)
52 return bits
>= 0 ? (bits
+ bits_in_char
- 1) / bits_in_char
: -1;
55 static inline int bytes_to_bits(int bytes
)
57 return bytes
* bits_in_char
;
60 static inline unsigned long array_element_offset(unsigned long base_bits
, int idx
)
62 int fragment
= base_bits
% bits_in_char
;
64 base_bits
+= bits_in_char
- fragment
;
65 return base_bits
* idx
;