+ /* Type qualifiers */
+ case CDECL_QUAL_RESTRICT:
+ return snprintf(buf, n, "restrict");
+ case CDECL_QUAL_VOLATILE:
+ return snprintf(buf, n, "volatile");
+ case CDECL_QUAL_CONST:
+ return snprintf(buf, n, "const");
+ /* Type specifiers */
+ case CDECL_TYPE_VOID:
+ return snprintf(buf, n, "void");
+ case CDECL_TYPE_CHAR:
+ return snprintf(buf, n, "char");
+ case CDECL_TYPE_SHORT:
+ return snprintf(buf, n, "short");
+ case CDECL_TYPE_INT:
+ return snprintf(buf, n, "int");
+ case CDECL_TYPE_LONG:
+ return snprintf(buf, n, "long");
+ case CDECL_TYPE_FLOAT:
+ return snprintf(buf, n, "float");
+ case CDECL_TYPE_DOUBLE:
+ return snprintf(buf, n, "double");
+ case CDECL_TYPE_SIGNED:
+ return snprintf(buf, n, "signed");
+ case CDECL_TYPE_UNSIGNED:
+ return snprintf(buf, n, "unsigned");
+ case CDECL_TYPE_BOOL:
+ return snprintf(buf, n, "_Bool");
+ case CDECL_TYPE_COMPLEX:
+ return snprintf(buf, n, "_Complex");
+ case CDECL_TYPE_IMAGINARY:
+ return snprintf(buf, n, "_Imaginary");
+ case CDECL_TYPE_STRUCT:
+ return snprintf(buf, n, "struct %s", s->ident);
+ case CDECL_TYPE_UNION:
+ return snprintf(buf, n, "union %s", s->ident);
+ case CDECL_TYPE_ENUM:
+ return snprintf(buf, n, "enum %s", s->ident);
+ case CDECL_TYPE_IDENT:
+ return snprintf(buf, n, "%s", s->ident);