summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/apimagic.c16
-rw-r--r--src/driver/amgc_unit_action.c31
2 files changed, 32 insertions, 15 deletions
diff --git a/src/apimagic.c b/src/apimagic.c
index f89df43..6d92db6 100644
--- a/src/apimagic.c
+++ b/src/apimagic.c
@@ -26,21 +26,7 @@ static void apimagic_perform_unit_actions(struct amgc_unit_ctx * uctx)
const struct amgc_action * action;
for (action=uctx->cctx->actions; action->type; action++)
- switch (action->action) {
- case AMGC_OUTPUT_ENUM:
- if (action->symbol)
- (void)0;
- else
- amgc_output_unit_enums(uctx,0,stdout);
- break;
-
- case AMGC_LIST_ENUM:
- if (action->symbol)
- (void)0;
- else
- amgc_list_unit_enums(uctx,0,stdout);
- break;
- }
+ amgc_perform_unit_action(uctx,action,0,stdout);
}
static int apimagic_exit(struct amgc_driver_ctx * dctx, int nerrors)
diff --git a/src/driver/amgc_unit_action.c b/src/driver/amgc_unit_action.c
new file mode 100644
index 0000000..04cfb8f
--- /dev/null
+++ b/src/driver/amgc_unit_action.c
@@ -0,0 +1,31 @@
+/**********************************************************/
+/* apimagic: cparser-based API normalization utility */
+/* Copyright (C) 2015--2016 Z. Gilboa */
+/* Released under GPLv2 and GPLv3; see COPYING.APIMAGIC. */
+/**********************************************************/
+
+#include <apimagic/apimagic.h>
+#include "apimagic_driver_impl.h"
+
+int amgc_perform_unit_action(
+ const struct amgc_unit_ctx * uctx,
+ const struct amgc_action * action,
+ const struct amgc_layout * layout,
+ FILE * fout)
+{
+ switch (action->action) {
+ case AMGC_OUTPUT_ENUM:
+ if (action->symbol)
+ return -1;
+ else
+ return amgc_output_unit_enums(uctx,0,stdout);
+
+ case AMGC_LIST_ENUM:
+ if (action->symbol)
+ return -1;
+ else
+ return amgc_list_unit_enums(uctx,0,stdout);
+ }
+
+ return -1;
+}