[brlcad-commits] SF.net SVN: brlcad:[58049] brlcad/trunk/src/libged/constraint/constraint.c
Open Source Solid Modeling CAD
Brought to you by:
brlcad
From: <br...@us...> - 2013-10-02 03:56:25
|
Revision: 58049 http://sourceforge.net/p/brlcad/code/58049 Author: brlcad Date: 2013-10-02 03:56:22 +0000 (Wed, 02 Oct 2013) Log Message: ----------- implement get and show, presently utilizing the attribute value system since a very similar interface should suffice for our pretty printing needs Modified Paths: -------------- brlcad/trunk/src/libged/constraint/constraint.c Modified: brlcad/trunk/src/libged/constraint/constraint.c =================================================================== --- brlcad/trunk/src/libged/constraint/constraint.c 2013-10-02 02:27:23 UTC (rev 58048) +++ brlcad/trunk/src/libged/constraint/constraint.c 2013-10-02 03:56:22 UTC (rev 58049) @@ -45,35 +45,85 @@ HIDDEN int constraint_get(void *datap, int argc, const char *argv[]) { + size_t i, obj; struct directory *dp; + struct bu_attribute_value_set avs; + struct bu_attribute_value_pair *avpp; + int ret = BRLCAD_OK; + struct ged *gedp = (struct ged *)datap; + if (!gedp || argc < 1 || !argv) return BRLCAD_ERROR; - /* load the constraint object */ - GED_DB_LOOKUP(gedp, dp, argv[2], LOOKUP_QUIET, BRLCAD_ERROR); + /* multiple arguments assumed to be multiple objects */ + for (obj = 0; 2+obj < (size_t)argc; obj++) { - bu_vls_printf(gedp->ged_result_str, "<<constraint get here>>\n"); + /* load the constraint object */ + dp = db_lookup(gedp->ged_wdbp->dbip, argv[2+obj], LOOKUP_QUIET); + if (dp == RT_DIR_NULL) { + bu_vls_printf(gedp->ged_result_str, "Unable to find %s in the database.\n", argv[2+obj]); + ret = BRLCAD_ERROR; + continue; + } - return BRLCAD_OK; + bu_avs_init_empty(&avs); + if (db5_get_attributes(gedp->ged_wdbp->dbip, &avs, dp)) { + bu_vls_printf(gedp->ged_result_str, "Cannot get constraints for %s\n", dp->d_namep); + ret = BRLCAD_ERROR; + } + + for (i=0, avpp = avs.avp; i < avs.count; i++, avpp++) { + bu_vls_printf(gedp->ged_result_str, "%s %s %s\n", argv[2+obj], avpp->name, avpp->value); + } + + bu_avs_free(&avs); + } + + return ret; } HIDDEN int constraint_show(void *datap, int argc, const char *argv[]) { + size_t i, obj; struct directory *dp; + struct bu_attribute_value_set avs; + struct bu_attribute_value_pair *avpp; + int ret = BRLCAD_OK; + struct ged *gedp = (struct ged *)datap; + if (!gedp || argc < 1 || !argv) return BRLCAD_ERROR; - /* load the constraint object */ - GED_DB_LOOKUP(gedp, dp, argv[2], LOOKUP_QUIET, BRLCAD_ERROR); + /* multiple arguments assumed to be multiple objects */ + for (obj = 0; 2+obj < (size_t)argc; obj++) { + bu_vls_printf(gedp->ged_result_str, "%s:\n", argv[2+obj]); - bu_vls_printf(gedp->ged_result_str, "Constraint %s:\n", argv[2]); - bu_vls_printf(gedp->ged_result_str, "<<constraint show here>>\n"); + /* load the constraint object */ + dp = db_lookup(gedp->ged_wdbp->dbip, argv[2+obj], LOOKUP_QUIET); + if (dp == RT_DIR_NULL) { + bu_vls_printf(gedp->ged_result_str, "\tUnable to find %s in the database.\n", argv[2+obj]); + ret = BRLCAD_ERROR; + continue; + } - return BRLCAD_OK; + bu_avs_init_empty(&avs); + if (db5_get_attributes(gedp->ged_wdbp->dbip, &avs, dp)) { + bu_vls_printf(gedp->ged_result_str, "\tCannot get constraints for %s\n", dp->d_namep); + ret = BRLCAD_ERROR; + } + + for (i=0, avpp = avs.avp; i < avs.count; i++, avpp++) { + bu_vls_printf(gedp->ged_result_str, "\t%s = %s\n", avpp->name, avpp->value); + } + + bu_avs_free(&avs); + } + + return ret; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |