[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