Revision: 77078
http://sourceforge.net/p/brlcad/code/77078
Author: starseeker
Date: 2020-09-08 16:46:19 +0000 (Tue, 08 Sep 2020)
Log Message:
-----------
Merge from trunk: r77067 through r77077
Modified Paths:
--------------
brlcad/branches/RELEASE/AUTHORS
brlcad/branches/RELEASE/include/tclcad.h
brlcad/branches/RELEASE/src/libgcv/plugins/gdal/gdal.cpp
brlcad/branches/RELEASE/src/libgcv/plugins/gdal/gdal_ll.cpp
brlcad/branches/RELEASE/src/libged/bot/bot.cpp
brlcad/branches/RELEASE/src/libtclcad/commands.c
brlcad/branches/RELEASE/src/mged/mged.c
Added Paths:
-----------
brlcad/branches/RELEASE/src/libgcv/plugins/vol/
Property Changed:
----------------
brlcad/branches/RELEASE/
brlcad/branches/RELEASE/include/
Index: brlcad/branches/RELEASE
===================================================================
--- brlcad/branches/RELEASE 2020-09-08 16:41:21 UTC (rev 77077)
+++ brlcad/branches/RELEASE 2020-09-08 16:46:19 UTC (rev 77078)
Property changes on: brlcad/branches/RELEASE
___________________________________________________________________
Modified: svn:mergeinfo
## -7,4 +7,4 ##
/brlcad/branches/opencl:65867-66137
/brlcad/branches/osg:62110-62113
/brlcad/branches/prep-cache:68236-68933
-/brlcad/trunk:36844-37285,37571-38764,38777-38845,41559-43155,43159-43908,44241-44324,44326-44385,44710-45373,45377,45379-47342,47370-68122,68125-75207,75325,75375,75377-75378,75387,75470-75472,75477,75492,75495,75549,75565-75566,75656-75661,75672,75675,75678,75729,75811,76641-76768,76771-76954,76963-76967,76975-76991,76994-77066
\ No newline at end of property
+/brlcad/trunk:36844-37285,37571-38764,38777-38845,41559-43155,43159-43908,44241-44324,44326-44385,44710-45373,45377,45379-47342,47370-68122,68125-75207,75325,75375,75377-75378,75387,75470-75472,75477,75492,75495,75549,75565-75566,75656-75661,75672,75675,75678,75729,75811,76641-76768,76771-76954,76963-76967,76975-76991,76994-77077
\ No newline at end of property
Modified: brlcad/branches/RELEASE/AUTHORS
===================================================================
--- brlcad/branches/RELEASE/AUTHORS 2020-09-08 16:41:21 UTC (rev 77077)
+++ brlcad/branches/RELEASE/AUTHORS 2020-09-08 16:46:19 UTC (rev 77078)
@@ -903,7 +903,12 @@
2020 April
ARL Student Hire / University of Texas at Austin
+Das, Sumagna
+nicknames sumagnadas
+2020 May
+Open Source
+
SPECIAL THANKS
--------------
Index: brlcad/branches/RELEASE/include
===================================================================
--- brlcad/branches/RELEASE/include 2020-09-08 16:41:21 UTC (rev 77077)
+++ brlcad/branches/RELEASE/include 2020-09-08 16:46:19 UTC (rev 77078)
Property changes on: brlcad/branches/RELEASE/include
___________________________________________________________________
Modified: svn:mergeinfo
## -7,4 +7,4 ##
/brlcad/branches/opencl/include:65867-66137
/brlcad/branches/osg/include:62110-62113
/brlcad/branches/prep-cache/include:68236-68933
-/brlcad/trunk/include:36844-37285,37571-38764,38777-38845,41559-43155,43159-43908,44241-44324,44326-44385,44710-45373,45377,45379-47342,47370-68122,68125-75207,75325,75375,75377-75378,75387,75470-75472,75477,75492,75495,75549,75565-75566,75656-75661,75672,75675,75678,75729,75811,76641-76726,76729-76730,76748-76764,76771-76858,76862-76954,76994-77065
\ No newline at end of property
+/brlcad/trunk/include:36844-37285,37571-38764,38777-38845,41559-43155,43159-43908,44241-44324,44326-44385,44710-45373,45377,45379-47342,47370-68122,68125-75207,75325,75375,75377-75378,75387,75470-75472,75477,75492,75495,75549,75565-75566,75656-75661,75672,75675,75678,75729,75811,76641-76726,76729-76730,76748-76764,76771-76858,76862-76954,76994-77065,77067-77077
\ No newline at end of property
Modified: brlcad/branches/RELEASE/include/tclcad.h
===================================================================
--- brlcad/branches/RELEASE/include/tclcad.h 2020-09-08 16:41:21 UTC (rev
77077)
+++ brlcad/branches/RELEASE/include/tclcad.h 2020-09-08 16:46:19 UTC (rev
77078)
@@ -518,7 +518,9 @@
* Tcl specific I/O handlers
*/
struct tclcad_io_data {
- Tcl_Channel chan;
+ Tcl_Channel chan_stdin;
+ Tcl_Channel chan_stdout;
+ Tcl_Channel chan_stderr;
Tcl_Interp *interp;
int io_mode;
};
Modified: brlcad/branches/RELEASE/src/libgcv/plugins/gdal/gdal.cpp
===================================================================
--- brlcad/branches/RELEASE/src/libgcv/plugins/gdal/gdal.cpp 2020-09-08
16:41:21 UTC (rev 77077)
+++ brlcad/branches/RELEASE/src/libgcv/plugins/gdal/gdal.cpp 2020-09-08
16:46:19 UTC (rev 77078)
@@ -97,7 +97,8 @@
get_dataset_info(GDALDatasetH hDataset)
{
char *gdal_info = GDALInfo(hDataset, NULL);
- if (gdal_info) bu_log("%s", gdal_info);
+ if (gdal_info)
+ bu_log("%s", gdal_info);
CPLFree(gdal_info);
return 0;
}
@@ -108,13 +109,16 @@
GDALDatasetH hDataset;
GDALAllRegister();
- if (!data) return 0;
+ if (!data)
+ return 0;
- if (!bu_file_exists(data,NULL)) return 0;
+ if (!bu_file_exists(data,NULL))
+ return 0;
hDataset = GDALOpenEx(data, GDAL_OF_READONLY | GDAL_OF_RASTER , NULL,
NULL, NULL);
- if (!hDataset) return 0;
+ if (!hDataset)
+ return 0;
GDALClose(hDataset);
@@ -129,7 +133,8 @@
GDALRasterBandH band = GDALGetRasterBand(ds, 1);
mm[0] = GDALGetRasterMinimum(band, &bmin);
mm[1] = GDALGetRasterMaximum(band, &bmin);
- if (!bmin || !bmax) GDALComputeRasterMinMax(band, TRUE, mm);
+ if (!bmin || !bmax)
+ GDALComputeRasterMinMax(band, TRUE, mm);
bu_log("Elevation Minimum/Maximum: %f, %f\n", mm[0], mm[1]);
}
@@ -203,17 +208,20 @@
(void)get_dataset_info(state->hDataset);
gdal_elev_minmax(state->hDataset);
- /* Stash the original Spatial Reference System as a PROJ.4 string for
later assignment */
+ /* Stash the original Spatial Reference System as a PROJ.4 string
+ * for later assignment
+ */
char *orig_proj4_str = NULL;
OGRSpatialReference iSRS(GDALGetProjectionRef(state->hDataset));
iSRS.exportToProj4(&orig_proj4_str);
- /* Use the information in the data set to deduce the EPSG number
corresponding
- * to the correct UTM projection zone, define a spatial reference, and
generate
- * the "Well Known Text" to use as the argument to the warping function*/
+ /* Use the information in the data set to deduce the EPSG number
+ * corresponding to the correct UTM projection zone, define a
+ * spatial reference, and generate the "Well Known Text" to use as
+ * the argument to the warping function*/
GDALDatasetH hOutDS;
int zone = (state->ops->zone == INT_MAX) ? gdal_utm_zone(state) :
state->ops->zone;
- char *dunit;
+ char *dunit = NULL;
const char *dunit_default = "m";
struct bu_vls new_proj4_str = BU_VLS_INIT_ZERO;
if (zone != INT_MAX) {
@@ -224,22 +232,26 @@
char *dst_Wkt = NULL;
oSRS.exportToWkt(&dst_Wkt);
- /* Perform the UTM data warp. At this point the data is not yet in the
- * form needed by the DSP primitive */
+ /* Perform the UTM data warp. At this point the data is not
+ * yet in the form needed by the DSP primitive */
hOutDS = GDALAutoCreateWarpedVRT(state->hDataset, NULL, dst_Wkt,
GRA_CubicSpline, 0.0, NULL);
CPLFree(dst_Wkt);
- dunit = bu_strdup(GDALGetRasterUnitType(((GDALDataset
*)hOutDS)->GetRasterBand(1)));
- bu_log("\nTransformed dataset info:\n");
- (void)get_dataset_info(hOutDS);
- gdal_elev_minmax(hOutDS);
+
+ if (hOutDS) {
+ dunit = bu_strdup(GDALGetRasterUnitType(((GDALDataset
*)hOutDS)->GetRasterBand(1)));
+ bu_log("\nTransformed dataset info:\n");
+ (void)get_dataset_info(hOutDS);
+ gdal_elev_minmax(hOutDS);
+ }
} else {
hOutDS = state->hDataset;
dunit = bu_strdup(GDALGetRasterUnitType(((GDALDataset
*)hOutDS)->GetRasterBand(1)));
}
- if (!dunit || strlen(dunit) == 0) dunit = (char *)dunit_default;
+ if (!dunit || strlen(dunit) == 0)
+ dunit = (char *)dunit_default;
- /* Do the translate step (a.l.a gdal_translate) that puts the data in a
- * form we can use */
+ /* Do the translate step (a.l.a gdal_translate) that puts the data
+ * in a form we can use */
char *img_opts[3];
img_opts[0] = bu_strdup("-of");
img_opts[1] = bu_strdup("MEM");
@@ -247,12 +259,15 @@
GDALTranslateOptions *gdalt_opts = GDALTranslateOptionsNew(img_opts, NULL);
GDALDatasetH flatDS = GDALTranslate("", hOutDS, gdalt_opts, NULL);
GDALTranslateOptionsFree(gdalt_opts);
- if (hOutDS != state->hDataset) GDALClose(hOutDS);
+ if (hOutDS != state->hDataset)
+ GDALClose(hOutDS);
for(int i = 0; i < 3; i++) {
- if(img_opts[i]) bu_free(img_opts[i], "imgopt");
+ if(img_opts[i])
+ bu_free(img_opts[i], "imgopt");
}
- /* Stash the flat Spatial Reference System as a PROJ.4 string for later
assignment */
+ /* Stash the flat Spatial Reference System as a PROJ.4 string for
+ * later assignment */
char *flat_proj4_str = NULL;
OGRSpatialReference fSRS(GDALGetProjectionRef(flatDS));
fSRS.exportToProj4(&flat_proj4_str);
@@ -278,7 +293,8 @@
}
}
- /* Convert the data before writing it so the DSP get_obj_data routine sees
what it expects */
+ /* Convert the data before writing it so the DSP get_obj_data
+ * routine sees what it expects */
int in_cookie = bu_cv_cookie("hus");
int out_cookie = bu_cv_cookie("nus"); /* data is network unsigned short */
if (bu_cv_optimize(in_cookie) != bu_cv_optimize(out_cookie)) {
@@ -316,10 +332,11 @@
GDALClose(flatDS);
GDALClose(state->hDataset);
- /* TODO: if we're going to BoT (3-space mesh, will depend on the transform
requested) we will need different logic... */
+ /* TODO: if we're going to BoT (3-space mesh, will depend on the
+ * transform requested) we will need different logic... */
- /* Write out the dsp. Since we're using a data object, instead of a file,
- * do the setup by hand. */
+ /* Write out the dsp. Since we're using a data object, instead of
+ * a file, do the setup by hand. */
struct rt_dsp_internal *dsp;
BU_ALLOC(dsp, struct rt_dsp_internal);
dsp->magic = RT_DSP_INTERNAL_MAGIC;
@@ -346,8 +363,8 @@
wdb_export(state->wdbp, bu_vls_addr(&name_dsp), (void *)dsp, ID_DSP, 1);
- /* Write out the original and current Spatial Reference Systems and other
dimensional
- * information to attributes on the dsp */
+ /* Write out the original and current Spatial Reference Systems
+ * and other dimensional information to attributes on the dsp */
struct bu_attribute_value_set avs;
bu_avs_init_empty(&avs);
struct directory *dp = db_lookup(state->wdbp->dbip,
bu_vls_addr(&name_dsp), LOOKUP_QUIET);
@@ -370,9 +387,12 @@
(void)db5_update_attributes(dp, &avs, state->wdbp->dbip);
}
- if (dunit != dunit_default) bu_free(dunit, "free dunit");
- if (orig_proj4_str) CPLFree(orig_proj4_str);
- if (flat_proj4_str) CPLFree(flat_proj4_str);
+ if (dunit != dunit_default)
+ bu_free(dunit, "free dunit");
+ if (orig_proj4_str)
+ CPLFree(orig_proj4_str);
+ if (flat_proj4_str)
+ CPLFree(flat_proj4_str);
bu_vls_free(&new_proj4_str);
bu_vls_free(&name_root);
Modified: brlcad/branches/RELEASE/src/libgcv/plugins/gdal/gdal_ll.cpp
===================================================================
--- brlcad/branches/RELEASE/src/libgcv/plugins/gdal/gdal_ll.cpp 2020-09-08
16:41:21 UTC (rev 77077)
+++ brlcad/branches/RELEASE/src/libgcv/plugins/gdal/gdal_ll.cpp 2020-09-08
16:46:19 UTC (rev 77078)
@@ -66,19 +66,24 @@
CPLPopErrorHandler();
OSRDestroySpatialReference(hll);
}
- if(hpj != NULL) OSRDestroySpatialReference(hpj);
+ if (hpj != NULL)
+ OSRDestroySpatialReference(hpj);
}
if(htfm != NULL) {
if (OCTTransform(htfm,1,&longitude,&latitude,NULL)) {
- if (lat_center) (*lat_center) = latitude;
- if (long_center) (*long_center) = longitude;
+ if (lat_center)
+ *lat_center = latitude;
+ if (long_center)
+ *long_center = longitude;
} else {
return 0;
}
} else {
- if (lat_center) (*lat_center) = latitude;
- if (long_center) (*long_center) = longitude;
+ if (lat_center)
+ *lat_center = latitude;
+ if (long_center)
+ *long_center = longitude;
}
bu_log("lat: %f, long: %f\n", latitude, longitude);
Modified: brlcad/branches/RELEASE/src/libged/bot/bot.cpp
===================================================================
--- brlcad/branches/RELEASE/src/libged/bot/bot.cpp 2020-09-08 16:41:21 UTC
(rev 77077)
+++ brlcad/branches/RELEASE/src/libged/bot/bot.cpp 2020-09-08 16:46:19 UTC
(rev 77078)
@@ -125,12 +125,43 @@
/* print result string */
if (!EQUAL(propVal, -1.0)) {
-
+ int intprop = (int) propVal;
fastf_t tmp = (int) propVal;
if (EQUAL(propVal, tmp)) {
/* int result */
- bu_vls_printf(gb->gedp->ged_result_str, "%d", (int) propVal);
+ /* for orientation and mode, print something more informative than
just
+ * the number */
+ if (BU_STR_EQUAL(argv[0], "orientation")) {
+ switch (intprop) {
+ case RT_BOT_UNORIENTED:
+ bu_vls_printf(gb->gedp->ged_result_str, "none");
+ break;
+ case RT_BOT_CCW:
+ bu_vls_printf(gb->gedp->ged_result_str, "ccw");
+ break;
+ case RT_BOT_CW:
+ bu_vls_printf(gb->gedp->ged_result_str, "cw");
+ break;
+ }
+ } else if (BU_STR_EQUAL(argv[0], "type") || BU_STR_EQUAL(argv[0],
"mode")){
+ switch (intprop) {
+ case RT_BOT_SURFACE:
+ bu_vls_printf(gb->gedp->ged_result_str, "surface");
+ break;
+ case RT_BOT_SOLID:
+ bu_vls_printf(gb->gedp->ged_result_str, "solid");
+ break;
+ case RT_BOT_PLATE:
+ bu_vls_printf(gb->gedp->ged_result_str, "plate");
+ break;
+ case RT_BOT_PLATE_NOCOS:
+ bu_vls_printf(gb->gedp->ged_result_str, "plate_nocos");
+ break;
+ }
+ } else {
+ bu_vls_printf(gb->gedp->ged_result_str, "%d", (int) propVal);
+ }
} else {
/* float result */
bu_vls_printf(gb->gedp->ged_result_str, "%f", propVal);
@@ -144,6 +175,98 @@
}
extern "C" int
+_bot_cmd_set(void *bs, int argc, const char **argv)
+{
+ const char *usage_string = "bot set <orientation|type> <objname> <val>";
+ const char *purpose_string = "Set BoT object properties";
+ if (_bot_cmd_msgs(bs, argc, argv, usage_string, purpose_string)) {
+ return GED_OK;
+ }
+
+ struct _ged_bot_info *gb = (struct _ged_bot_info *)bs;
+
+ argc--; argv++;
+
+ if (argc != 3) {
+ bu_vls_printf(gb->gedp->ged_result_str, "%s", usage_string);
+ return GED_ERROR;
+ }
+
+ if (_bot_obj_setup(gb, argv[1]) & GED_ERROR) {
+ return GED_ERROR;
+ }
+
+ if (!BU_STR_EQUAL(argv[0], "orientation") && !BU_STR_EQUAL(argv[0],
"type") && !BU_STR_EQUAL(argv[0], "mode")) {
+ bu_vls_printf(gb->gedp->ged_result_str, "%s", usage_string);
+ return GED_ERROR;
+ }
+
+ if (BU_STR_EQUAL(argv[0], "orientation")) {
+ int mode = INT_MAX;
+ struct rt_bot_internal *bot = (struct rt_bot_internal
*)(gb->intern->idb_ptr);
+ if (BU_STR_EQUIV(argv[2], "none") || BU_STR_EQUIV(argv[2],
"unoriented")) {
+ mode = RT_BOT_UNORIENTED;
+ }
+ if (BU_STR_EQUIV(argv[2], "ccw") || BU_STR_EQUIV(argv[2],
"counterclockwise")) {
+ mode = RT_BOT_CCW;
+ }
+ if (BU_STR_EQUIV(argv[2], "cw") || BU_STR_EQUIV(argv[2], "clockwise")) {
+ mode = RT_BOT_CW;
+ }
+ if (mode == INT_MAX) {
+ bu_vls_printf(gb->gedp->ged_result_str, "Possible orientations are:
none ccw cw");
+ return GED_ERROR;
+ }
+ bot->orientation = mode;
+ }
+
+ if (BU_STR_EQUAL(argv[0], "type") || BU_STR_EQUAL(argv[0], "mode")) {
+ int mode = INT_MAX;
+ struct rt_bot_internal *bot = (struct rt_bot_internal
*)(gb->intern->idb_ptr);
+ if (BU_STR_EQUIV(argv[2], "surface") || BU_STR_EQUIV(argv[2], "surf")) {
+ mode = RT_BOT_SURFACE;
+ }
+ if (BU_STR_EQUIV(argv[2], "solid") || BU_STR_EQUIV(argv[2], "sol")) {
+ mode = RT_BOT_SOLID;
+ }
+ if (BU_STR_EQUIV(argv[2], "plate")) {
+ mode = RT_BOT_PLATE;
+ }
+ if (BU_STR_EQUIV(argv[2], "plate_nocos")) {
+ mode = RT_BOT_PLATE_NOCOS;
+ }
+ if (mode == INT_MAX) {
+ bu_vls_printf(gb->gedp->ged_result_str, "Possible types are:
surface solid plate plate_nocos");
+ return GED_ERROR;
+ }
+ int old_mode = bot->mode;
+ bot->mode = mode;
+ if (bot->mode == RT_BOT_PLATE || bot->mode == RT_BOT_PLATE_NOCOS) {
+ if (old_mode != RT_BOT_PLATE && old_mode != RT_BOT_PLATE_NOCOS) {
+ /* need to create some thicknesses */
+ bot->thickness = (fastf_t *)bu_calloc(bot->num_faces,
sizeof(fastf_t), "BOT thickness");
+ bot->face_mode = bu_bitv_new(bot->num_faces);
+ }
+ } else {
+ if (old_mode == RT_BOT_PLATE || old_mode == RT_BOT_PLATE_NOCOS) {
+ /* free the per face memory */
+ bu_free((char *)bot->thickness, "BOT thickness");
+ bot->thickness = (fastf_t *)NULL;
+ bu_free((char *)bot->face_mode, "BOT face_mode");
+ bot->face_mode = (struct bu_bitv *)NULL;
+ }
+ }
+ }
+
+ if (rt_db_put_internal(gb->dp, gb->gedp->ged_wdbp->dbip, gb->intern,
&rt_uniresource) < 0) {
+ bu_vls_printf(gb->gedp->ged_result_str, "Failed to update BoT");
+ return GED_ERROR;
+ }
+
+ return GED_OK;
+}
+
+extern "C" int
_bot_cmd_chull(void *bs, int argc, const char **argv)
{
const char *usage_string = "bot [options] chull <objname> [output_bot]";
@@ -313,6 +436,7 @@
{ "chull", _bot_cmd_chull},
{ "isect", _bot_cmd_isect},
{ "remesh", _bot_cmd_remesh},
+ { "set", _bot_cmd_set},
{ (char *)NULL, NULL}
};
Modified: brlcad/branches/RELEASE/src/libtclcad/commands.c
===================================================================
--- brlcad/branches/RELEASE/src/libtclcad/commands.c 2020-09-08 16:41:21 UTC
(rev 77077)
+++ brlcad/branches/RELEASE/src/libtclcad/commands.c 2020-09-08 16:46:19 UTC
(rev 77078)
@@ -1215,8 +1215,20 @@
struct tclcad_io_data *t_iod = (struct tclcad_io_data
*)p->gedp->ged_io_data;
HANDLE *fdp = (HANDLE *)bu_process_fd(p->p, d);
if (fdp) {
- t_iod->chan = Tcl_MakeFileChannel(*fdp, t_iod->io_mode);
- Tcl_CreateChannelHandler(t_iod->chan, t_iod->io_mode, callback,
(ClientData)data);
+ switch (d) {
+ case BU_PROCESS_STDIN:
+ t_iod->chan_stdin = Tcl_MakeFileChannel(*fdp,
t_iod->io_mode);
+ Tcl_CreateChannelHandler(t_iod->chan_stdin,
t_iod->io_mode, callback, (ClientData)data);
+ break;
+ case BU_PROCESS_STDOUT:
+ t_iod->chan_stdout = Tcl_MakeFileChannel(*fdp,
t_iod->io_mode);
+ Tcl_CreateChannelHandler(t_iod->chan_stdout,
t_iod->io_mode, callback, (ClientData)data);
+ break;
+ case BU_PROCESS_STDERR:
+ t_iod->chan_stderr = Tcl_MakeFileChannel(*fdp,
t_iod->io_mode);
+ Tcl_CreateChannelHandler(t_iod->chan_stderr,
t_iod->io_mode, callback, (ClientData)data);
+ break;
+ }
}
}
@@ -1227,8 +1239,20 @@
if (!p || !p->p || !p->gedp || !p->gedp->ged_io_data)
return;
struct tclcad_io_data *t_iod = (struct tclcad_io_data
*)p->gedp->ged_io_data;
- Tcl_DeleteChannelHandler(t_iod->chan, NULL, (ClientData)NULL);
- Tcl_Close(t_iod->interp, t_iod->chan);
+ switch (d) {
+ case BU_PROCESS_STDIN:
+ Tcl_DeleteChannelHandler(t_iod->chan_stdin, NULL,
(ClientData)NULL);
+ Tcl_Close(t_iod->interp, t_iod->chan_stdin);
+ break;
+ case BU_PROCESS_STDOUT:
+ Tcl_DeleteChannelHandler(t_iod->chan_stdout, NULL,
(ClientData)NULL);
+ Tcl_Close(t_iod->interp, t_iod->chan_stdout);
+ break;
+ case BU_PROCESS_STDERR:
+ Tcl_DeleteChannelHandler(t_iod->chan_stderr, NULL,
(ClientData)NULL);
+ Tcl_Close(t_iod->interp, t_iod->chan_stderr);
+ break;
+ }
}
#endif
Modified: brlcad/branches/RELEASE/src/mged/mged.c
===================================================================
--- brlcad/branches/RELEASE/src/mged/mged.c 2020-09-08 16:41:21 UTC (rev
77077)
+++ brlcad/branches/RELEASE/src/mged/mged.c 2020-09-08 16:46:19 UTC (rev
77078)
@@ -2802,6 +2802,8 @@
GEDP->ged_destroy_vlist_callback = freeDListsAll;
GEDP->ged_create_io_handler = &tclcad_create_io_handler;
GEDP->ged_delete_io_handler = &tclcad_delete_io_handler;
+ GEDP->ged_interp = (void *)interpreter;
+ GEDP->ged_interp_eval = &mged_db_search_callback;
struct tclcad_io_data *t_iod;
BU_GET(t_iod, struct tclcad_io_data);
t_iod->io_mode = TCL_READABLE;
@@ -2964,6 +2966,8 @@
GEDP->ged_destroy_vlist_callback = freeDListsAll;
GEDP->ged_create_io_handler = &tclcad_create_io_handler;
GEDP->ged_delete_io_handler = &tclcad_delete_io_handler;
+ GEDP->ged_interp = (void *)interpreter;
+ GEDP->ged_interp_eval = &mged_db_search_callback;
struct tclcad_io_data *t_iod;
BU_GET(t_iod, struct tclcad_io_data);
t_iod->io_mode = TCL_READABLE;
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