You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucy.apache.org by ma...@apache.org on 2012/06/18 06:23:24 UTC
[lucy-commits] svn commit: r1351203 - in /lucy/trunk/charmonizer: buildbin/meld.pl
charmonize.c src/Charmonizer/Core/ConfWriter.c
src/Charmonizer/Core/ConfWriter.h src/Charmonizer/Core/ConfWriterC.c
Author: marvin
Date: Mon Jun 18 04:23:24 2012
New Revision: 1351203
URL: http://svn.apache.org/viewvc?rev=1351203&view=rev
Log:
Genericize ConfWriter.
Change ConfWriter to iterate over a list of generic writers, rather than
calling out to the C writer specifically.
Modified:
lucy/trunk/charmonizer/buildbin/meld.pl
lucy/trunk/charmonizer/charmonize.c
lucy/trunk/charmonizer/src/Charmonizer/Core/ConfWriter.c
lucy/trunk/charmonizer/src/Charmonizer/Core/ConfWriter.h
lucy/trunk/charmonizer/src/Charmonizer/Core/ConfWriterC.c
Modified: lucy/trunk/charmonizer/buildbin/meld.pl
URL: http://svn.apache.org/viewvc/lucy/trunk/charmonizer/buildbin/meld.pl?rev=1351203&r1=1351202&r2=1351203&view=diff
==============================================================================
--- lucy/trunk/charmonizer/buildbin/meld.pl (original)
+++ lucy/trunk/charmonizer/buildbin/meld.pl Mon Jun 18 04:23:24 2012
@@ -182,6 +182,7 @@ sub meld_start {
*/
#define CHAZ_USE_SHORT_NAMES
+#define CHAZ_CONFWRITER_INTERNAL
END_STUFF
}
Modified: lucy/trunk/charmonizer/charmonize.c
URL: http://svn.apache.org/viewvc/lucy/trunk/charmonizer/charmonize.c?rev=1351203&r1=1351202&r2=1351203&view=diff
==============================================================================
--- lucy/trunk/charmonizer/charmonize.c (original)
+++ lucy/trunk/charmonizer/charmonize.c Mon Jun 18 04:23:24 2012
@@ -34,6 +34,7 @@
#include "Charmonizer/Probe/VariadicMacros.h"
#include "Charmonizer/Core/HeaderChecker.h"
#include "Charmonizer/Core/ConfWriter.h"
+#include "Charmonizer/Core/ConfWriterC.h"
int main(int argc, char **argv) {
/* Parse and process arguments. */
@@ -46,6 +47,7 @@ int main(int argc, char **argv) {
char *cc_command = argv[1];
char *cc_flags = argv[2];
chaz_Probe_init(cc_command, cc_flags);
+ chaz_ConfWriterC_enable();
}
/* Run probe modules. */
Modified: lucy/trunk/charmonizer/src/Charmonizer/Core/ConfWriter.c
URL: http://svn.apache.org/viewvc/lucy/trunk/charmonizer/src/Charmonizer/Core/ConfWriter.c?rev=1351203&r1=1351202&r2=1351203&view=diff
==============================================================================
--- lucy/trunk/charmonizer/src/Charmonizer/Core/ConfWriter.c (original)
+++ lucy/trunk/charmonizer/src/Charmonizer/Core/ConfWriter.c Mon Jun 18 04:23:24 2012
@@ -18,60 +18,95 @@
#include "Charmonizer/Core/Util.h"
#include "Charmonizer/Core/ConfWriter.h"
-#include "Charmonizer/Core/ConfWriterC.h"
#include <stdarg.h>
#include <stdio.h>
+#define CW_MAX_WRITERS 10
+static struct {
+ ConfWriter *writers[CW_MAX_WRITERS];
+ size_t num_writers;
+} CW;
+
void
ConfWriter_init(void) {
- ConfWriterC_enable();
+ CW.num_writers = 0;
return;
}
void
ConfWriter_clean_up(void) {
- ConfWriterC_clean_up();
+ size_t i;
+ for (i = 0; i < CW.num_writers; i++) {
+ CW.writers[i]->clean_up();
+ }
}
void
ConfWriter_append_conf(const char *fmt, ...) {
va_list args;
+ size_t i;
- va_start(args, fmt);
- ConfWriterC_vappend_conf(fmt, args);
- va_end(args);
+ for (i = 0; i < CW.num_writers; i++) {
+ va_start(args, fmt);
+ CW.writers[i]->vappend_conf(fmt, args);
+ va_end(args);
+ }
}
void
ConfWriter_add_def(const char *sym, const char *value) {
- ConfWriterC_add_def(sym, value);
+ size_t i;
+ for (i = 0; i < CW.num_writers; i++) {
+ CW.writers[i]->add_def(sym, value);
+ }
}
void
ConfWriter_add_typedef(const char *type, const char *alias) {
- ConfWriterC_add_typedef(type, alias);
+ size_t i;
+ for (i = 0; i < CW.num_writers; i++) {
+ CW.writers[i]->add_typedef(type, alias);
+ }
}
void
ConfWriter_add_sys_include(const char *header) {
- ConfWriterC_add_sys_include(header);
+ size_t i;
+ for (i = 0; i < CW.num_writers; i++) {
+ CW.writers[i]->add_sys_include(header);
+ }
}
void
ConfWriter_add_local_include(const char *header) {
- ConfWriterC_add_local_include(header);
+ size_t i;
+ for (i = 0; i < CW.num_writers; i++) {
+ CW.writers[i]->add_local_include(header);
+ }
}
void
ConfWriter_start_module(const char *module_name) {
+ size_t i;
if (chaz_Util_verbosity > 0) {
printf("Running %s module...\n", module_name);
}
- ConfWriterC_start_module(module_name);
+ for (i = 0; i < CW.num_writers; i++) {
+ CW.writers[i]->start_module(module_name);
+ }
}
void
ConfWriter_end_module(void) {
- ConfWriterC_end_module();
+ size_t i;
+ for (i = 0; i < CW.num_writers; i++) {
+ CW.writers[i]->end_module();
+ }
+}
+
+void
+ConfWriter_add_writer(ConfWriter *writer) {
+ CW.writers[CW.num_writers] = writer;
+ CW.num_writers++;
}
Modified: lucy/trunk/charmonizer/src/Charmonizer/Core/ConfWriter.h
URL: http://svn.apache.org/viewvc/lucy/trunk/charmonizer/src/Charmonizer/Core/ConfWriter.h?rev=1351203&r1=1351202&r2=1351203&view=diff
==============================================================================
--- lucy/trunk/charmonizer/src/Charmonizer/Core/ConfWriter.h (original)
+++ lucy/trunk/charmonizer/src/Charmonizer/Core/ConfWriter.h Mon Jun 18 04:23:24 2012
@@ -25,8 +25,11 @@ extern "C" {
#endif
#include <stddef.h>
+#include <stdarg.h>
#include "Charmonizer/Core/Defines.h"
+struct chaz_ConfWriter;
+
/* Initialize elements needed by ConfWriter. Must be called before anything
* else, but after os and compiler are initialized.
*/
@@ -74,6 +77,41 @@ chaz_ConfWriter_start_module(const char
void
chaz_ConfWriter_end_module(void);
+void
+chaz_ConfWriter_add_writer(struct chaz_ConfWriter *writer);
+
+#ifdef CHAZ_CONFWRITER_INTERNAL
+typedef void
+(*chaz_ConfWriter_clean_up_t)(void);
+typedef void
+(*chaz_ConfWriter_vappend_conf_t)(const char *fmt, va_list args);
+typedef void
+(*chaz_ConfWriter_add_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_sys_include_t)(const char *header);
+typedef void
+(*chaz_ConfWriter_add_local_include_t)(const char *header);
+typedef void
+(*chaz_ConfWriter_start_module_t)(const char *module_name);
+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;
+#ifdef CHAZ_USE_SHORT_NAMES
+ #define ConfWriter chaz_ConfWriter
+#endif /* CHAZ_USE_SHORT_NAMES */
+#endif /* CHAZ_CONFWRITER_INTERNAL */
+
#ifdef CHAZ_USE_SHORT_NAMES
#define ConfWriter_init chaz_ConfWriter_init
#define ConfWriter_clean_up chaz_ConfWriter_clean_up
Modified: lucy/trunk/charmonizer/src/Charmonizer/Core/ConfWriterC.c
URL: http://svn.apache.org/viewvc/lucy/trunk/charmonizer/src/Charmonizer/Core/ConfWriterC.c?rev=1351203&r1=1351202&r2=1351203&view=diff
==============================================================================
--- lucy/trunk/charmonizer/src/Charmonizer/Core/ConfWriterC.c (original)
+++ lucy/trunk/charmonizer/src/Charmonizer/Core/ConfWriterC.c Mon Jun 18 04:23:24 2012
@@ -44,6 +44,7 @@ static FILE *charmony_fh = NULL;
static ConfElem *defs = NULL;
static size_t def_cap = 0;
static size_t def_count = 0;
+static ConfWriter CWC_conf_writer;
/* Open the charmony.h file handle. Print supplied text to it, if non-null.
* Print an explanatory comment and open the include guard.
@@ -61,7 +62,16 @@ S_clear_def_list(void);
void
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;
S_open_charmony_h(NULL);
+ ConfWriter_add_writer(&CWC_conf_writer);
return;
}