template<typename T> void xmlAdapter(const char *str, Optional<T> &t) { T tmp; xmlAdapter(str, tmp); t.set(tmp); }
int main() { XMLAdapter xmlAdapter("../map_xml"); xmlAdapter.adaptXML("BeiJingYiDiGang","FloorF1"); xmlAdapter.createQuestList(); printf("preProcess Completed\n"); while(true){ Point p; printf("Point:\n"); scanf("%f %f",&p.x,&p.y); pair<int,int> index = xmlAdapter.askIndex(p); int* result; result = xmlAdapter.askResult(index); if (result == NULL) { printf("out of index\n"); // return 0; continue; } for (int i = 0;i<3;i++) printf("%s %f%s\n",xmlAdapter.polyList[result[i]].id.c_str() ,xmlAdapter.polyList[result[i]].getDis(p),xmlAdapter.polyList[result[i]].inside(p)?"(inside)":"(outside)"); } return 0; }
void _readRecordTypeDefinition(xercesc::DOMElement *element, RecordTypeDefinition &def) { _readDefinition(element, def); /* read Members */ xercesc::DOMElement *membersElem = DOMHelper::getElementByTagNameNS( element, DOMHelper::fromUTF8(XML_NS), DOMHelper::fromUTF8("Members") ); if (!membersElem) { throw XMLImporter::Exception("Elements property missing"); } xercesc::DOMElement *memberElem = membersElem->getFirstElementChild(); while (memberElem) { if (xercesc::XMLString::compareIString(DOMHelper::fromUTF8("Name"), memberElem->getLocalName()) == 0) { def.members.resize(def.members.size() + 1); xmlAdapter(DOMHelper::toUTF8(memberElem->getTextContent()), def.members.back().name); } else if (xercesc::XMLString::compareIString(DOMHelper::fromUTF8("Type"), memberElem->getLocalName()) == 0) { xmlAdapter(DOMHelper::toUTF8(memberElem->getTextContent()), def.members.back().type); } memberElem = memberElem->getNextElementSibling(); } }