MistString Path::GetHome() { #if defined(MIST_OS_WINDOWS) MistString result = Path::GetEnv(L"HOMEDRIVE"); result.append(Path::GetEnv(L"HOMEPATH")); size_t n = result.size(); if(n > 0 && result[n-1] != L'\\') result.append(L"\\"); return result; #elif defined(MIST_OS_FAMILY_UNIX) std::string path; struct passwd* pwd = getpwuid(getuid()); if(pwd) path = pwd->pw_dir; else { pwd = getpwuid(getuid()); if(pwd) path = pwd->pw_dir; else return Path::GetEnv(L"HOME") + L"/"; } size_t n = path.size(); if(n > 0 && path[n-1] != '/') path.append("/"); return string::StringToWStringFast(path); #endif }
float4 Convert::ToFloat4(const MistString& str) { MistString buffer; size_t pos = 0; float4 result; while(str[pos] == L' ') pos ++; for(int i=0; i<4; ++i) { while(str[pos] != ' ' && pos < str.size()) { buffer.push_back(str[pos]); pos ++; } result.value[i] = (float)Convert::ToDouble(buffer); buffer.clear(); while(str[pos] == L' ' && pos < str.size()) pos ++; } return result; }