microsoft/onnxruntime-extensions

Public

mirrored fromhttps://github.com/microsoft/onnxruntime-extensionsAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
v0.4.2

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

operators/string_utils.h

70lines · modecode

1// Copyright (c) Microsoft Corporation. All rights reserved.
2// Licensed under the MIT License.
3#pragma once
4#include <iostream>
5#include <sstream>
6#include <vector>
7#include "ocos.h"
8
9template <typename T>
10inline void MakeStringInternal(std::ostringstream& ss, const T& t) noexcept {
11 ss << t;
12}
13
14template <>
15inline void MakeStringInternal(std::ostringstream& ss, const std::vector<int64_t>& t) noexcept {
16 ss << "[";
17 for (int i = 0; i < t.size(); i++) {
18 if (i != 0) {
19 ss << ", ";
20 }
21 ss << t[i];
22 }
23 ss << "]";
24}
25
26template <>
27inline void MakeStringInternal(std::ostringstream& ss, const OrtTensorDimensions& t) noexcept {
28 MakeStringInternal(ss, static_cast<const std::vector<int64_t>&>(t));
29}
30
31template <>
32inline void MakeStringInternal(std::ostringstream& ss, const std::vector<std::string>& t) noexcept {
33 ss << "[";
34 for (int i = 0; i < t.size(); i++) {
35 if (i != 0) {
36 ss << ", ";
37 }
38 ss << t[i];
39 }
40 ss << "]";
41}
42
43template <typename T, typename... Args>
44void MakeStringInternal(std::ostringstream& ss, const T& t, const Args&... args) noexcept {
45 MakeStringInternal(ss, t);
46 MakeStringInternal(ss, args...);
47}
48
49template <typename... Args>
50std::string MakeString(const Args&... args) {
51 std::ostringstream ss;
52 MakeStringInternal(ss, args...);
53 return std::string(ss.str());
54}
55
56std::vector<std::string_view> SplitString(const std::string_view& str, const std::string_view& seps, bool remove_empty_entries = false);
57
58bool IsCJK(char32_t c);
59
60bool IsAccent(char32_t c);
61
62char32_t StripAccent(char32_t c);
63
64uint64_t Hash64(const char* data, size_t n, uint64_t seed);
65
66inline uint64_t Hash64(const char* data, size_t n) {
67 return Hash64(data, n, 0xDECAFCAFFE);
68}
69
70uint64_t Hash64Fast(const char* data, size_t n);
71