Well, without the benefit of SimGear as a whole, I've crafted a [probably non-optimal] property tree cataloging function for use in JSBSim. Thought you might like to see it:
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% struct PropertyCatalogStructure { string base_string; FGPropertyManager *node; }; void FGFDMExec::BuildPropertyCatalog(struct PropertyCatalogStructure* pcs) { struct PropertyCatalogStructure* pcsNew = new struct PropertyCatalogStructure; int node_idx = 0; char int_buf[10]; for (int i=0; i<pcs->node->nChildren(); i++) { pcsNew->base_string = pcs->base_string + "/" + pcs->node->getChild(i)->getName(); node_idx = pcs->node->getChild(i)->getIndex(); sprintf(int_buf, "[%d]", node_idx); if (node_idx != 0) pcsNew->base_string += string(int_buf); if (pcs->node->getChild(i)->nChildren() == 0) { PropertyCatalog.push_back(pcsNew->base_string + pcs->node->getChild(i)->getName()); } else { pcsNew->node = (FGPropertyManager*)pcs->node->getChild(i); BuildPropertyCatalog(pcsNew); } } delete pcsNew; } //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% It's called like this: //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% struct PropertyCatalogStructure masterPCS; masterPCS.base_string = ""; masterPCS.node = (FGPropertyManager*)master; BuildPropertyCatalog(&masterPCS); cout << endl << "Registered properties: " << endl; for (int i=0; i<PropertyCatalog.size(); i++) cout << PropertyCatalog[i] << endl; //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% _______________________________________________ Flightgear-devel mailing list Flightgear-devel@flightgear.org http://mail.flightgear.org/mailman/listinfo/flightgear-devel 2f585eeea02e2c79d7b1d8c4963bae2d