Support globally scoped typedefs in Charmonizer
Project: http://git-wip-us.apache.org/repos/asf/lucy/repo Commit: http://git-wip-us.apache.org/repos/asf/lucy/commit/c7e5e6cb Tree: http://git-wip-us.apache.org/repos/asf/lucy/tree/c7e5e6cb Diff: http://git-wip-us.apache.org/repos/asf/lucy/diff/c7e5e6cb Branch: refs/heads/master Commit: c7e5e6cbf229c5060b591da7572f1550d37aa340 Parents: f7a7558 Author: Nick Wellnhofer <[email protected]> Authored: Sun Nov 4 13:42:34 2012 +0100 Committer: Nick Wellnhofer <[email protected]> Committed: Mon Nov 12 21:07:26 2012 +0100 ---------------------------------------------------------------------- charmonizer/src/Charmonizer/Core/ConfWriter.c | 8 +++ charmonizer/src/Charmonizer/Core/ConfWriter.h | 24 +++++++--- charmonizer/src/Charmonizer/Core/ConfWriterC.c | 37 ++++++++++++--- charmonizer/src/Charmonizer/Core/ConfWriterPerl.c | 25 +++++++--- charmonizer/src/Charmonizer/Core/ConfWriterRuby.c | 25 +++++++--- 5 files changed, 87 insertions(+), 32 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lucy/blob/c7e5e6cb/charmonizer/src/Charmonizer/Core/ConfWriter.c ---------------------------------------------------------------------- diff --git a/charmonizer/src/Charmonizer/Core/ConfWriter.c b/charmonizer/src/Charmonizer/Core/ConfWriter.c index e7977b1..c74e241 100644 --- a/charmonizer/src/Charmonizer/Core/ConfWriter.c +++ b/charmonizer/src/Charmonizer/Core/ConfWriter.c @@ -68,6 +68,14 @@ chaz_ConfWriter_add_typedef(const char *type, const char *alias) { } void +chaz_ConfWriter_add_global_typedef(const char *type, const char *alias) { + size_t i; + for (i = 0; i < chaz_CW.num_writers; i++) { + chaz_CW.writers[i]->add_global_typedef(type, alias); + } +} + +void chaz_ConfWriter_add_sys_include(const char *header) { size_t i; for (i = 0; i < chaz_CW.num_writers; i++) { http://git-wip-us.apache.org/repos/asf/lucy/blob/c7e5e6cb/charmonizer/src/Charmonizer/Core/ConfWriter.h ---------------------------------------------------------------------- diff --git a/charmonizer/src/Charmonizer/Core/ConfWriter.h b/charmonizer/src/Charmonizer/Core/ConfWriter.h index e409d99..f0be507 100644 --- a/charmonizer/src/Charmonizer/Core/ConfWriter.h +++ b/charmonizer/src/Charmonizer/Core/ConfWriter.h @@ -57,6 +57,11 @@ chaz_ConfWriter_add_def(const char *sym, const char *value); void chaz_ConfWriter_add_typedef(const char *type, const char *alias); +/* Add a globally scoped typedef. + */ +void +chaz_ConfWriter_add_global_typedef(const char *type, const char *alias); + /* Pound-include a system header (within angle brackets). */ void @@ -89,6 +94,8 @@ typedef void 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); +typedef void (*chaz_ConfWriter_add_sys_include_t)(const char *header); typedef void (*chaz_ConfWriter_add_local_include_t)(const char *header); @@ -97,14 +104,15 @@ typedef void typedef void (*chaz_ConfWriter_end_module_t)(void); 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_typedef_t add_typedef; - chaz_ConfWriter_add_sys_include_t add_sys_include; - chaz_ConfWriter_add_local_include_t add_local_include; - chaz_ConfWriter_start_module_t start_module; - chaz_ConfWriter_end_module_t end_module; + chaz_ConfWriter_clean_up_t clean_up; + chaz_ConfWriter_vappend_conf_t vappend_conf; + chaz_ConfWriter_add_def_t add_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; + chaz_ConfWriter_add_local_include_t add_local_include; + chaz_ConfWriter_start_module_t start_module; + chaz_ConfWriter_end_module_t end_module; } chaz_ConfWriter; #ifdef __cplusplus http://git-wip-us.apache.org/repos/asf/lucy/blob/c7e5e6cb/charmonizer/src/Charmonizer/Core/ConfWriterC.c ---------------------------------------------------------------------- diff --git a/charmonizer/src/Charmonizer/Core/ConfWriterC.c b/charmonizer/src/Charmonizer/Core/ConfWriterC.c index 2f1971d..d1882dd 100644 --- a/charmonizer/src/Charmonizer/Core/ConfWriterC.c +++ b/charmonizer/src/Charmonizer/Core/ConfWriterC.c @@ -29,6 +29,7 @@ typedef enum chaz_ConfElemType { CHAZ_CONFELEM_DEF, CHAZ_CONFELEM_TYPEDEF, + CHAZ_CONFELEM_GLOBAL_TYPEDEF, CHAZ_CONFELEM_SYS_INCLUDE, CHAZ_CONFELEM_LOCAL_INCLUDE } chaz_ConfElemType; @@ -72,6 +73,8 @@ chaz_ConfWriterC_add_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); +static void chaz_ConfWriterC_add_sys_include(const char *header); static void chaz_ConfWriterC_add_local_include(const char *header); @@ -82,14 +85,15 @@ chaz_ConfWriterC_end_module(void); void 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_typedef = chaz_ConfWriterC_add_typedef; - CWC_conf_writer.add_sys_include = chaz_ConfWriterC_add_sys_include; - CWC_conf_writer.add_local_include = chaz_ConfWriterC_add_local_include; - CWC_conf_writer.start_module = chaz_ConfWriterC_start_module; - CWC_conf_writer.end_module = chaz_ConfWriterC_end_module; + 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_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; + CWC_conf_writer.add_local_include = chaz_ConfWriterC_add_local_include; + CWC_conf_writer.start_module = chaz_ConfWriterC_start_module; + CWC_conf_writer.end_module = chaz_ConfWriterC_end_module; chaz_ConfWriterC_open_charmony_h(NULL); chaz_ConfWriter_add_writer(&CWC_conf_writer); return; @@ -188,6 +192,18 @@ chaz_ConfWriterC_append_typedef_to_conf(const char *type, const char *alias) { } static void +chaz_ConfWriterC_add_global_typedef(const char *type, const char *alias) { + chaz_ConfWriterC_push_def_list_item(alias, type, + CHAZ_CONFELEM_GLOBAL_TYPEDEF); +} + +static void +chaz_ConfWriterC_append_global_typedef_to_conf(const char *type, + const char *alias) { + fprintf(chaz_ConfWriterC.fh, "typedef %s %s;\n", type, alias); +} + +static void chaz_ConfWriterC_add_sys_include(const char *header) { chaz_ConfWriterC_push_def_list_item(header, NULL, CHAZ_CONFELEM_SYS_INCLUDE); @@ -228,6 +244,10 @@ chaz_ConfWriterC_end_module(void) { chaz_ConfWriterC_append_typedef_to_conf(defs[i].str2, defs[i].str1); break; + case CHAZ_CONFELEM_GLOBAL_TYPEDEF: + chaz_ConfWriterC_append_global_typedef_to_conf(defs[i].str2, + defs[i].str1); + break; case CHAZ_CONFELEM_SYS_INCLUDE: chaz_ConfWriterC_append_sys_include_to_conf(defs[i].str1); break; @@ -261,6 +281,7 @@ chaz_ConfWriterC_end_module(void) { } } break; + case CHAZ_CONFELEM_GLOBAL_TYPEDEF: case CHAZ_CONFELEM_SYS_INCLUDE: case CHAZ_CONFELEM_LOCAL_INCLUDE: /* no-op */ http://git-wip-us.apache.org/repos/asf/lucy/blob/c7e5e6cb/charmonizer/src/Charmonizer/Core/ConfWriterPerl.c ---------------------------------------------------------------------- diff --git a/charmonizer/src/Charmonizer/Core/ConfWriterPerl.c b/charmonizer/src/Charmonizer/Core/ConfWriterPerl.c index 550b409..3b85473 100644 --- a/charmonizer/src/Charmonizer/Core/ConfWriterPerl.c +++ b/charmonizer/src/Charmonizer/Core/ConfWriterPerl.c @@ -43,6 +43,8 @@ chaz_ConfWriterPerl_add_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); +static void chaz_ConfWriterPerl_add_sys_include(const char *header); static void chaz_ConfWriterPerl_add_local_include(const char *header); @@ -53,14 +55,15 @@ chaz_ConfWriterPerl_end_module(void); void 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_typedef = chaz_ConfWriterPerl_add_typedef; - CWPerl_conf_writer.add_sys_include = chaz_ConfWriterPerl_add_sys_include; - CWPerl_conf_writer.add_local_include = chaz_ConfWriterPerl_add_local_include; - CWPerl_conf_writer.start_module = chaz_ConfWriterPerl_start_module; - CWPerl_conf_writer.end_module = chaz_ConfWriterPerl_end_module; + 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_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; + CWPerl_conf_writer.add_local_include = chaz_ConfWriterPerl_add_local_include; + CWPerl_conf_writer.start_module = chaz_ConfWriterPerl_start_module; + CWPerl_conf_writer.end_module = chaz_ConfWriterPerl_end_module; chaz_ConfWriterPerl_open_config_pm(); chaz_ConfWriter_add_writer(&CWPerl_conf_writer); return; @@ -186,6 +189,12 @@ chaz_ConfWriterPerl_add_typedef(const char *type, const char *alias) { } static void +chaz_ConfWriterPerl_add_global_typedef(const char *type, const char *alias) { + (void)type; + (void)alias; +} + +static void chaz_ConfWriterPerl_add_sys_include(const char *header) { (void)header; } http://git-wip-us.apache.org/repos/asf/lucy/blob/c7e5e6cb/charmonizer/src/Charmonizer/Core/ConfWriterRuby.c ---------------------------------------------------------------------- diff --git a/charmonizer/src/Charmonizer/Core/ConfWriterRuby.c b/charmonizer/src/Charmonizer/Core/ConfWriterRuby.c index 86a37a3..caea7ce 100644 --- a/charmonizer/src/Charmonizer/Core/ConfWriterRuby.c +++ b/charmonizer/src/Charmonizer/Core/ConfWriterRuby.c @@ -43,6 +43,8 @@ chaz_ConfWriterRuby_add_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); +static void chaz_ConfWriterRuby_add_sys_include(const char *header); static void chaz_ConfWriterRuby_add_local_include(const char *header); @@ -53,14 +55,15 @@ chaz_ConfWriterRuby_end_module(void); void 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_typedef = chaz_ConfWriterRuby_add_typedef; - CWRuby_conf_writer.add_sys_include = chaz_ConfWriterRuby_add_sys_include; - CWRuby_conf_writer.add_local_include = chaz_ConfWriterRuby_add_local_include; - CWRuby_conf_writer.start_module = chaz_ConfWriterRuby_start_module; - CWRuby_conf_writer.end_module = chaz_ConfWriterRuby_end_module; + 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_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; + CWRuby_conf_writer.add_local_include = chaz_ConfWriterRuby_add_local_include; + CWRuby_conf_writer.start_module = chaz_ConfWriterRuby_start_module; + CWRuby_conf_writer.end_module = chaz_ConfWriterRuby_end_module; chaz_ConfWriterRuby_open_config_rb(); chaz_ConfWriter_add_writer(&CWRuby_conf_writer); return; @@ -184,6 +187,12 @@ chaz_ConfWriterRuby_add_typedef(const char *type, const char *alias) { } static void +chaz_ConfWriterRuby_add_global_typedef(const char *type, const char *alias) { + (void)type; + (void)alias; +} + +static void chaz_ConfWriterRuby_add_sys_include(const char *header) { (void)header; }
