aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2009-07-21 09:18:49 +0000
committerDaniel Dunbar <daniel@zuster.org>2009-07-21 09:18:49 +0000
commite90855a8fedee0dc3721ee598876223a53bbf852 (patch)
treee73b3c03ca8c4dc6587bdb4a8d5f3f8186df5ca1 /include
parentf7e1206ae4478137e5926bde150106f3bdbc2a1f (diff)
downloadexternal_llvm-e90855a8fedee0dc3721ee598876223a53bbf852.zip
external_llvm-e90855a8fedee0dc3721ee598876223a53bbf852.tar.gz
external_llvm-e90855a8fedee0dc3721ee598876223a53bbf852.tar.bz2
Add StringRef::{substr, startswith}.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76559 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r--include/llvm/ADT/StringRef.h28
1 files changed, 27 insertions, 1 deletions
diff --git a/include/llvm/ADT/StringRef.h b/include/llvm/ADT/StringRef.h
index 988701b..11903be 100644
--- a/include/llvm/ADT/StringRef.h
+++ b/include/llvm/ADT/StringRef.h
@@ -14,6 +14,7 @@
#include <string>
namespace llvm {
+
/// StringRef - Represent a constant reference to a string, i.e. a character
/// array and a length, which need not be null terminated.
///
@@ -24,13 +25,14 @@ namespace llvm {
class StringRef {
public:
typedef const char *iterator;
+ static const size_t npos = std::string::npos;
private:
/// The start of the string, in an external buffer.
const char *Data;
/// The length of the string.
- unsigned Length;
+ size_t Length;
public:
/// @name Constructors
@@ -121,7 +123,31 @@ namespace llvm {
}
/// @}
+ /// @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