QMap<QString, int> getExp(const char name[]) { QMap<QString, QMap<QString, int> > expMap = readExpMap(); QMap<QString, int> expValueMap; QMap<QString, QMap<QString, int> >::iterator find = expMap.find(name); if(find != expMap.end()) { expValueMap = find.value(); } else { QMapIterator<QString, QMap<QString, int> > nearestValue(expMap); while (nearestValue.hasNext()) { nearestValue.next(); size_t nameSize = strlen(name); const char* c = nearestValue.key().toLocal8Bit().data(); for(unsigned int j = 0; j < nameSize; j++) { if(c[j] == 0 || c[j] != name[j]) { break; } else { if(j == nameSize - 1) { expValueMap = nearestValue.value(); } } } } } return expValueMap; }
QMap<QString, int> GameDataContainer::getExp(QString name) { lock.lockForRead(); QMap<QString, QMap<QString, int> > exp = this->expMap; lock.unlock(); QMap<QString, int> expValueMap; QMap<QString, QMap<QString, int> >::iterator find = exp.find(name); if(find != exp.end()) { expValueMap = find.value(); } else { QMapIterator<QString, QMap<QString, int> > nearestValue(exp); while (nearestValue.hasNext()) { nearestValue.next(); size_t nameSize = strlen(name.toLocal8Bit().data()); const char* c = nearestValue.key().toLocal8Bit().data(); for(unsigned int j = 0; j < nameSize; j++) { if(c[j] == 0 || c[j] != name[j]) { break; } else { if(j == nameSize - 1) { expValueMap = nearestValue.value(); } } } } } return expValueMap; }