return decl;
}
+static void
+print_decl(struct cdecl *decl, size_t func(char *, size_t, struct cdecl *))
+{
+ static size_t printbuf_size;
+ static char *printbuf;
+ size_t rc;
+retry:
+ rc = func(printbuf, printbuf_size, decl);
+ if (rc >= printbuf_size) {
+ printbuf_size = rc + 1;
+ printbuf = realloc_nofail(printbuf, printbuf_size);
+ goto retry;
+ }
+
+ printf("%s\n", printbuf);
+}
+
int main(int argc, char **argv)
{
const char *seed = "", *count_str = NULL;
decl = random_decl(rng);
if (mode == MODE_ENGLISH) {
- test_explain_decl(decl);
+ print_decl(decl, cdecl_explain);
} else {
- test_print_decl(decl);
+ print_decl(decl, cdecl_declare);
}
gen_free_declspecs(decl->specifiers);
void *malloc_nofail(size_t size);
void *realloc_nofail(void *ptr, size_t size);
-void test_print_specifiers(struct cdecl_declspec *spec);
-void test_print_decl(struct cdecl *decl);
-void test_explain_decl(struct cdecl *decl);
bool strict_strtoul(unsigned long *val, const char *str, int base);
#include "help.h"
#include "test.h"
-static size_t printbuf_size;
-static char *printbuf;
-
void *realloc_nofail(void *ptr, size_t size)
{
void *p;
return realloc_nofail(NULL, size);
}
-void test_print_decl(struct cdecl *decl)
-{
- size_t rc;
-
-retry:
- rc = cdecl_declare(printbuf, printbuf_size, decl);
- if (rc >= printbuf_size) {
- printbuf_size = rc + 1;
- printbuf = realloc_nofail(printbuf, printbuf_size);
- goto retry;
- }
-
- printf("%s\n", printbuf);
-}
-
-void test_explain_decl(struct cdecl *decl)
-{
- size_t rc;
-
-retry:
- rc = cdecl_explain(printbuf, printbuf_size, decl);
- if (rc >= printbuf_size) {
- printbuf_size = rc + 1;
- printbuf = realloc_nofail(printbuf, printbuf_size);
- goto retry;
- }
-
- printf("%s\n", printbuf);
-}
-
bool strict_strtoul(unsigned long *val, const char *str, int base)
{
char *end;