summaryrefslogtreecommitdiff
path: root/src/output/amgc_output_typedef.c
diff options
context:
space:
mode:
authormidipix <writeonce@midipix.org>2018-08-05 00:48:15 -0400
committermidipix <writeonce@midipix.org>2018-08-05 03:22:21 -0400
commitb8225b67f6e452b4751150e52b3dfee54744f4bf (patch)
tree748f2bac1ad7fb7041507ff7251ac0b9b4bac754 /src/output/amgc_output_typedef.c
parentabf92311681c10ed589ac05f0f2b451e01fbc63e (diff)
downloadapimagic-b8225b67f6e452b4751150e52b3dfee54744f4bf.tar.bz2
apimagic-b8225b67f6e452b4751150e52b3dfee54744f4bf.tar.xz
output interfaces: revised API and implementation to use fdctx and pure fdio.
Diffstat (limited to 'src/output/amgc_output_typedef.c')
-rw-r--r--src/output/amgc_output_typedef.c44
1 files changed, 23 insertions, 21 deletions
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 <apimagic/apimagic.h>
#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;
}