diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2009-11-13 02:18:25 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2009-11-13 02:18:25 +0000 |
commit | c78c0c99a0fe1703ae72fc51e440aaa8e4e19e91 (patch) | |
tree | 0a822d49c72aa91f86d0961e50807a81e156bd0e | |
parent | 1e608819aa26c06b1552521469f2211339e3bfe0 (diff) |
Switch to smallvector. Also fix issue with using unsigend for MaxSplit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87068 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/ADT/StringRef.h | 14 | ||||
-rw-r--r-- | lib/Support/StringExtras.cpp | 7 | ||||
-rw-r--r-- | unittests/ADT/StringRefTest.cpp | 5 |
3 files changed, 11 insertions, 15 deletions
diff --git a/include/llvm/ADT/StringRef.h b/include/llvm/ADT/StringRef.h index 6ccb37d346..6b17eb22de 100644 --- a/include/llvm/ADT/StringRef.h +++ b/include/llvm/ADT/StringRef.h @@ -15,15 +15,9 @@ #include <cstring> #include <string> -namespace std { - template<typename _Tp> - class allocator; - - template<typename _Tp, typename _Alloc> - class vector; -} - namespace llvm { + template<typename T> + class SmallVectorImpl; /// StringRef - Represent a constant reference to a string, i.e. a character /// array and a length, which need not be null terminated. @@ -337,8 +331,8 @@ namespace llvm { /// \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<StringRef, std::allocator<StringRef> > &A, - StringRef Separator, unsigned MaxSplit = -1, + void split(SmallVectorImpl<StringRef> &A, + StringRef Separator, int MaxSplit = -1, bool KeepEmpty = true) const; /// rsplit - Split into two substrings around the last occurence of a diff --git a/lib/Support/StringExtras.cpp b/lib/Support/StringExtras.cpp index 05ba34b2e7..687394a2fc 100644 --- a/lib/Support/StringExtras.cpp +++ b/lib/Support/StringExtras.cpp @@ -12,6 +12,7 @@ //===----------------------------------------------------------------------===// #include "llvm/ADT/StringExtras.h" +#include "llvm/ADT/SmallVector.h" #include <cstring> using namespace llvm; @@ -57,12 +58,12 @@ void llvm::SplitString(const std::string &Source, } } -void llvm::StringRef::split(std::vector<StringRef> &A, - StringRef Separators, unsigned MaxSplit, +void llvm::StringRef::split(SmallVectorImpl<StringRef> &A, + StringRef Separators, int MaxSplit, bool KeepEmpty) const { StringRef rest = *this; - for (unsigned splits = 0; + for (int splits = 0; rest.size() != 0 && (MaxSplit < 0 || splits < MaxSplit); ++splits) { std::pair<llvm::StringRef, llvm::StringRef> p = rest.split(Separators); diff --git a/unittests/ADT/StringRefTest.cpp b/unittests/ADT/StringRefTest.cpp index 3c0cc58ad2..ea1d26cb60 100644 --- a/unittests/ADT/StringRefTest.cpp +++ b/unittests/ADT/StringRefTest.cpp @@ -9,6 +9,7 @@ #include "gtest/gtest.h" #include "llvm/ADT/StringRef.h" +#include "llvm/ADT/SmallVector.h" #include "llvm/Support/raw_ostream.h" using namespace llvm; @@ -111,8 +112,8 @@ TEST(StringRefTest, Split) { } TEST(StringRefTest, Split2) { - std::vector<StringRef> parts; - std::vector<StringRef> expected; + SmallVector<StringRef, 5> parts; + SmallVector<StringRef, 5> expected; expected.push_back("ab"); expected.push_back("c"); StringRef(",ab,,c,").split(parts, ",", -1, false); |