From b8225b67f6e452b4751150e52b3dfee54744f4bf Mon Sep 17 00:00:00 2001 From: midipix Date: Sun, 5 Aug 2018 00:48:15 -0400 Subject: output interfaces: revised API and implementation to use fdctx and pure fdio. --- src/output/amgc_output_typedef.c | 44 +++++++++++++++++++++------------------- 1 file changed, 23 insertions(+), 21 deletions(-) (limited to 'src/output/amgc_output_typedef.c') diff --git a/src/output/amgc_output_typedef.c b/src/output/amgc_output_typedef.c index f7b39d4..a579c18 100644 --- a/src/output/amgc_output_typedef.c +++ b/src/output/amgc_output_typedef.c @@ -14,58 +14,60 @@ #include #include "apimagic_driver_impl.h" -static int output_atomic_typedef( - const struct amgc_entity * aentity, - FILE * fout) +static int output_atomic_typedef(int fdout, const struct amgc_entity * aentity) { int i; const char * reftype; - (void)fout; - reftype = get_atomic_kind_name(aentity->reftype->atomic.akind); - if (fprintf(stdout,"typedef %s ",reftype) < 0) + if (amgc_dprintf(fdout,"typedef %s ",reftype) < 0) return -1; for (i=0; (i < aentity->ptrdepth); i++) - if (fputc('*',stdout) < 0) + if (amgc_dprintf(fdout,"*") < 0) return -1; - if (fprintf(stdout," %s;\n",aentity->entity->base.symbol->string) < 0) + if (amgc_dprintf( + fdout," %s;\n", + aentity->entity->base.symbol->string) < 0) return -1; return 0; } int amgc_output_typedef( + const struct amgc_driver_ctx * dctx, const struct amgc_unit_ctx * uctx, const struct amgc_entity * aentity, - const struct amgc_layout * layout, - FILE * fout) + const struct amgc_layout * layout) { - int ret = 0; + int ret = 0; + int fdout = amgc_driver_fdout(dctx); (void)uctx; - if (layout && layout->header && (fputs(layout->header,fout) < 0)) - return -1; - switch (aentity->reftype->kind) { case TYPE_ATOMIC: - ret = output_atomic_typedef(aentity,fout); break; default: - ret = -1; + return -1; } - if (ret) - return ret; + if (layout && layout->header) + if (amgc_dprintf(fdout,layout->header) < 0) + return -1; - if (layout && layout->footer && (fputs(layout->footer,fout) < 0)) - return -1; + if (aentity->reftype->kind == TYPE_ATOMIC) + ret = output_atomic_typedef(fdout,aentity); + + if (ret < 0) + return ret; + if (layout && layout->footer) + if (amgc_dprintf(fdout,layout->footer) < 0) + return -1; - return ret; + return 0; } -- cgit v1.2.3