// jvmuserargs can have a trailing equals in the key. This needs to be removed to use // other parts of the launcher. TOrderedMap RemoveTrailingEquals(TOrderedMap Map) { TOrderedMap result; for (TOrderedMap::const_iterator iterator = Map.begin(); iterator != Map.end(); iterator++) { TString name = iterator->first; TValueIndex value = iterator->second; // If the last character of the key is an equals, then remove it. If there is no // equals then combine the two as a key. TString::iterator i = name.end(); i--; if (*i == '=') { name = name.substr(0, name.size() - 1); } else { i = value.value.begin(); if (*i == '=') { value.value = value.value.substr(1, value.value.size() - 1); } else { name = name + value.value; value.value = _T(""); } } result.insert(TOrderedMap::value_type(name, value)); } return result; }
//Return the complete callstack in a continuous string TString Stackage::GetString() { vector<TCHAR*>::iterator it; TString stack; TString separator = TEXT(" -> "); //Build Stack String for(it=vStack.begin(); it!=vStack.end(); ++it) { stack.append(*it); stack.append(separator); } //Remove last separator if(stack.length() >= separator.length()) stack.erase(stack.end() - separator.length(), stack.end()); return stack; }
// extract strings out of attribute arguments stored in attribute aggregate. // convert to lower case if converToLower is true (for case-insensitive compare convenience) bool TAttributeMap::getString(TAttributeType attr, TString& value, int argNum, bool convertToLower) const { const TConstUnion* stringConst = getConstUnion(attr, EbtString, argNum); if (stringConst == nullptr) return false; value = *stringConst->getSConst(); // Convenience. if (convertToLower) std::transform(value.begin(), value.end(), value.begin(), ::tolower); return true; };
TString Trim(const TString& strInp, TString symbols) { size_t startpos = 0; size_t endpos = strInp.size(); bool meatFound = false; for (auto iter = strInp.begin(); iter != strInp.end(); ++iter) { if (symbols.find_first_of(*iter) != TString::npos) { if (!meatFound) { startpos++; } else { endpos--; } } else { meatFound = true; endpos = strInp.size(); } } return strInp.substr(startpos, endpos); }