5cbd3f29e3
Fuzz / Run fuzz harnesses (${{ github.event_name == 'schedule' && 'nightly' || 'smoke' }}) (push) Has been cancelled
Create Releases / call-mac (push) Has been cancelled
Create Releases / call-linux (push) Has been cancelled
Create Releases / call-sdist (push) Has been cancelled
Create Releases / call-win (push) Has been cancelled
Create Releases / call-pyodide (push) Has been cancelled
Windows_No_Exception_CI / build (x64, 3.10) (push) Has been cancelled
Check URLs / build (push) Has been cancelled
Create Releases / Attest CI build artifacts (push) Has been cancelled
Create Releases / Check for Publish release build to pypi (push) Has been cancelled
Create Releases / Check for Publish preview build to test.pypi-weekly (push) Has been cancelled
Create Releases / Publish preview build to test.pypi-weekly (push) Has been cancelled
Create Releases / Check for Publish release build to test.pypi (rc-candidates) (push) Has been cancelled
Create Releases / Publish release build to test.pypi (push) Has been cancelled
Create Releases / Check for Publish preview build to pypi-weekly (push) Has been cancelled
Create Releases / Publish preview build to pypi-weekly (push) Has been cancelled
Create Releases / Publish release build to pypi (push) Has been cancelled
Create Releases / test source distribution (push) Has been cancelled
clang-tidy / clang-tidy (push) Has been cancelled
Lint / Validate SBOM (push) Has been cancelled
Lint / Enforce style (push) Has been cancelled
CI / Test windows-2022, 3.14, External, debug=0, unity_build=0, onnx_ml=1, autogen=0 (push) Has been cancelled
CI / Test windows-latest, 3.10, Internal, debug=0, unity_build=0, onnx_ml=1, autogen=0 (push) Has been cancelled
CI / Test windows-latest, 3.14, Internal, debug=0, unity_build=0, onnx_ml=1, autogen=0 (push) Has been cancelled
CI / Test windows-latest, 3.14t, Internal, debug=0, unity_build=0, onnx_ml=1, autogen=0 (push) Has been cancelled
CI / Test ubuntu-24.04, 3.14, Internal, debug=1, unity_build=0, onnx_ml=1, autogen=0 (push) Has been cancelled
CI / Test ubuntu-24.04, 3.14, External, debug=0, unity_build=1, onnx_ml=1, autogen=1 (push) Has been cancelled
CI / Test ubuntu-24.04, 3.14, External, debug=0, unity_build=0, onnx_ml=0, autogen=0 (push) Has been cancelled
CI / Test macos-latest, 3.10, Internal, debug=0, unity_build=0, onnx_ml=1, autogen=0 (push) Has been cancelled
CI / Test macos-latest, 3.14, Internal, debug=0, unity_build=0, onnx_ml=1, autogen=0 (push) Has been cancelled
CI / Test macos-latest, 3.14t, Internal, debug=0, unity_build=0, onnx_ml=1, autogen=0 (push) Has been cancelled
CI / Test ubuntu-24.04, 3.14, External, debug=0, unity_build=0, onnx_ml=1, autogen=0 (push) Has been cancelled
CI / Test ubuntu-24.04, 3.10, Internal, debug=0, unity_build=0, onnx_ml=1, autogen=0 (push) Has been cancelled
CI / Test ubuntu-24.04, 3.14, Internal, debug=0, unity_build=0, onnx_ml=1, autogen=0 (push) Has been cancelled
CI / Test ubuntu-24.04, 3.14t, Internal, debug=0, unity_build=0, onnx_ml=1, autogen=0 (push) Has been cancelled
Pixi CI / Install and lint (ubuntu-24.04-arm) (push) Has been cancelled
Pixi CI / Install and lint (windows-2022) (push) Has been cancelled
Pixi CI / Xcode generator build (push) Has been cancelled
Pixi CI / Install and test (macos-latest, default) (push) Has been cancelled
Pixi CI / Install and test (ubuntu-24.04-arm, default) (push) Has been cancelled
Pixi CI / Install and test (ubuntu-latest, default) (push) Has been cancelled
Pixi CI / Install and test (windows-2022, default) (push) Has been cancelled
Pixi CI / Install and test (macos-latest, oldies) (push) Has been cancelled
Pixi CI / Install and test (ubuntu-24.04-arm, oldies) (push) Has been cancelled
Pixi CI / Install and test (ubuntu-latest, oldies) (push) Has been cancelled
Pixi CI / Install and test (windows-2022, oldies) (push) Has been cancelled
CodeQL / Analyze (actions) (push) Has been cancelled
CodeQL / Analyze (cpp) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Copilot Setup Steps / copilot-setup-steps (push) Has been cancelled
Generate and publish ONNX docs / build (push) Has been cancelled
Generate and publish ONNX docs / deploy (push) Has been cancelled
Scorecard supply-chain security / Scorecard analysis (push) Has been cancelled
89 lines
2.7 KiB
C++
89 lines
2.7 KiB
C++
// Copyright (c) ONNX Project Contributors
|
|
//
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
#pragma once
|
|
|
|
#include <filesystem>
|
|
#include <string>
|
|
|
|
#ifdef _WIN32
|
|
// windows.h has preproc definitions for min and max, which prevents from using std::min and std::max.
|
|
// defining NOMINMAX disables the preproc macro.
|
|
#ifndef NOMINMAX
|
|
#define NOMINMAX
|
|
#endif
|
|
#include <windows.h>
|
|
|
|
#include "onnx/checker.h"
|
|
#endif
|
|
|
|
namespace ONNX_NAMESPACE {
|
|
|
|
#ifdef _WIN32
|
|
inline std::wstring utf8str_to_wstring(const std::string& utf8str) {
|
|
if (utf8str.empty()) {
|
|
return std::wstring();
|
|
}
|
|
int len = static_cast<int>(utf8str.size());
|
|
auto size_required =
|
|
MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS | MB_PRECOMPOSED, utf8str.data(), len, nullptr, 0);
|
|
if (size_required == 0) {
|
|
auto last_error = GetLastError();
|
|
fail_check("MultiByteToWideChar in utf8str_to_wstring returned error:", last_error);
|
|
}
|
|
std::wstring ws_str(size_required, 0);
|
|
auto converted_size = MultiByteToWideChar(
|
|
CP_UTF8, MB_ERR_INVALID_CHARS | MB_PRECOMPOSED, utf8str.data(), len, &ws_str[0], size_required);
|
|
if (converted_size == 0) {
|
|
auto last_error = GetLastError();
|
|
fail_check("MultiByteToWideChar in utf8str_to_wstring returned error:", last_error);
|
|
}
|
|
return ws_str;
|
|
}
|
|
|
|
inline std::string wstring_to_utf8str(const std::wstring& ws_str) {
|
|
if (ws_str.empty()) {
|
|
return std::string();
|
|
}
|
|
int len = static_cast<int>(ws_str.size());
|
|
auto size_required =
|
|
WideCharToMultiByte(CP_UTF8, WC_ERR_INVALID_CHARS, ws_str.data(), len, nullptr, 0, nullptr, nullptr);
|
|
if (size_required == 0) {
|
|
auto last_error = GetLastError();
|
|
fail_check("WideCharToMultiByte in wstring_to_utf8str returned error:", last_error);
|
|
}
|
|
std::string utf8str(size_required, 0);
|
|
auto converted_size = WideCharToMultiByte(
|
|
CP_UTF8, WC_ERR_INVALID_CHARS, ws_str.data(), len, &utf8str[0], size_required, nullptr, nullptr);
|
|
if (converted_size == 0) {
|
|
auto last_error = GetLastError();
|
|
fail_check("WideCharToMultiByte in wstring_to_utf8str returned error:", last_error);
|
|
}
|
|
return utf8str;
|
|
}
|
|
|
|
#endif
|
|
|
|
// Construct a std::filesystem::path from a UTF-8 string.
|
|
// On Windows, converts via wide-char so the result is independent of the
|
|
// active code page. On POSIX, UTF-8 is the native encoding.
|
|
inline std::filesystem::path utf8_to_path(const std::string& utf8) {
|
|
#ifdef _WIN32
|
|
return std::filesystem::path(utf8str_to_wstring(utf8));
|
|
#else
|
|
return std::filesystem::path(utf8);
|
|
#endif
|
|
}
|
|
|
|
// Return the UTF-8 representation of a filesystem path.
|
|
inline std::string path_to_utf8(const std::filesystem::path& p) {
|
|
#ifdef _WIN32
|
|
return wstring_to_utf8str(p.wstring());
|
|
#else
|
|
return p.string();
|
|
#endif
|
|
}
|
|
|
|
} // namespace ONNX_NAMESPACE
|