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
81 lines
2.0 KiB
C++
81 lines
2.0 KiB
C++
// Copyright (c) ONNX Project Contributors
|
|
//
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
// ATTENTION: The code in this file is highly EXPERIMENTAL.
|
|
// Adventurous users should note that the APIs will probably change.
|
|
|
|
#include "onnx/common/interned_strings.h"
|
|
|
|
#include <cstdint>
|
|
#include <mutex>
|
|
#include <string>
|
|
#include <unordered_map>
|
|
|
|
#include "onnx/common/assertions.h"
|
|
|
|
namespace ONNX_NAMESPACE {
|
|
namespace {
|
|
|
|
struct InternedStrings {
|
|
InternedStrings() {
|
|
#define REGISTER_SYMBOL(s) \
|
|
string_to_sym_[#s] = k##s; \
|
|
sym_to_string_[k##s] = #s;
|
|
FORALL_BUILTIN_SYMBOLS(REGISTER_SYMBOL)
|
|
#undef REGISTER_SYMBOL
|
|
}
|
|
uint32_t symbol(const std::string& s) {
|
|
std::lock_guard<std::mutex> guard(mutex_);
|
|
auto it = string_to_sym_.find(s);
|
|
if (it != string_to_sym_.end())
|
|
return it->second;
|
|
uint32_t k = next_sym++;
|
|
string_to_sym_[s] = k;
|
|
sym_to_string_[k] = s;
|
|
return k;
|
|
}
|
|
const char* string(Symbol sym) {
|
|
// Builtin Symbols are also in the maps, but
|
|
// we can bypass the need to acquire a lock
|
|
// to read the map for Builtins because we already
|
|
// know their string value
|
|
switch (sym) {
|
|
#define DEFINE_CASE(s) \
|
|
case k##s: \
|
|
return #s;
|
|
FORALL_BUILTIN_SYMBOLS(DEFINE_CASE)
|
|
#undef DEFINE_CASE
|
|
default:
|
|
return customString(sym);
|
|
}
|
|
}
|
|
|
|
private:
|
|
const char* customString(Symbol sym) {
|
|
std::lock_guard<std::mutex> guard(mutex_);
|
|
auto it = sym_to_string_.find(sym);
|
|
ONNX_ASSERT(it != sym_to_string_.end())
|
|
return it->second.c_str();
|
|
}
|
|
std::unordered_map<std::string, uint32_t> string_to_sym_;
|
|
std::unordered_map<uint32_t, std::string> sym_to_string_;
|
|
uint32_t next_sym{kLastSymbol};
|
|
std::mutex mutex_;
|
|
};
|
|
|
|
InternedStrings& globalStrings() {
|
|
static InternedStrings s;
|
|
return s;
|
|
}
|
|
|
|
} // namespace
|
|
|
|
const char* Symbol::toString() const {
|
|
return globalStrings().string(*this);
|
|
}
|
|
|
|
Symbol::Symbol(const std::string& s) : value(globalStrings().symbol(s)) {}
|
|
|
|
} // namespace ONNX_NAMESPACE
|