diff options
author | Ilia Kuklin <ikuklin@accesssoftek.com> | 2025-08-07 22:48:17 +0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-08-07 22:48:17 +0500 |
commit | 2ff44d7d658beca1724f04211e194bf4beb2a1a0 (patch) | |
tree | b2a805f7c681f5f48ebfe79c2008d5cd711d85b0 | |
parent | 06f06deb774ada5aa37db89fa7b4a88b13163e0d (diff) | |
download | llvm-2ff44d7d658beca1724f04211e194bf4beb2a1a0.zip llvm-2ff44d7d658beca1724f04211e194bf4beb2a1a0.tar.gz llvm-2ff44d7d658beca1724f04211e194bf4beb2a1a0.tar.bz2 |
[ADT] Make `getAutoSenseRadix` in `StringRef` global (#152503)
Needed in #152308
-rw-r--r-- | llvm/include/llvm/ADT/StringRef.h | 2 | ||||
-rw-r--r-- | llvm/lib/Support/StringRef.cpp | 6 | ||||
-rw-r--r-- | llvm/unittests/ADT/StringRefTest.cpp | 13 |
3 files changed, 18 insertions, 3 deletions
diff --git a/llvm/include/llvm/ADT/StringRef.h b/llvm/include/llvm/ADT/StringRef.h index 0ced1c0..16aca4d 100644 --- a/llvm/include/llvm/ADT/StringRef.h +++ b/llvm/include/llvm/ADT/StringRef.h @@ -38,6 +38,8 @@ namespace llvm { LLVM_ABI bool getAsSignedInteger(StringRef Str, unsigned Radix, long long &Result); + LLVM_ABI unsigned getAutoSenseRadix(StringRef &Str); + LLVM_ABI bool consumeUnsignedInteger(StringRef &Str, unsigned Radix, unsigned long long &Result); LLVM_ABI bool consumeSignedInteger(StringRef &Str, unsigned Radix, diff --git a/llvm/lib/Support/StringRef.cpp b/llvm/lib/Support/StringRef.cpp index dc75878..b6a2f8a 100644 --- a/llvm/lib/Support/StringRef.cpp +++ b/llvm/lib/Support/StringRef.cpp @@ -385,7 +385,7 @@ size_t StringRef::count(StringRef Str) const { return Count; } -static unsigned GetAutoSenseRadix(StringRef &Str) { +unsigned llvm::getAutoSenseRadix(StringRef &Str) { if (Str.empty()) return 10; @@ -410,7 +410,7 @@ bool llvm::consumeUnsignedInteger(StringRef &Str, unsigned Radix, unsigned long long &Result) { // Autosense radix if not specified. if (Radix == 0) - Radix = GetAutoSenseRadix(Str); + Radix = getAutoSenseRadix(Str); // Empty strings (after the radix autosense) are invalid. if (Str.empty()) return true; @@ -509,7 +509,7 @@ bool StringRef::consumeInteger(unsigned Radix, APInt &Result) { // Autosense radix if not specified. if (Radix == 0) - Radix = GetAutoSenseRadix(Str); + Radix = getAutoSenseRadix(Str); assert(Radix > 1 && Radix <= 36); diff --git a/llvm/unittests/ADT/StringRefTest.cpp b/llvm/unittests/ADT/StringRefTest.cpp index ec9cdc1..d5f8dc4 100644 --- a/llvm/unittests/ADT/StringRefTest.cpp +++ b/llvm/unittests/ADT/StringRefTest.cpp @@ -619,6 +619,19 @@ TEST(StringRefTest, Hashing) { hash_value(StringRef("hello world").slice(1, -1))); } +TEST(StringRefTest, getAutoSenseRadix) { + struct RadixPair { + const char *Str; + unsigned Expected; + } RadixNumbers[] = {{"123", 10}, {"1", 10}, {"0b1", 2}, {"01", 8}, {"0o1", 8}, + {"0x1", 16}, {"0", 10}, {"00", 8}, {"", 10}}; + for (size_t i = 0; i < std::size(RadixNumbers); ++i) { + StringRef number = RadixNumbers[i].Str; + unsigned radix = getAutoSenseRadix(number); + EXPECT_EQ(radix, RadixNumbers[i].Expected); + } +} + struct UnsignedPair { const char *Str; uint64_t Expected; |