Support globally scoped defines in Charmonizer
Project: http://git-wip-us.apache.org/repos/asf/lucy/repo Commit: http://git-wip-us.apache.org/repos/asf/lucy/commit/1ee7b6f6 Tree: http://git-wip-us.apache.org/repos/asf/lucy/tree/1ee7b6f6 Diff: http://git-wip-us.apache.org/repos/asf/lucy/diff/1ee7b6f6 Branch: refs/heads/master Commit: 1ee7b6f6f70e21072071ad4457824f0f8b5d928c Parents: 155d550 Author: Nick Wellnhofer <[email protected]> Authored: Sat Nov 17 22:01:44 2012 +0100 Committer: Nick Wellnhofer <[email protected]> Committed: Sun Nov 18 16:26:13 2012 +0100 ---------------------------------------------------------------------- charmonizer/src/Charmonizer/Core/ConfWriter.c | 8 +++++ charmonizer/src/Charmonizer/Core/ConfWriter.h | 8 +++++ charmonizer/src/Charmonizer/Core/ConfWriterC.c | 27 ++++++++++++++++ charmonizer/src/Charmonizer/Core/ConfWriterPerl.c | 9 +++++ charmonizer/src/Charmonizer/Core/ConfWriterRuby.c | 9 +++++ 5 files changed, 61 insertions(+), 0 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lucy/blob/1ee7b6f6/charmonizer/src/Charmonizer/Core/ConfWriter.c ---------------------------------------------------------------------- diff --git a/charmonizer/src/Charmonizer/Core/ConfWriter.c b/charmonizer/src/Charmonizer/Core/ConfWriter.c index c74e241..b9217ff 100644 --- a/charmonizer/src/Charmonizer/Core/ConfWriter.c +++ b/charmonizer/src/Charmonizer/Core/ConfWriter.c @@ -60,6 +60,14 @@ chaz_ConfWriter_add_def(const char *sym, const char *value) { } void +chaz_ConfWriter_add_global_def(const char *sym, const char *value) { + size_t i; + for (i = 0; i < chaz_CW.num_writers; i++) { + chaz_CW.writers[i]->add_global_def(sym, value); + } +} + +void chaz_ConfWriter_add_typedef(const char *type, const char *alias) { size_t i; for (i = 0; i < chaz_CW.num_writers; i++) { http://git-wip-us.apache.org/repos/asf/lucy/blob/1ee7b6f6/charmonizer/src/Charmonizer/Core/ConfWriter.h ---------------------------------------------------------------------- diff --git a/charmonizer/src/Charmonizer/Core/ConfWriter.h b/charmonizer/src/Charmonizer/Core/ConfWriter.h index f0be507..0f7a553 100644 --- a/charmonizer/src/Charmonizer/Core/ConfWriter.h +++ b/charmonizer/src/Charmonizer/Core/ConfWriter.h @@ -52,6 +52,11 @@ chaz_ConfWriter_append_conf(const char *fmt, ...); void chaz_ConfWriter_add_def(const char *sym, const char *value); +/* Add a globally scoped pound-define. + */ +void +chaz_ConfWriter_add_global_def(const char *sym, const char *value); + /* Add a typedef. */ void @@ -92,6 +97,8 @@ typedef void typedef void (*chaz_ConfWriter_add_def_t)(const char *sym, const char *value); typedef void +(*chaz_ConfWriter_add_global_def_t)(const char *sym, const char *value); +typedef void (*chaz_ConfWriter_add_typedef_t)(const char *type, const char *alias); typedef void (*chaz_ConfWriter_add_global_typedef_t)(const char *type, const char *alias); @@ -107,6 +114,7 @@ typedef struct chaz_ConfWriter { chaz_ConfWriter_clean_up_t clean_up; chaz_ConfWriter_vappend_conf_t vappend_conf; chaz_ConfWriter_add_def_t add_def; + chaz_ConfWriter_add_global_def_t add_global_def; chaz_ConfWriter_add_typedef_t add_typedef; chaz_ConfWriter_add_global_typedef_t add_global_typedef; chaz_ConfWriter_add_sys_include_t add_sys_include; http://git-wip-us.apache.org/repos/asf/lucy/blob/1ee7b6f6/charmonizer/src/Charmonizer/Core/ConfWriterC.c ---------------------------------------------------------------------- diff --git a/charmonizer/src/Charmonizer/Core/ConfWriterC.c b/charmonizer/src/Charmonizer/Core/ConfWriterC.c index d1882dd..3be86d1 100644 --- a/charmonizer/src/Charmonizer/Core/ConfWriterC.c +++ b/charmonizer/src/Charmonizer/Core/ConfWriterC.c @@ -28,6 +28,7 @@ typedef enum chaz_ConfElemType { CHAZ_CONFELEM_DEF, + CHAZ_CONFELEM_GLOBAL_DEF, CHAZ_CONFELEM_TYPEDEF, CHAZ_CONFELEM_GLOBAL_TYPEDEF, CHAZ_CONFELEM_SYS_INCLUDE, @@ -71,6 +72,8 @@ chaz_ConfWriterC_vappend_conf(const char *fmt, va_list args); static void chaz_ConfWriterC_add_def(const char *sym, const char *value); static void +chaz_ConfWriterC_add_global_def(const char *sym, const char *value); +static void chaz_ConfWriterC_add_typedef(const char *type, const char *alias); static void chaz_ConfWriterC_add_global_typedef(const char *type, const char *alias); @@ -88,6 +91,7 @@ chaz_ConfWriterC_enable(void) { CWC_conf_writer.clean_up = chaz_ConfWriterC_clean_up; CWC_conf_writer.vappend_conf = chaz_ConfWriterC_vappend_conf; CWC_conf_writer.add_def = chaz_ConfWriterC_add_def; + CWC_conf_writer.add_global_def = chaz_ConfWriterC_add_global_def; CWC_conf_writer.add_typedef = chaz_ConfWriterC_add_typedef; CWC_conf_writer.add_global_typedef = chaz_ConfWriterC_add_global_typedef; CWC_conf_writer.add_sys_include = chaz_ConfWriterC_add_sys_include; @@ -177,6 +181,24 @@ chaz_ConfWriterC_append_def_to_conf(const char *sym, const char *value) { } static void +chaz_ConfWriterC_add_global_def(const char *sym, const char *value) { + chaz_ConfWriterC_push_def_list_item(sym, value, CHAZ_CONFELEM_GLOBAL_DEF); +} + +static void +chaz_ConfWriterC_append_global_def_to_conf(const char *sym, + const char *value) { + fprintf(chaz_ConfWriterC.fh, "#ifndef %s\n", sym); + if (value) { + fprintf(chaz_ConfWriterC.fh, " #define %s %s\n", sym, value); + } + else { + fprintf(chaz_ConfWriterC.fh, " #define %s\n", sym); + } + fprintf(chaz_ConfWriterC.fh, "#endif\n"); +} + +static void chaz_ConfWriterC_add_typedef(const char *type, const char *alias) { chaz_ConfWriterC_push_def_list_item(alias, type, CHAZ_CONFELEM_TYPEDEF); } @@ -240,6 +262,10 @@ chaz_ConfWriterC_end_module(void) { chaz_ConfWriterC_append_def_to_conf(defs[i].str1, defs[i].str2); break; + case CHAZ_CONFELEM_GLOBAL_DEF: + chaz_ConfWriterC_append_global_def_to_conf(defs[i].str1, + defs[i].str2); + break; case CHAZ_CONFELEM_TYPEDEF: chaz_ConfWriterC_append_typedef_to_conf(defs[i].str2, defs[i].str1); @@ -281,6 +307,7 @@ chaz_ConfWriterC_end_module(void) { } } break; + case CHAZ_CONFELEM_GLOBAL_DEF: case CHAZ_CONFELEM_GLOBAL_TYPEDEF: case CHAZ_CONFELEM_SYS_INCLUDE: case CHAZ_CONFELEM_LOCAL_INCLUDE: http://git-wip-us.apache.org/repos/asf/lucy/blob/1ee7b6f6/charmonizer/src/Charmonizer/Core/ConfWriterPerl.c ---------------------------------------------------------------------- diff --git a/charmonizer/src/Charmonizer/Core/ConfWriterPerl.c b/charmonizer/src/Charmonizer/Core/ConfWriterPerl.c index 3b85473..8592659 100644 --- a/charmonizer/src/Charmonizer/Core/ConfWriterPerl.c +++ b/charmonizer/src/Charmonizer/Core/ConfWriterPerl.c @@ -41,6 +41,8 @@ chaz_ConfWriterPerl_vappend_conf(const char *fmt, va_list args); static void chaz_ConfWriterPerl_add_def(const char *sym, const char *value); static void +chaz_ConfWriterPerl_add_global_def(const char *sym, const char *value); +static void chaz_ConfWriterPerl_add_typedef(const char *type, const char *alias); static void chaz_ConfWriterPerl_add_global_typedef(const char *type, const char *alias); @@ -58,6 +60,7 @@ chaz_ConfWriterPerl_enable(void) { CWPerl_conf_writer.clean_up = chaz_ConfWriterPerl_clean_up; CWPerl_conf_writer.vappend_conf = chaz_ConfWriterPerl_vappend_conf; CWPerl_conf_writer.add_def = chaz_ConfWriterPerl_add_def; + CWPerl_conf_writer.add_global_def = chaz_ConfWriterPerl_add_global_def; CWPerl_conf_writer.add_typedef = chaz_ConfWriterPerl_add_typedef; CWPerl_conf_writer.add_global_typedef = chaz_ConfWriterPerl_add_global_typedef; CWPerl_conf_writer.add_sys_include = chaz_ConfWriterPerl_add_sys_include; @@ -183,6 +186,12 @@ chaz_ConfWriterPerl_add_def(const char *sym, const char *value) { } static void +chaz_ConfWriterPerl_add_global_def(const char *sym, const char *value) { + (void)sym; + (void)value; +} + +static void chaz_ConfWriterPerl_add_typedef(const char *type, const char *alias) { (void)type; (void)alias; http://git-wip-us.apache.org/repos/asf/lucy/blob/1ee7b6f6/charmonizer/src/Charmonizer/Core/ConfWriterRuby.c ---------------------------------------------------------------------- diff --git a/charmonizer/src/Charmonizer/Core/ConfWriterRuby.c b/charmonizer/src/Charmonizer/Core/ConfWriterRuby.c index caea7ce..c81c10f 100644 --- a/charmonizer/src/Charmonizer/Core/ConfWriterRuby.c +++ b/charmonizer/src/Charmonizer/Core/ConfWriterRuby.c @@ -41,6 +41,8 @@ chaz_ConfWriterRuby_vappend_conf(const char *fmt, va_list args); static void chaz_ConfWriterRuby_add_def(const char *sym, const char *value); static void +chaz_ConfWriterRuby_add_global_def(const char *sym, const char *value); +static void chaz_ConfWriterRuby_add_typedef(const char *type, const char *alias); static void chaz_ConfWriterRuby_add_global_typedef(const char *type, const char *alias); @@ -58,6 +60,7 @@ chaz_ConfWriterRuby_enable(void) { CWRuby_conf_writer.clean_up = chaz_ConfWriterRuby_clean_up; CWRuby_conf_writer.vappend_conf = chaz_ConfWriterRuby_vappend_conf; CWRuby_conf_writer.add_def = chaz_ConfWriterRuby_add_def; + CWRuby_conf_writer.add_global_def = chaz_ConfWriterRuby_add_global_def; CWRuby_conf_writer.add_typedef = chaz_ConfWriterRuby_add_typedef; CWRuby_conf_writer.add_global_typedef = chaz_ConfWriterRuby_add_global_typedef; CWRuby_conf_writer.add_sys_include = chaz_ConfWriterRuby_add_sys_include; @@ -181,6 +184,12 @@ chaz_ConfWriterRuby_add_def(const char *sym, const char *value) { } static void +chaz_ConfWriterRuby_add_global_def(const char *sym, const char *value) { + (void)sym; + (void)value; +} + +static void chaz_ConfWriterRuby_add_typedef(const char *type, const char *alias) { (void)type; (void)alias;
