/**********************************************************/ /* apimagic: cparser-based API normalization utility */ /* Copyright (C) 2015--2016 Z. Gilboa */ /* Released under GPLv2 and GPLv3; see COPYING.APIMAGIC. */ /**********************************************************/ #include #include #include #include #include #include #include "apimagic_driver_impl.h" static int output_atomic_typedef( const struct amgc_entity * aentity, FILE * fout) { int i; const char * reftype; reftype = get_atomic_kind_name(aentity->reftype->atomic.akind); if (fprintf(stdout,"typedef %s ",reftype) < 0) return -1; for (i=0; (i < aentity->ptrdepth); i++) if (fputc('*',stdout) < 0) return -1; if (fprintf(stdout," %s;\n",aentity->entity->base.symbol->string) < 0) return -1; return 0; } int amgc_output_typedef( const struct amgc_unit_ctx * uctx, const struct amgc_entity * aentity, const struct amgc_layout * layout, FILE * fout) { int ret = 0; 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; } if (ret) return ret; if (layout && layout->footer && (fputs(layout->footer,fout) < 0)) return -1; return ret; }