]> git.draconx.ca Git - cdecl99.git/blobdiff - src/declare.c
libcdecl: Rework specifier output logic.
[cdecl99.git] / src / declare.c
index 8f7d607c4daa8d7560430bbda83ba95305d6ac1c..318ccac7e5e24fc5135af0e7100fd987ee1a2caa 100644 (file)
@@ -30,13 +30,11 @@ declare_declarator(char **dst, size_t *dstlen, struct cdecl_declarator *d);
 
 static size_t declare_decl(char **dst, size_t *dstlen, struct cdecl *decl)
 {
-       size_t ret, rc;
+       size_t ret;
 
-       rc = cdecl__explain_specs(*dst, *dstlen, decl->specifiers, -1);
+       ret = cdecl__emit_specs(dst, dstlen, decl->specifiers, -1);
        if (decl->declarators->type != CDECL_DECL_NULL)
-               ret = cdecl__advance(dst, dstlen, rc);
-       else
-               ret = cdecl__advance_(dst, dstlen, rc);
+               ret += cdecl__emit(dst, dstlen, " ");
 
        return ret + declare_declarator(dst, dstlen, decl->declarators);
 }
@@ -63,11 +61,11 @@ declare_pointer(char **dst, size_t *dstlen, struct cdecl_pointer *p)
        struct cdecl_declspec *q = p->qualifiers;
 
        if (q) {
-               size_t ret, rc;
+               size_t ret;
 
                ret  = cdecl__emit(dst, dstlen, "* ");
-               rc   = cdecl__explain_specs(*dst, *dstlen, q, -1);
-               return ret + cdecl__advance(dst, dstlen, rc);
+               ret += cdecl__emit_specs(dst, dstlen, q, -1);
+               return ret + cdecl__emit(dst, dstlen, " ");
        }
 
        return cdecl__emit(dst, dstlen, "*");
@@ -84,7 +82,7 @@ static size_t declare_array(char **dst, size_t *dstlen, struct cdecl_array *a)
                ret += cdecl__emit(dst, dstlen, s);
        } else {
                size_t rc = snprintf(*dst, *dstlen, "%.0" PRIuMAX, a->length);
-               ret += cdecl__advance_(dst, dstlen, rc);
+               ret += cdecl__advance(dst, dstlen, rc);
        }
 
        return ret + cdecl__emit(dst, dstlen, "]");