+static bool compound_types_equal(const compound_type_t *type1,
+ const compound_type_t *type2)
+{
+ return type1->declaration == type2->declaration;
+}
+
+static bool enum_types_equal(const enum_type_t *type1,
+ const enum_type_t *type2)
+{
+ return type1->declaration == type2->declaration;
+}
+
+static bool typedef_types_equal(const typedef_type_t *type1,
+ const typedef_type_t *type2)
+{
+ return type1->declaration == type2->declaration;
+}
+
+static bool typeof_types_equal(const typeof_type_t *type1,
+ const typeof_type_t *type2)
+{
+ if(type1->expression != type2->expression)
+ return false;
+ if(type1->typeof_type != type2->typeof_type)
+ return false;
+
+ return true;
+}
+
+static bool bitfield_types_equal(const bitfield_type_t *type1,
+ const bitfield_type_t *type2)
+{
+ if(type1->base != type2->base)
+ return false;
+ /* TODO: compare size expression */
+ return false;
+}
+