//----------------------------------------------------------------------------------------- void OgitorsRoot::RegExpByProperty(const Ogre::String& nameregexp, bool inverse, const ObjectVector& list_in, ObjectVector& list_out) { list_out.clear(); try { const boost::regex e(nameregexp.c_str()); OgitorsPropertyVector pvec; for(unsigned int i = 0;i < list_in.size();i++) { pvec = list_in[i]->getProperties()->getPropertyVector(); bool add_list = false; for(unsigned int k = 0;k < pvec.size();k++) { if(regex_match(pvec[k]->getName().c_str(), e)) { add_list = true; break; } } if(add_list != inverse) list_out.push_back(list_in[i]); } } catch(...) { list_out.clear(); } }
//----------------------------------------------------------------------------------------- void OgitorsRoot::GetObjectListByName(unsigned int type, const Ogre::String& nameregexp, bool inverse, ObjectVector& list) { list.clear(); try { const boost::regex e(nameregexp.c_str()); NameObjectPairList::iterator list_st, list_ed; if(type == 0) { list_st = mNameList.begin(); list_ed = mNameList.end(); } else { list_st = mNamesByType[type].begin(); list_ed = mNamesByType[type].end(); } while(list_st != list_ed) { if(regex_match(list_st->first.c_str(), e) != inverse) { list.push_back(list_st->second); } list_st++; } } catch(...) { list.clear(); } }
//----------------------------------------------------------------------------------------- void OgitorsRoot::GetObjectListByCustomProperty(unsigned int type, const Ogre::String& nameregexp, bool inverse, ObjectVector& list) { list.clear(); try { const boost::regex e(nameregexp.c_str()); NameObjectPairList::iterator list_st, list_ed; if(type == 0) { list_st = mNameList.begin(); list_ed = mNameList.end(); } else { list_st = mNamesByType[type].begin(); list_ed = mNamesByType[type].end(); } OgitorsPropertyVector pvec; while(list_st != list_ed) { pvec = list_st->second->getCustomProperties()->getPropertyVector(); bool add_list = false; for(unsigned int k = 0;k < pvec.size();k++) { if(regex_match(pvec[k]->getName().c_str(), e)) { add_list = true; break; } } if(add_list != inverse) list.push_back(list_st->second); list_st++; } } catch(...) { list.clear(); } }
//-------------------------------------------------------------------------------- void CMultiSelEditor::getSelection(ObjectVector& list) { list.clear(); NameObjectPairList::const_iterator it = mSelectedObjects.begin(); while(it != mSelectedObjects.end()) { list.push_back(it->second); it++; } }
//----------------------------------------------------------------------------------------- void OgitorsRoot::RegExpByName(const Ogre::String& nameregexp, bool inverse, const ObjectVector& list_in, ObjectVector& list_out) { list_out.clear(); try { const boost::regex e(nameregexp.c_str()); for(unsigned int i = 0;i < list_in.size();i++) { if(regex_match(list_in[i]->getName().c_str(), e) != inverse) { list_out.push_back(list_in[i]); } } } catch(...) { list_out.clear(); } }