projects
/
cparser
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Adapt CFLAGS according to variant
[cparser]
/
type.h
diff --git
a/type.h
b/type.h
index
d3414b6
..
502096d
100644
(file)
--- a/
type.h
+++ b/
type.h
@@
-34,6
+34,7
@@
typedef unsigned char il_alignment_t;
typedef enum atomic_type_kind_t {
ATOMIC_TYPE_INVALID = 0,
ATOMIC_TYPE_VOID,
typedef enum atomic_type_kind_t {
ATOMIC_TYPE_INVALID = 0,
ATOMIC_TYPE_VOID,
+ ATOMIC_TYPE_BOOL,
ATOMIC_TYPE_WCHAR_T,
ATOMIC_TYPE_CHAR,
ATOMIC_TYPE_SCHAR,
ATOMIC_TYPE_WCHAR_T,
ATOMIC_TYPE_CHAR,
ATOMIC_TYPE_SCHAR,
@@
-49,9
+50,8
@@
typedef enum atomic_type_kind_t {
ATOMIC_TYPE_FLOAT,
ATOMIC_TYPE_DOUBLE,
ATOMIC_TYPE_LONG_DOUBLE,
ATOMIC_TYPE_FLOAT,
ATOMIC_TYPE_DOUBLE,
ATOMIC_TYPE_LONG_DOUBLE,
- ATOMIC_TYPE_BOOL,
- ATOMIC_TYPE_LAST = ATOMIC_TYPE_
BOOL
+ ATOMIC_TYPE_LAST = ATOMIC_TYPE_
LONG_DOUBLE
} atomic_type_kind_t;
typedef enum atomic_type_flag_t {
} atomic_type_kind_t;
typedef enum atomic_type_flag_t {
@@
-104,6
+104,11
@@
typedef union type_t type_t;
void init_types(unsigned machine_size);
void exit_types(void);
void init_types(unsigned machine_size);
void exit_types(void);
+/**
+ * Prints a type.
+ *
+ * @param type The type.
+ */
void print_type(const type_t *type);
/**
void print_type(const type_t *type);
/**
@@
-121,55
+126,107
@@
typedef enum QualifierSeparators {
void print_type_qualifiers(type_qualifiers_t qualifiers, QualifierSeparators);
void print_type_qualifiers(type_qualifiers_t qualifiers, QualifierSeparators);
+/**
+ * Prints an enum definition.
+ *
+ * @param declaration The enum's type declaration.
+ */
void print_enum_definition(const enum_t *enume);
void print_enum_definition(const enum_t *enume);
+
+/**
+ * Print the compound part of a compound type.
+ */
void print_compound_definition(const compound_t *compound);
void inc_type_visited(void);
/**
void print_compound_definition(const compound_t *compound);
void inc_type_visited(void);
/**
- * returns true if type contains integer numbers
+ * Returns true if the given type is an integer type.
+ *
+ * @param type The type to check.
+ * @return True if type is an integer type.
*/
bool is_type_integer(const type_t *type);
/**
* Returns true if the given type is an enum type.
*/
bool is_type_integer(const type_t *type);
/**
* Returns true if the given type is an enum type.
+ *
+ * @param type The type to check.
+ * @return True if type is an enum type.
*/
bool is_type_enum(const type_t *type);
/**
*/
bool is_type_enum(const type_t *type);
/**
- * return true if type contains signed numbers
+ * Returns true if the given type is a signed type.
+ *
+ * @param type The type to check.
+ * @return True if type is a signed type.
*/
bool is_type_signed(const type_t *type);
/**
*/
bool is_type_signed(const type_t *type);
/**
- * returns true if type contains floating point numbers
+ * Returns true if the given type is a floating point type.
+ *
+ * @param type The type to check.
+ * @return True if type is a floating point type.
*/
bool is_type_float(const type_t *type);
/**
*/
bool is_type_float(const type_t *type);
/**
- * returns true if type contains complex numbers
+ * Returns true if the given type is a complex type.
+ *
+ * @param type The type to check.
+ * @return True if type is a complex type.
*/
bool is_type_complex(const type_t *type);
*/
bool is_type_complex(const type_t *type);
+/**
+ * Returns true if the given type is an integer or float type.
+ *
+ * @param type The type to check.
+ * @return True if type is an integer or float type.
+ */
bool is_type_real(const type_t *type);
/**
bool is_type_real(const type_t *type);
/**
- * returns true if the type is an arithmetic type (§6.2.5 clause 18)
+ * Returns true if the type is an arithmetic type (§6.2.5 clause 18)
+ *
+ * @param type The type to check.
+ * @return True if type represents an arithmetic type.
*/
bool is_type_arithmetic(const type_t *type);
/**
*/
bool is_type_arithmetic(const type_t *type);
/**
- * returns true if the type is a scalar type (§6.2.5 clause 21)
+ * Returns true if the type is a scalar type (§6.2.5 clause 21)
+ *
+ * @param type The type to check.
+ * @return True if type represents a scalar type.
*/
bool is_type_scalar(const type_t *type);
*/
bool is_type_scalar(const type_t *type);
+/**
+ * Check if a given type is incomplete.
+ *
+ * @param type The type to check.
+ * @return True if the given type is incomplete (ie. just forward).
+ */
bool is_type_incomplete(const type_t *type);
bool is_type_object(const type_t *type);
bool is_type_incomplete(const type_t *type);
bool is_type_object(const type_t *type);
+/**
+ * Check if two types are compatible.
+ */
bool types_compatible(const type_t *type1, const type_t *type2);
bool types_compatible(const type_t *type1, const type_t *type2);
+/**
+ * Returns the unqualified type of a given type.
+ *
+ * @param type The type.
+ * @returns The unqualified type.
+ */
type_t *get_unqualified_type(type_t *type);
type_t *get_unqualified_type(type_t *type);
+
type_t *get_qualified_type(type_t*, type_qualifiers_t);
type_t *skip_typeref(type_t *type);
type_t *get_qualified_type(type_t*, type_qualifiers_t);
type_t *skip_typeref(type_t *type);
@@
-193,13
+250,6
@@
unsigned get_type_alignment(type_t *type);
unsigned get_type_size(type_t *type);
decl_modifiers_t get_type_modifiers(const type_t *type);
unsigned get_type_size(type_t *type);
decl_modifiers_t get_type_modifiers(const type_t *type);
-/**
- * get alignment of a type when used inside a compound.
- * Some ABIs are broken and alignment inside a compound is different from
- * recommended alignment of a type
- */
-unsigned get_type_alignment_compound(type_t *type);
-
/**
* returns flags of an atomic type kind
*/
/**
* returns flags of an atomic type kind
*/