Revision: 76853
http://sourceforge.net/p/brlcad/code/76853
Author: starseeker
Date: 2020-08-19 23:30:53 +0000 (Wed, 19 Aug 2020)
Log Message:
-----------
checkpoint
Modified Paths:
--------------
brlcad/branches/analyze_cmd/src/libged/analyze/analyze.cpp
brlcad/branches/analyze_cmd/src/libged/analyze/op_pnts_vol.cpp
brlcad/branches/analyze_cmd/src/libged/kill/kill.c
Modified: brlcad/branches/analyze_cmd/src/libged/analyze/analyze.cpp
===================================================================
--- brlcad/branches/analyze_cmd/src/libged/analyze/analyze.cpp 2020-08-19
22:55:01 UTC (rev 76852)
+++ brlcad/branches/analyze_cmd/src/libged/analyze/analyze.cpp 2020-08-19
23:30:53 UTC (rev 76853)
@@ -79,10 +79,10 @@
static void
_analyze_info_destroy(struct _ged_analyze_info *s)
{
- delete[] s->union_map;
- delete[] s->isect_map;
- delete[] s->subtr_map;
- delete[] s;
+ delete s->union_map;
+ delete s->isect_map;
+ delete s->subtr_map;
+ delete s;
}
static bool
@@ -164,7 +164,7 @@
// If there isn't a specific type, see if there's a generic match for t2
type2 = (db_solid_type(t2)) ? DB_SOLID : DB_NON_SOLID;
if (omap->find(std::make_pair(type1, type2)) != omap->end()) {
- return (*omap)[std::make_pair(t1, t2)];
+ return (*omap)[std::make_pair(type1, type2)];
}
// If there isn't a specific type, see if there's a generic match for t1
@@ -171,13 +171,13 @@
type1 = (db_solid_type(t1)) ? DB_SOLID : DB_NON_SOLID;
type2 = t2;
if (omap->find(std::make_pair(type1, type2)) != omap->end()) {
- return (*omap)[std::make_pair(t1, t2)];
+ return (*omap)[std::make_pair(type1, type2)];
}
// If there isn't a match, see if there's a generic match for t1 and t2
type1 = (db_solid_type(t1)) ? DB_SOLID : DB_NON_SOLID;
type2 = (db_solid_type(t2)) ? DB_SOLID : DB_NON_SOLID;
if (omap->find(std::make_pair(type1, type2)) != omap->end()) {
- return (*omap)[std::make_pair(t1, t2)];
+ return (*omap)[std::make_pair(type1, type2)];
}
// Nope, nothing
@@ -335,6 +335,16 @@
return GED_OK;
}
+static void
+clear_obj(struct ged *gedp, const char *name)
+{
+ const char *av[4];
+ av[0] = "kill";
+ av[1] = "-f";
+ av[2] = "-q";
+ av[3] = name;
+ ged_kill(gedp, 4, (const char **)av);
+}
extern "C" int
_analyze_cmd_intersect(void *bs, int argc, const char **argv)
@@ -377,6 +387,7 @@
bu_vls_printf(gc->gedp->ged_result_str, "%s\n", usage_string);
return GED_HELP;
}
+ argc = ac;
long ret = 0;
const char *n1 = NULL;
@@ -394,13 +405,7 @@
o1 = t1;
r1 = t2;
} else {
- {
- const char *av[3];
- av[0] = "kill";
- av[1] = "-f";
- av[2] = r1;
- ged_kill(gc->gedp, 3, (const char **)av);
- }
+ clear_obj(gc->gedp, r1);
const char *tmp = r1;
r1 = o1;
o1 = tmp;
@@ -414,6 +419,12 @@
GED_DB_GET_INTERNAL(gedp, &i2, dp2, bn_mat_identity, &rt_uniresource,
GED_ERROR);
op_func_ptr of = _analyze_find_processor(gc, DB_OP_INTERSECT,
i1.idb_minor_type, i2.idb_minor_type);
+ if (!of) {
+ bu_vls_sprintf(gedp->ged_result_str, "Unsupported type paring\n");
+ clear_obj(gc->gedp, o1);
+ return GED_ERROR;
+ }
+
if (of) {
ret = (*of)(o1, gc->gedp, DB_OP_INTERSECT, n1, n2);
if (ret == -1) {
@@ -420,11 +431,7 @@
{
struct bu_vls tmpstr = BU_VLS_INIT_ZERO;
bu_vls_sprintf(&tmpstr, "%s",
bu_vls_cstr(gedp->ged_result_str));
- const char *av[3];
- av[0] = "kill";
- av[1] = "-f";
- av[2] = o1;
- ged_kill(gc->gedp, 3, (const char **)av);
+ clear_obj(gc->gedp, o1);
bu_vls_sprintf(gedp->ged_result_str, "%s",
bu_vls_cstr(&tmpstr));
}
return GED_ERROR;
@@ -439,11 +446,7 @@
av[2] = bu_vls_cstr(&oname);
ged_move(gc->gedp, 3, (const char **)av);
} else {
- const char *av[3];
- av[0] = "kill";
- av[1] = "-f";
- av[2] = o1;
- ged_kill(gc->gedp, 3, (const char **)av);
+ clear_obj(gc->gedp, o1);
}
bu_vls_sprintf(gedp->ged_result_str, "%ld", ret);
@@ -578,7 +581,7 @@
}
int ret;
- if (bu_cmd(_analyze_cmds, argc, argv, 0, (void *)&gc, &ret) == BRLCAD_OK) {
+ if (bu_cmd(_analyze_cmds, argc, argv, 0, (void *)gc, &ret) == BRLCAD_OK) {
_analyze_info_destroy(gc);
return ret;
} else {
Modified: brlcad/branches/analyze_cmd/src/libged/analyze/op_pnts_vol.cpp
===================================================================
--- brlcad/branches/analyze_cmd/src/libged/analyze/op_pnts_vol.cpp
2020-08-19 22:55:01 UTC (rev 76852)
+++ brlcad/branches/analyze_cmd/src/libged/analyze/op_pnts_vol.cpp
2020-08-19 23:30:53 UTC (rev 76853)
@@ -152,7 +152,7 @@
// If we're supposed to make an output object, don't do anything
// until we're sure the way is clear.
if (output_pnts_obj) {
- struct directory *odp = db_lookup(gedp->ged_wdbp->dbip, pnts_obj,
LOOKUP_QUIET);
+ struct directory *odp = db_lookup(gedp->ged_wdbp->dbip,
output_pnts_obj, LOOKUP_QUIET);
if (odp != RT_DIR_NULL) {
bu_vls_printf(gedp->ged_result_str, "%s already exists, aborting",
output_pnts_obj);
return -1;
@@ -197,7 +197,7 @@
/* Verify the object supplied as the volume object has
* non non-volumetric object types in its hierarchy. If
* there is such an object, abandon the test. */
- const char *tfilter = "! -type solid";
+ const char *tfilter = "! -type shape";
if (db_search(NULL, DB_SEARCH_QUIET, tfilter, 1, &dp,
gedp->ged_wdbp->dbip, NULL) > 0) {
bu_vls_printf(gedp->ged_result_str, "Non-solid object found in %s,
aborting\n", vol_obj);
rt_db_free_internal(&tpnts_intern);
Modified: brlcad/branches/analyze_cmd/src/libged/kill/kill.c
===================================================================
--- brlcad/branches/analyze_cmd/src/libged/kill/kill.c 2020-08-19 22:55:01 UTC
(rev 76852)
+++ brlcad/branches/analyze_cmd/src/libged/kill/kill.c 2020-08-19 23:30:53 UTC
(rev 76853)
@@ -60,7 +60,7 @@
}
bu_optind = 1;
- while ((c = bu_getopt(argc, (char * const *)argv, "fn")) != -1) {
+ while ((c = bu_getopt(argc, (char * const *)argv, "fnq")) != -1) {
switch (c) {
case 'f':
force = 1;
@@ -68,6 +68,9 @@
case 'n':
nflag = 1;
break;
+ case 'q':
+ verbose = LOOKUP_QUIET;
+ break;
default:
bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0],
usage);
return GED_ERROR;
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