From 76af158707679cc7764fa8b91f1924a0f3976114 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Fri, 13 Nov 2009 01:24:40 +0000 Subject: Add a new split method to StringRef that puts the substrings in a vector. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87058 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/ADT/StringRef.h | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'include/llvm/ADT/StringRef.h') diff --git a/include/llvm/ADT/StringRef.h b/include/llvm/ADT/StringRef.h index b07dcc1..6ccb37d 100644 --- a/include/llvm/ADT/StringRef.h +++ b/include/llvm/ADT/StringRef.h @@ -15,6 +15,14 @@ #include #include +namespace std { + template + class allocator; + + template + class vector; +} + namespace llvm { /// StringRef - Represent a constant reference to a string, i.e. a character @@ -314,6 +322,25 @@ namespace llvm { return std::make_pair(slice(0, Idx), slice(Idx + Separator.size(), npos)); } + /// split - Split into substrings around the occurences of a separator + /// string. + /// + /// Each substring is stored in \arg A. If \arg MaxSplit is >= 0, at most + /// \arg MaxSplit splits are done and consequently <= \arg MaxSplit + /// elements are added to A. + /// If \arg KeepEmpty is false, empty strings are not added to \arg A. They + /// still count when considering \arg MaxSplit + /// An useful invariant is that + /// Separator.join(A) == *this if MaxSplit == -1 and KeepEmpty == true + /// + /// \param A - Where to put the substrings. + /// \param Separator - The string to split on. + /// \param MaxSplit - The maximum number of times the string is split. + /// \parm KeepEmpty - True if empty substring should be added. + void split(std::vector > &A, + StringRef Separator, unsigned MaxSplit = -1, + bool KeepEmpty = true) const; + /// rsplit - Split into two substrings around the last occurence of a /// separator character. /// -- cgit v1.1