diff options
author | midipix <writeonce@midipix.org> | 2016-01-08 16:41:14 -0500 |
---|---|---|
committer | midipix <writeonce@midipix.org> | 2016-01-09 05:32:50 -0500 |
commit | 43b7a222c0944f84a077f0a58d9566530630def2 (patch) | |
tree | 0c01a3aec0496e1e6773f879d5e048cab3aac49b | |
parent | bbff09033370ecee3ed999fe094494463c338add (diff) | |
download | apimagic-43b7a222c0944f84a077f0a58d9566530630def2.tar.bz2 apimagic-43b7a222c0944f84a077f0a58d9566530630def2.tar.xz |
amgc_output_unit_entities(): initial implementation.
-rw-r--r-- | include/apimagic/apimagic.h | 1 | ||||
-rw-r--r-- | project/common.mk | 1 | ||||
-rw-r--r-- | src/output/amgc_output_entities.c | 46 |
3 files changed, 48 insertions, 0 deletions
diff --git a/include/apimagic/apimagic.h b/include/apimagic/apimagic.h index c6da7e2..6968d66 100644 --- a/include/apimagic/apimagic.h +++ b/include/apimagic/apimagic.h @@ -183,6 +183,7 @@ amgc_api int amgc_output_unit_functions(const struct amgc_unit_ctx *, const str /* utility helper api */ amgc_api int amgc_perform_unit_action (const struct amgc_unit_ctx *, const struct amgc_action *, const struct amgc_layout *, FILE *); +amgc_api int amgc_output_unit_entities (const struct amgc_unit_ctx *, int kind, int subset, const struct amgc_layout *, FILE *); amgc_api int amgc_get_entity_index (const struct amgc_entity[], const char *); amgc_api int amgc_get_define_index (const struct amgc_unit_ctx *, const char *); diff --git a/project/common.mk b/project/common.mk index 8de8d05..744b856 100644 --- a/project/common.mk +++ b/project/common.mk @@ -7,6 +7,7 @@ COMMON_SRCS = \ src/logic/amgc_init_unit_meta.c \ src/logic/amgc_map_input.c \ src/logic/amgc_unit_entities.c \ + src/output/amgc_output_entities.c \ src/output/amgc_output_enum.c \ src/output/amgc_output_pad_symbol.c \ src/output/amgc_output_typedef.c \ diff --git a/src/output/amgc_output_entities.c b/src/output/amgc_output_entities.c new file mode 100644 index 0000000..9d8d017 --- /dev/null +++ b/src/output/amgc_output_entities.c @@ -0,0 +1,46 @@ +/**********************************************************/ +/* apimagic: cparser-based API normalization utility */ +/* Copyright (C) 2015--2016 Z. Gilboa */ +/* Released under GPLv2 and GPLv3; see COPYING.APIMAGIC. */ +/**********************************************************/ + +#include <stdio.h> + +#include <cparser/ast/entity_t.h> +#include <cparser/ast/type_t.h> + +#include <apimagic/apimagic.h> +#include "apimagic_driver_impl.h" + +static int output_typedefs( + const struct amgc_unit_ctx * uctx, + int subset, + const struct amgc_layout * layout, + FILE * fout) +{ + struct amgc_entity * aentity; + + for (aentity=uctx->entities->typedefs; aentity->entity; aentity++) + if (aentity->reftype->kind == subset) + if (amgc_output_typedef(uctx,aentity,layout,fout) < 0) + return -1; + return 0; +} + +int amgc_output_unit_entities( + const struct amgc_unit_ctx * uctx, + int kind, + int subset, + const struct amgc_layout * layout, + FILE * fout) +{ + switch (kind) { + case ENTITY_ENUM: + return amgc_output_unit_enums(uctx,layout,fout); + + case ENTITY_TYPEDEF: + return output_typedefs(uctx,subset,layout,fout); + } + + return -1; +} |