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

Reply via email to