From f2e43d1d66a6455febcf06fd740d2369f296954c Mon Sep 17 00:00:00 2001 From: midipix Date: Jan 09 2016 10:32:50 +0000 Subject: driver: --print-typedefs: initial implementation. --- diff --git a/src/driver/amgc_driver_ctx.c b/src/driver/amgc_driver_ctx.c index 2b33de4..1e92e74 100644 --- a/src/driver/amgc_driver_ctx.c +++ b/src/driver/amgc_driver_ctx.c @@ -8,6 +8,7 @@ #include #include +#include #include #include #include @@ -202,6 +203,14 @@ int amgc_get_driver_ctx( ctx->actions[nactions].type = AMGC_ACTION_OUTPUT; ctx->actions[nactions++].action = AMGC_LIST_ENUM; break; + + case TAG_PRINT_TYPEDEFS: + ctx->actions[nactions].type = AMGC_ACTION_OUTPUT; + ctx->actions[nactions].action = AMGC_OUTPUT_TYPEDEF; + + if (!strcmp("primary",entry->arg)) + ctx->actions[nactions++].subset = TYPE_ATOMIC; + break; } ctx->ctx.program = program; diff --git a/src/driver/amgc_unit_action.c b/src/driver/amgc_unit_action.c index 04cfb8f..0a07cb9 100644 --- a/src/driver/amgc_unit_action.c +++ b/src/driver/amgc_unit_action.c @@ -4,6 +4,8 @@ /* Released under GPLv2 and GPLv3; see COPYING.APIMAGIC. */ /**********************************************************/ +#include + #include #include "apimagic_driver_impl.h" @@ -25,6 +27,11 @@ int amgc_perform_unit_action( return -1; else return amgc_list_unit_enums(uctx,0,stdout); + + case AMGC_OUTPUT_TYPEDEF: + return amgc_output_unit_entities( + uctx,ENTITY_TYPEDEF,action->subset, + layout,fout); } return -1; diff --git a/src/internal/apimagic_driver_impl.h b/src/internal/apimagic_driver_impl.h index 5b599a9..b5d4ae4 100644 --- a/src/internal/apimagic_driver_impl.h +++ b/src/internal/apimagic_driver_impl.h @@ -16,6 +16,7 @@ enum app_tags { TAG_VERSION, TAG_PRINT_ENUMS, TAG_LIST_ENUMS, + TAG_PRINT_TYPEDEFS, TAG_LANG_STD, }; diff --git a/src/skin/amgc_skin_default.c b/src/skin/amgc_skin_default.c index 8444f66..80a003f 100644 --- a/src/skin/amgc_skin_default.c +++ b/src/skin/amgc_skin_default.c @@ -24,6 +24,11 @@ const struct argv_option amgc_default_options[] = { "output forward declarations for " "the translation unit's enums."}, + {"print-typedefs",0,TAG_PRINT_TYPEDEFS,ARGV_OPTARG_REQUIRED,0, + "primary",0, + "output (a subset of) the translation unit's " + "type definitions"}, + {"std", '\0',TAG_LANG_STD,ARGV_OPTARG_REQUIRED, ARGV_OPTION_HYBRID_EQUAL,AMGC_LANG_STD_PARADIGM,0, "set language standard"},