mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 03:02:36 +01:00
Add StringRef::{substr, startswith}.
llvm-svn: 76559
This commit is contained in:
parent
c142755cec
commit
30c92a0aee
@ -14,6 +14,7 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
namespace llvm {
|
namespace llvm {
|
||||||
|
|
||||||
/// StringRef - Represent a constant reference to a string, i.e. a character
|
/// StringRef - Represent a constant reference to a string, i.e. a character
|
||||||
/// array and a length, which need not be null terminated.
|
/// array and a length, which need not be null terminated.
|
||||||
///
|
///
|
||||||
@ -24,13 +25,14 @@ namespace llvm {
|
|||||||
class StringRef {
|
class StringRef {
|
||||||
public:
|
public:
|
||||||
typedef const char *iterator;
|
typedef const char *iterator;
|
||||||
|
static const size_t npos = std::string::npos;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/// The start of the string, in an external buffer.
|
/// The start of the string, in an external buffer.
|
||||||
const char *Data;
|
const char *Data;
|
||||||
|
|
||||||
/// The length of the string.
|
/// The length of the string.
|
||||||
unsigned Length;
|
size_t Length;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/// @name Constructors
|
/// @name Constructors
|
||||||
@ -120,8 +122,32 @@ namespace llvm {
|
|||||||
return str();
|
return str();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// @}
|
||||||
|
/// @name Utility Functions
|
||||||
|
/// @{
|
||||||
|
|
||||||
|
/// substr - Return a reference to a substring of this object.
|
||||||
|
///
|
||||||
|
/// \param Start - The index of the starting character in the substring; if
|
||||||
|
/// the index is greater than the length of the string then the empty
|
||||||
|
/// substring will be returned.
|
||||||
|
///
|
||||||
|
/// \param N - The number of characters to included in the substring. If N
|
||||||
|
/// exceeds the number of characters remaining in the string, the string
|
||||||
|
/// suffix (starting with \arg Start) will be returned.
|
||||||
|
StringRef substr(size_t Start, size_t N = npos) const {
|
||||||
|
Start = std::min(Start, Length);
|
||||||
|
return StringRef(Data + Start, std::min(N, Length - Start));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// startswith - Check if this string starts with the given \arg Prefix.
|
||||||
|
bool startswith(const StringRef &Prefix) const {
|
||||||
|
return substr(0, Prefix.Length) == Prefix;
|
||||||
|
}
|
||||||
|
|
||||||
/// @}
|
/// @}
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -56,4 +56,16 @@ TEST(StringRefTest, Operators) {
|
|||||||
EXPECT_EQ('a', StringRef("aab")[1]);
|
EXPECT_EQ('a', StringRef("aab")[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(StringRefTest, Utilities) {
|
||||||
|
StringRef Str("hello");
|
||||||
|
EXPECT_TRUE(Str.substr(3) == "lo");
|
||||||
|
EXPECT_TRUE(Str.substr(100) == "");
|
||||||
|
EXPECT_TRUE(Str.substr(0, 100) == "hello");
|
||||||
|
EXPECT_TRUE(Str.substr(4, 10) == "o");
|
||||||
|
|
||||||
|
EXPECT_TRUE(Str.startswith("he"));
|
||||||
|
EXPECT_FALSE(Str.startswith("helloworld"));
|
||||||
|
EXPECT_FALSE(Str.startswith("hi"));
|
||||||
|
}
|
||||||
|
|
||||||
} // end anonymous namespace
|
} // end anonymous namespace
|
||||||
|
Loading…
Reference in New Issue
Block a user