-/*
- * Because we address in bits, bitfields end up being exactly the same as
- * integers, except that their read/write functions must be able to deal with
- * read/write non aligned on CHAR_BIT.
- */
-struct type_class_integer {
- struct type_class p;
- size_t len; /* length, in bits. */
- int byte_order; /* byte order */
- int signedness;
-};
-
-struct type_class_float {
- struct type_class p;
- struct int_class *sign;
- struct int_class *mantissa;
- struct int_class *exp;
- int byte_order;
- /* TODO: we might want to express more info about NaN, +inf and -inf */
-};
-
-struct enum_table {
- GHashTable *value_to_quark; /* Tuples (value, GQuark) */
- GHashTable *quark_to_value; /* Tuples (GQuark, value) */
-};
-
-struct type_class_enum {
- struct type_class_int p; /* inherit from integer */
- struct enum_table table;
-};
-
-struct type_class_string {
- struct type_class p;
-};
-
-struct field {
- GQuark name;
- struct type_class *type_class;
-};
-
-struct type_class_struct {
- struct type_class p;
- GHashTable *fields_by_name; /* Tuples (field name, field index) */
- GArray *fields; /* Array of fields */
-};
-
-struct type_class_array {
- struct type_class p;
- size_t len;
- struct type_class *elem;
-};
-
-struct type_class_sequence {
- struct type_class p;
- struct type_class_integer *len;
- struct type_class *elem;
-};
-
-struct type_class *ctf_lookup_type(GQuark qname);
-int ctf_register_type(struct type_class *type_class);
-
-/* Nameless types can be created by passing a NULL name */
-
-struct type_class_integer *integer_type_new(const char *name,
- size_t len, int byte_order,
- int signedness,
- size_t alignment);
-void integer_type_free(struct type_class_integer *int_class);