int CFCType_equals(CFCType *self, CFCType *other) { if ((CFCType_const(self) ^ CFCType_const(other)) || (CFCType_nullable(self) ^ CFCType_nullable(other)) || (CFCType_is_void(self) ^ CFCType_is_void(other)) || (CFCType_is_object(self) ^ CFCType_is_object(other)) || (CFCType_is_primitive(self) ^ CFCType_is_primitive(other)) || (CFCType_is_integer(self) ^ CFCType_is_integer(other)) || (CFCType_is_floating(self) ^ CFCType_is_floating(other)) || (CFCType_is_va_list(self) ^ CFCType_is_va_list(other)) || (CFCType_is_arbitrary(self) ^ CFCType_is_arbitrary(other)) || (CFCType_is_composite(self) ^ CFCType_is_composite(other)) || (CFCType_incremented(self) ^ CFCType_incremented(other)) || (CFCType_decremented(self) ^ CFCType_decremented(other)) || !!self->child ^ !!other->child || !!self->array ^ !!other->array ) { return false; } if (self->indirection != other->indirection) { return false; } if (strcmp(self->specifier, other->specifier) != 0) { return false; } if (self->child) { if (!CFCType_equals(self->child, other->child)) { return false; } } if (self->array) { if (strcmp(self->array, other->array) != 0) { return false; } } return true; }
static void S_run_va_list_tests(CFCTest *test) { { CFCType *type = CFCType_new_va_list(); STR_EQ(test, CFCType_get_specifier(type), "va_list", "specifier defaults to 'va_list'"); STR_EQ(test, CFCType_to_c(type), "va_list", "to_c"); CFCBase_decref((CFCBase*)type); } { CFCParser *parser = CFCParser_new(); CFCType *type = CFCTest_parse_type(test, parser, "va_list"); OK(test, CFCType_is_va_list(type), "is_va_list"); CFCBase_decref((CFCBase*)type); CFCBase_decref((CFCBase*)parser); } }