Revision: 76880
http://sourceforge.net/p/brlcad/code/76880
Author: starseeker
Date: 2020-08-21 23:50:16 +0000 (Fri, 21 Aug 2020)
Log Message:
-----------
Cleanup, provide Tclcad_Init for .so file loading
Modified Paths:
--------------
brlcad/trunk/src/libtclcad/tclcad_init.c
Modified: brlcad/trunk/src/libtclcad/tclcad_init.c
===================================================================
--- brlcad/trunk/src/libtclcad/tclcad_init.c 2020-08-21 22:35:50 UTC (rev
76879)
+++ brlcad/trunk/src/libtclcad/tclcad_init.c 2020-08-21 23:50:16 UTC (rev
76880)
@@ -107,7 +107,8 @@
/* Initialize [incr Tcl] */
if (Tcl_Eval(interp, "package require Itcl") != TCL_OK) {
- if (tlog) bu_vls_printf(tlog, "Itcl init ERROR:\n%s\n",
Tcl_GetStringResult(interp));
+ if (tlog)
+ bu_vls_printf(tlog, "Itcl init ERROR:\n%s\n",
Tcl_GetStringResult(interp));
return TCL_ERROR;
}
@@ -115,13 +116,15 @@
/* Initialize [incr Tk] */
if (init_gui) {
if (Tcl_Eval(interp, "package require Itk") != TCL_OK) {
- if (tlog) bu_vls_printf(tlog, "Itk init ERROR:\n%s\n",
Tcl_GetStringResult(interp));
+ if (tlog)
+ bu_vls_printf(tlog, "Itk init ERROR:\n%s\n",
Tcl_GetStringResult(interp));
return TCL_ERROR;
}
/* Initialize the Iwidgets package */
if (Tcl_Eval(interp, "package require Iwidgets") != TCL_OK) {
- if (tlog) bu_vls_printf(tlog, "Iwidgets init ERROR:\n%s\n",
Tcl_GetStringResult(interp));
+ if (tlog)
+ bu_vls_printf(tlog, "Iwidgets init ERROR:\n%s\n",
Tcl_GetStringResult(interp));
return TCL_ERROR;
}
}
@@ -129,31 +132,36 @@
/* Initialize libbu */
if (Bu_Init(interp) == TCL_ERROR) {
- if (tlog) bu_vls_printf(tlog, "Bu_Init ERROR:\n%s\n",
Tcl_GetStringResult(interp));
+ if (tlog)
+ bu_vls_printf(tlog, "Bu_Init ERROR:\n%s\n",
Tcl_GetStringResult(interp));
return TCL_ERROR;
}
/* Initialize libbn */
if (Bn_Init(interp) == TCL_ERROR) {
- if (tlog) bu_vls_printf(tlog, "Bn_Init ERROR:\n%s\n",
Tcl_GetStringResult(interp));
+ if (tlog)
+ bu_vls_printf(tlog, "Bn_Init ERROR:\n%s\n",
Tcl_GetStringResult(interp));
return TCL_ERROR;
}
/* Initialize librt */
if (Rt_Init(interp) == TCL_ERROR) {
- if (tlog) bu_vls_printf(tlog, "Rt_Init ERROR:\n%s\n",
Tcl_GetStringResult(interp));
+ if (tlog)
+ bu_vls_printf(tlog, "Rt_Init ERROR:\n%s\n",
Tcl_GetStringResult(interp));
return TCL_ERROR;
}
/* Initialize libdm */
if (Dm_Init(interp) == TCL_ERROR) {
- if (tlog) bu_vls_printf(tlog, "Dm_Init ERROR:\n%s\n",
Tcl_GetStringResult(interp));
+ if (tlog)
+ bu_vls_printf(tlog, "Dm_Init ERROR:\n%s\n",
Tcl_GetStringResult(interp));
return TCL_ERROR;
}
/* Initialize the GED object */
if (Ged_Init(interp) == TCL_ERROR) {
- if (tlog) bu_vls_printf(tlog, "Ged_Init ERROR:\n%s\n",
Tcl_GetStringResult(interp));
+ if (tlog)
+ bu_vls_printf(tlog, "Ged_Init ERROR:\n%s\n",
Tcl_GetStringResult(interp));
return TCL_ERROR;
}
@@ -171,19 +179,23 @@
if (Tcl_Import(interp, Tcl_GetGlobalNamespace(interp),
"::itcl::*", /* allowOverwrite */ 1) != TCL_OK) {
- if (tlog) bu_vls_printf(tlog, "Tcl_Import ERROR:\n%s\n",
Tcl_GetStringResult(interp));
+ if (tlog)
+ bu_vls_printf(tlog, "Tcl_Import ERROR:\n%s\n",
Tcl_GetStringResult(interp));
return TCL_ERROR;
}
+
#ifdef HAVE_TK
if (init_gui) {
if (Tcl_Import(interp, Tcl_GetGlobalNamespace(interp),
"::itk::*", /* allowOverwrite */ 1) != TCL_OK) {
- if (tlog) bu_vls_printf(tlog, "Tcl_Import ERROR:\n%s\n",
Tcl_GetStringResult(interp));
+ if (tlog)
+ bu_vls_printf(tlog, "Tcl_Import ERROR:\n%s\n",
Tcl_GetStringResult(interp));
return TCL_ERROR;
}
if (Tcl_Import(interp, Tcl_GetGlobalNamespace(interp),
"::iwidgets::*", /* allowOverwrite */ 1) != TCL_OK) {
- if (tlog) bu_vls_printf(tlog, "Tcl_Import ERROR:\n%s\n",
Tcl_GetStringResult(interp));
+ if (tlog)
+ bu_vls_printf(tlog, "Tcl_Import ERROR:\n%s\n",
Tcl_GetStringResult(interp));
return TCL_ERROR;
}
}
@@ -190,7 +202,8 @@
#endif
if (Tcl_Eval(interp, "auto_mkindex_parser::slavehook { _%@namespace import
-force ::itcl::* }") != TCL_OK) {
- bu_log("Tcl_Eval ERROR:\n%s\n", Tcl_GetStringResult(interp));
+ if (tlog)
+ bu_vls_printf(tlog, "Tcl_Eval ERROR:\n%s\n",
Tcl_GetStringResult(interp));
return TCL_ERROR;
}
@@ -197,17 +210,17 @@
#ifdef HAVE_TK
if (init_gui) {
if (Tcl_Eval(interp, "auto_mkindex_parser::slavehook { _%@namespace
import -force ::tk::* }") != TCL_OK) {
- bu_log("Tcl_Eval ERROR:\n%s\n", Tcl_GetStringResult(interp));
+ if (tlog)
+ bu_vls_printf(tlog, "Tcl_Eval ERROR:\n%s\n",
Tcl_GetStringResult(interp));
return TCL_ERROR;
}
if (Tcl_Eval(interp, "auto_mkindex_parser::slavehook { _%@namespace
import -force ::itk::* }") != TCL_OK) {
- bu_log("Tcl_Eval ERROR:\n%s\n", Tcl_GetStringResult(interp));
+ if (tlog)
+ bu_vls_printf(tlog, "Tcl_Eval ERROR:\n%s\n",
Tcl_GetStringResult(interp));
return TCL_ERROR;
}
}
-#endif
-#ifdef HAVE_TK
/* If we're doing Tk, make sure we have a window */
if (init_gui) {
Tk_Window tkwin = Tk_MainWindow(interp);
@@ -215,13 +228,18 @@
}
#endif
- Tcl_PkgProvide(interp, "Tclcad", brlcad_version());
-
- (void)library_initialized(1);
-
return TCL_OK;
}
+/* This is here to allow tclsh to load the .so file and have it initialize.
+ * Application code in BRL-CAD should call tclcad_init and specify GUI/no-GUI
+ * and handle logging as appropriate. */
+TCLCAD_EXPORT int
+Tclcad_Init(Tcl_Interp *interp)
+{
+ return tclcad_init(interp, 1, NULL);
+}
+
void
tclcad_set_argv(Tcl_Interp *interp, int argc, const char **argv)
{
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits