[darwinbuild-changes] [205] trunk/darwinxref

source_changes at macosforge.org source_changes at macosforge.org
Wed Oct 4 01:58:34 PDT 2006


Revision: 205
          http://trac.macosforge.org/projects/darwinbuild/changeset/205
Author:   kevin
Date:     2006-10-04 01:58:34 -0700 (Wed, 04 Oct 2006)

Log Message:
-----------
- use function pointers instead of conditional logic for Tcl plugin handlers

Modified Paths:
--------------
    trunk/darwinxref/DBPlugin.c
    trunk/darwinxref/DBPluginPriv.h
    trunk/darwinxref/DBTclPlugin.c

Modified: trunk/darwinxref/DBPlugin.c
===================================================================
--- trunk/darwinxref/DBPlugin.c	2005-08-29 23:20:11 UTC (rev 204)
+++ trunk/darwinxref/DBPlugin.c	2006-10-04 08:58:34 UTC (rev 205)
@@ -199,16 +199,7 @@
 		const DBPlugin* plugin = DBGetPluginWithName(name);
 		if (plugin) {
 			_DBPluginSetCurrentPlugin(plugin);
-#if HAVE_TCL_PLUGINS
-			CFStringRef usage = NULL;
-			if ((plugin->interp) != 0) {
-				usage = call_tcl_usage((DBPlugin*)plugin);
-			} else {
-				usage = plugin->usage();
-			}
-#else
 			CFStringRef usage = plugin->usage();
-#endif
 			cfprintf(stderr, "usage: %s [-f db] [-b build] %@ %@\n", progname, name, usage);
 			CFRelease(usage);
 			return;
@@ -226,16 +217,7 @@
 		CFStringRef name = CFArrayGetValueAtIndex(pluginNames, i);
 		const DBPlugin* plugin = DBGetPluginWithName(name);
 		_DBPluginSetCurrentPlugin(plugin);
-#if HAVE_TCL_PLUGINS
-		CFStringRef usage = NULL;
-		if ((plugin->interp) != 0) {
-			usage = call_tcl_usage((DBPlugin*)plugin);
-		} else {
-			usage = plugin->usage();
-		}
-#else
 		CFStringRef usage = plugin->usage();
-#endif
 		cfprintf(stderr, "\t%@ %@\n", name, usage);
 		CFRelease(usage);
 	}
@@ -258,15 +240,7 @@
 	const DBPlugin* plugin = DBGetPluginWithName(name);
 	if (plugin) {
 		_DBPluginSetCurrentPlugin(plugin);
-#if HAVE_TCL_PLUGINS
-		if ((plugin->interp) != 0) {
-			res = call_tcl_run((DBPlugin*)plugin, args);
-		} else {
-			res = plugin->run(args);
-		}
-#else
 		res = plugin->run(args);
-#endif
 	}
 	CFRelease(name);
 	return res;

Modified: trunk/darwinxref/DBPluginPriv.h
===================================================================
--- trunk/darwinxref/DBPluginPriv.h	2005-08-29 23:20:11 UTC (rev 204)
+++ trunk/darwinxref/DBPluginPriv.h	2006-10-04 08:58:34 UTC (rev 205)
@@ -78,8 +78,8 @@
 
 #if HAVE_TCL_PLUGINS
 int load_tcl_plugin(DBPlugin* plugin, const char* filename);
-CFStringRef call_tcl_usage(DBPlugin* plugin);
-int call_tcl_run(DBPlugin* plugin, CFArrayRef args);
+CFStringRef _DBPluginTclUsage();
+int _DBPluginTclRun(CFArrayRef args);
 #endif
 
 int DBPluginLoadPlugins(const char* path);

Modified: trunk/darwinxref/DBTclPlugin.c
===================================================================
--- trunk/darwinxref/DBTclPlugin.c	2005-08-29 23:20:11 UTC (rev 204)
+++ trunk/darwinxref/DBTclPlugin.c	2006-10-04 08:58:34 UTC (rev 205)
@@ -316,7 +316,9 @@
 int load_tcl_plugin(DBPlugin* plugin, const char* filename) {
 	Tcl_Interp* interp = Tcl_CreateInterp();
 
-	plugin->interp = (DBPluginRunFunc)interp;
+	plugin->usage = &_DBPluginTclUsage;
+	plugin->run = &_DBPluginTclRun;
+	plugin->interp = interp;
 
 	// Register our plugin callbacks
 	Tcl_CreateObjCommand(interp, "DBPluginSetName", DBPluginSetNameCmd, (ClientData)plugin, (Tcl_CmdDeleteProc *)NULL);
@@ -342,7 +344,9 @@
 	return 0;
 }
 
-CFStringRef call_tcl_usage(DBPlugin* plugin) {
+CFStringRef _DBPluginTclUsage() {
+	DBPlugin* plugin = _DBPluginGetCurrentPlugin();
+
 	// Test if the 'usage' proc exists, if not, use the default handler.
 	if (Tcl_Eval(plugin->interp, "info commands usage") == TCL_OK) {
 		const char* result = Tcl_GetStringResult(plugin->interp);
@@ -356,7 +360,9 @@
 	return cfstr_tcl(res);
 }
 
-int call_tcl_run(DBPlugin* plugin, CFArrayRef args) {
+int _DBPluginTclRun(CFArrayRef args) {
+	DBPlugin* plugin = _DBPluginGetCurrentPlugin();
+
 	// Test if the 'run' proc exists, if not, use the default handler.
 	if (Tcl_Eval(plugin->interp, "info commands run") == TCL_OK) {
 		const char* result = Tcl_GetStringResult(plugin->interp);

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/darwinbuild-changes/attachments/20061004/e6c60b4b/attachment-0001.html


More information about the darwinbuild-changes mailing list