Revision: 71799 http://sourceforge.net/p/brlcad/code/71799 Author: starseeker Date: 2018-09-24 18:34:32 +0000 (Mon, 24 Sep 2018) Log Message: ----------- Wire the brep validity test into lint.
Modified Paths: -------------- brlcad/trunk/src/libged/lint.cpp Modified: brlcad/trunk/src/libged/lint.cpp =================================================================== --- brlcad/trunk/src/libged/lint.cpp 2018-09-24 18:07:54 UTC (rev 71798) +++ brlcad/trunk/src/libged/lint.cpp 2018-09-24 18:34:32 UTC (rev 71799) @@ -97,6 +97,7 @@ struct _ged_invalid_data { struct ged *gedp; + struct _ged_lint_opts *o; std::set<struct directory *> invalid_dps; std::map<struct directory *, struct invalid_obj> invalid_msgs; }; @@ -313,9 +314,9 @@ bu_free_external(&ext); break; default: - break; + break; } -} +} int _ged_missing_check(struct _ged_missing_data *mdata, struct ged *gedp, int argc, struct directory **dpa) @@ -377,6 +378,7 @@ struct invalid_obj obj; struct rt_db_internal intern; struct rt_bot_internal *bot; + struct bu_vls vlog = BU_VLS_INIT_ZERO; int not_valid = 0; if (!idata || !gedp || !dp) return; @@ -383,13 +385,14 @@ if (dp->d_flags & RT_DIR_HIDDEN) return; if (dp->d_addr == RT_DIR_PHONY_ADDR) return; + if (rt_db_get_internal(&intern, dp, gedp->ged_wdbp->dbip, (fastf_t *)NULL, &rt_uniresource) < 0) return; + if (intern.idb_major_type != DB5_MAJORTYPE_BRLCAD) { + rt_db_free_internal(&intern); + return; + } + switch (dp->d_minor_type) { case DB5_MINORTYPE_BRLCAD_BOT: - if (rt_db_get_internal(&intern, dp, gedp->ged_wdbp->dbip, (fastf_t *)NULL, &rt_uniresource) < 0) return; - if (intern.idb_major_type != DB5_MAJORTYPE_BRLCAD) { - rt_db_free_internal(&intern); - return; - } bot = (struct rt_bot_internal *)intern.idb_ptr; RT_BOT_CK_MAGIC(bot); if (bot->mode != RT_BOT_PLATE && bot->mode != RT_BOT_PLATE_NOCOS) { @@ -402,6 +405,18 @@ } rt_db_free_internal(&intern); break; + case DB5_MINORTYPE_BRLCAD_BREP: + not_valid = !rt_brep_valid(&intern, &vlog); + if (not_valid) { + obj.name = std::string(dp->d_namep); + obj.type= std::string("brep"); + if (idata->o->verbosity) { + obj.error = std::string(bu_vls_addr(&vlog)); + } else { + obj.error = std::string("failed OpenNURBS validity test"); + } + } + break; case DB5_MINORTYPE_BRLCAD_ARB8: // TODO - check for twisted arbs. break; @@ -420,6 +435,7 @@ idata->invalid_msgs.insert(std::pair<struct directory *, struct invalid_obj>(dp, obj)); } + bu_vls_free(&vlog); } int @@ -515,6 +531,7 @@ _ged_lint_opts_verify(opts); + if (opts->cyclic_check) { bu_log("Checking for cyclic paths...\n"); BU_GET(cdata, struct _ged_cyclic_data); @@ -553,6 +570,7 @@ if (opts->invalid_shape_check) { bu_log("Checking for invalid objects...\n"); + idata->o = opts; ret = _ged_invalid_shape_check(idata, gedp, argc, dpa); if (ret != GED_OK) { goto ged_lint_memfree; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. _______________________________________________ BRL-CAD Source Commits mailing list brlcad-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/brlcad-commits