const RegionDefine* RegionMapperImpl::getRegionDefine(const Region* region) const { if (region == nullptr) { return nullptr; } const RegionDefine* rd = nullptr; if (region->getID() < regionDefinesVector.size()) { rd = regionDefinesVector.at(region->getID()); } if (rd != nullptr) { return rd; } if (regionDefinesVector.size() < region->getID() + 1) { regionDefinesVector.resize(region->getID() * 2); } auto rd_new = regionDefines.find(region->getName()); if (rd_new != regionDefines.end()) { regionDefinesVector.at(region->getID()) = rd_new->second; return rd_new->second; } if (region->getParent()) { rd = getRegionDefine(region->getParent()); regionDefinesVector.at(region->getID()) = rd; } return rd; }
const RegionDefine *RegionMapperImpl::getRegionDefine(const Region *region) const{ if (region == null) return null; const RegionDefine *rd = null; if (region->getID() < regionDefinesVector.size()) rd = regionDefinesVector.elementAt(region->getID()); if (rd != null) return rd; if (regionDefinesVector.size() < region->getID()+1) regionDefinesVector.setSize(region->getID()*2); RegionDefine *rd_new = regionDefines.get(region->getName()); if (rd_new != null){ regionDefinesVector.setElementAt(rd_new, region->getID()); return rd_new; }; if (region->getParent()){ rd = getRegionDefine(region->getParent()); regionDefinesVector.setElementAt(rd, region->getID()); }; return rd; };