예제 #1
0
    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           
    }
예제 #2
0
    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;
    }