void OgrWriter::writeElement(ElementPtr &element, bool debug) { //Unfortunately, this check also has to happen in addition to checking hasMoreElements. See //explanation in ServicesDbReader::readNextElement. if (element.get()) { Tags sourceTags = element->getTags(); Tags destTags; for (Tags::const_iterator it = element->getTags().begin(); it != element->getTags().end(); ++it) { if (sourceTags[it.key()] != "") { destTags.appendValue(it.key(), it.value()); } } // Now that all the empties are gone, update our element element->setTags(destTags); if ( debug == true ) { LOG_DEBUG(element->toString()); } PartialOsmMapWriter::writePartial(element); } }
bool XULParser::createElement(const std::string & inLocalName, Element * inParent, const AttributesMapping & inAttributes, ElementPtr & outElement) { outElement = ElementFactory::Instance().createElement(inLocalName, inParent, inAttributes); return outElement.get() != 0; }
void Gamefield::addElement(ElementPtr const& elem) { { lock_guard<mutex> _lock(mMutexElements); mQuadTree->add(elem.get()); mElements.push_back(elem); } { lock_guard<mutex> _lock(mMutexNewElements); mNewElements.push_back(elem); } }
void XULParser::pushStack(ElementPtr inElement) { if (inElement) { if (mStack.empty()) { assert(!mRootElement); mRootElement = inElement; } mStack.push(inElement.get()); } }
void Gamefield::_destroyElement(ElementPtr const& elem) { //Remove Element from QuadTree if(elem->getRegion()) { if (!elem->getRegion()->remove(elem.get())) { fprintf(stderr, "Elem is not inside its own Region %d %p\n", elem->getId(), elem.get()); if (!mQuadTree->remove(elem.get())) fprintf(stderr, "Remove from QuadTree failed for %d %p\n", elem->getId(), elem.get()); } } else if(!mQuadTree->remove(elem.get())) fprintf(stderr, "Remove2 from QuadTree failed for %d %p\n", elem->getId(), elem.get()); elem->setRegion(NULL); lock_guard<mutex> _lock(mMutexElements); //Find element auto it = mElements.begin(); while (it != mElements.end()) { if ((*it)->getId() == elem->getId()) break; it++; } if (it != mElements.end()) { //Swap with last element then pop last (no realocation needed) (*it) = mElements.back(); mElements.pop_back(); } }
XTOOLS_NAMESPACE_BEGIN LongElementPtr LongElement::Cast(const ElementPtr& element) { if (element != NULL && element->GetElementType() == ElementType::Int64Type) { return static_cast<LongElement*>(element.get()); } else { return NULL; } }
void Gamefield::destroyElement(ElementPtr const& elem) { if(elem->isDeleted()) { fprintf(stderr, "Dubble destory of element!!!!!! %d %p\n", elem->getId(), elem.get()); assert(false); return; } //printf("Maring as Deleted %d %p\n", elem->getId(), elem.get()); elem->markDeleted(); { lock_guard<mutex> _lock(mMutexDeletedElements); mDeletedElements.push_back(elem); } if (elem->getType() == ET_Ball) { auto ball = std::dynamic_pointer_cast<Ball>(elem); ball->getPlayer()->removeBall(ball->getId()); } if (elem->getType() == ET_Food) mFoodCounter--; else if (elem->getType() == ET_Obstracle) mObstracleCounter--; else if (elem->getType() == ET_Item) mItemCounter--; }