Skip to content
Snippets Groups Projects
Select Git revision
  • 06b20b62d0bb90fa910fe91f7522e972dc6ba948
  • master default protected
  • release/202005
  • release/202001
  • release/201912
  • release/201911
  • release/releaseWindowsTestOne
  • release/windowsReleaseTest
  • release/releaseTest
  • release/releaseWindowsTest
  • release/201910
  • release/qt/201910
  • release/windows-test/201910
  • release/201908
  • release/201906
  • release/201905
  • release/201904
  • release/201903
  • release/201902
  • release/201901
  • release/201812
  • 4.0.0
  • 2.2.0
  • 2.1.0
  • 2.0.1
  • 2.0.0
  • 1.4.1
  • 1.4.0
  • 1.3.0
  • 1.2.0
  • 1.1.0
31 results

sipvoiplink.cpp

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    Utils.h 3.76 KiB
    /**************************************************************************
    * Copyright (C) 2016 by Savoir-faire Linux                                *
    * Author: Jäger Nicolas <nicolas.jager@savoirfairelinux.com>              *
    * Author: Traczyk Andreas <traczyk.andreas@savoirfairelinux.com>          *
    *                                                                         *
    * This program is free software; you can redistribute it and/or modify    *
    * it under the terms of the GNU General Public License as published by    *
    * the Free Software Foundation; either version 3 of the License, or       *
    * (at your option) any later version.                                     *
    *                                                                         *
    * This program is distributed in the hope that it will be useful,         *
    * but WITHOUT ANY WARRANTY; without even the implied warranty of          *
    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the           *
    * GNU General Public License for more details.                            *
    *                                                                         *
    * You should have received a copy of the GNU General Public License       *
    * along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
    **************************************************************************/
    #pragma once
    #include <pch.h>
    
    using namespace Platform;
    using namespace Windows::Storage;
    
    namespace RingClientUWP
    {
    namespace Utils
    {
    
    task<bool>
    fileExists(StorageFolder^ folder, String^ fileName)
    {
        return create_task(folder->GetFileAsync(fileName))
               .then([](task<StorageFile^> taskResult)
        {
            bool exists;
            try {
                taskResult.get();
                exists = true;
            }
            catch (COMException ^e) {
                if (e->HResult == HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND)) {
                    exists = false;
                }
                else {
                    throw;
                }
            }
            return exists;
        });
    }
    
    std::string makeString(const std::wstring& wstr)
    {
        auto wideData = wstr.c_str();
        int bufferSize = WideCharToMultiByte(CP_UTF8, 0, wideData, -1, nullptr, 0, NULL, NULL);
    
        std::unique_ptr<char[]> utf8;
        utf8.reset(new char[bufferSize]);
    
        if (WideCharToMultiByte(CP_UTF8, 0, wideData, -1, utf8.get(), bufferSize, NULL, NULL) == 0) {
            return std::string();
        }
    
        return std::string(utf8.get());
    }
    
    std::wstring makeWString(const std::string& str)
    {
        auto utf8Data = str.c_str();
        int bufferSize = MultiByteToWideChar(CP_UTF8, 0, utf8Data, -1, nullptr, 0);
    
        std::unique_ptr<wchar_t[]> wide;
        wide.reset(new wchar_t[bufferSize]);
    
        if (MultiByteToWideChar(CP_UTF8, 0, utf8Data, -1, wide.get(), bufferSize) == 0) {
            return std::wstring();
        }
    
        return std::wstring(wide.get());;
    }
    
    std::string toString(Platform::String ^str)
    {
        std::wstring wsstr(str->Data());
        return makeString(wsstr);
    }
    
    Platform::String^ toPlatformString(const std::string& str)
    {
        std::wstring wsstr = makeWString(str);
        return ref new Platform::String(wsstr.c_str(), wsstr.length());
    }
    
    Platform::String^ Trim(Platform::String^ s)
    {
        const WCHAR* first = s->Begin();
        const WCHAR* last = s->End();
    
        while (first != last && iswspace(*first))
            ++first;
    
        while (first != last && iswspace(last[-1]))
            --last;
    
        return ref new Platform::String(first, static_cast<unsigned int>(last - first));
    }
    
    Platform::String^ GetNewGUID()
    {
        GUID result;
        HRESULT hr = CoCreateGuid(&result);
    
        if (SUCCEEDED(hr)) {
            Guid guid(result);
            return guid.ToString();
        }
    
        throw Exception::CreateException(hr);
    }
    
    }
    }