- const char *s = "INVALIDATOMIC";
- switch((atomic_type_kind_t) type->akind) {
- case ATOMIC_TYPE_INVALID: break;
- case ATOMIC_TYPE_VOID: s = "void"; break;
- case ATOMIC_TYPE_BOOL: s = "_Bool"; break;
- case ATOMIC_TYPE_CHAR: s = "char"; break;
- case ATOMIC_TYPE_SCHAR: s = "signed char"; break;
- case ATOMIC_TYPE_UCHAR: s = "unsigned char"; break;
- case ATOMIC_TYPE_INT: s = "int"; break;
- case ATOMIC_TYPE_UINT: s = "unsigned int"; break;
- case ATOMIC_TYPE_SHORT: s = "short"; break;
- case ATOMIC_TYPE_USHORT: s = "unsigned short"; break;
- case ATOMIC_TYPE_LONG: s = "long"; break;
- case ATOMIC_TYPE_ULONG: s = "unsigned long"; break;
- case ATOMIC_TYPE_LONGLONG: s = "long long"; break;
- case ATOMIC_TYPE_ULONGLONG: s = "unsigned long long"; break;
- case ATOMIC_TYPE_LONG_DOUBLE: s = "long double"; break;
- case ATOMIC_TYPE_FLOAT: s = "float"; break;
- case ATOMIC_TYPE_DOUBLE: s = "double"; break;
- case ATOMIC_TYPE_FLOAT_COMPLEX: s = "_Complex float"; break;
- case ATOMIC_TYPE_DOUBLE_COMPLEX: s = "_Complex float"; break;
- case ATOMIC_TYPE_LONG_DOUBLE_COMPLEX: s = "_Complex float"; break;
- case ATOMIC_TYPE_FLOAT_IMAGINARY: s = "_Imaginary float"; break;
- case ATOMIC_TYPE_DOUBLE_IMAGINARY: s = "_Imaginary float"; break;
- case ATOMIC_TYPE_LONG_DOUBLE_IMAGINARY: s = "_Imaginary float"; break;
- }
- fputs(s, out);
+/**
+ * Prints the name of a complex type.
+ *
+ * @param type The type.
+ */
+static
+void print_complex_type(const complex_type_t *type)
+{
+ print_type_qualifiers(type->base.qualifiers);
+ fputs("_Complex ", out);
+ print_atomic_kinds(type->akind);
+}
+
+/**
+ * Prints the name of an imaginary type.
+ *
+ * @param type The type.
+ */
+static
+void print_imaginary_type(const imaginary_type_t *type)
+{
+ print_type_qualifiers(type->base.qualifiers);
+ fputs("_Imaginary ", out);
+ print_atomic_kinds(type->akind);