Switch to smallvector. Also fix issue with using unsigend for MaxSplit.
authorRafael Espindola <rafael.espindola@gmail.com>
Fri, 13 Nov 2009 02:18:25 +0000 (02:18 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Fri, 13 Nov 2009 02:18:25 +0000 (02:18 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87068 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/ADT/StringRef.h
lib/Support/StringExtras.cpp
unittests/ADT/StringRefTest.cpp

index 6ccb37d346c236b19ef6639fabbc58b9b99b4cca..6b17eb22de7902d9d7a747031efd8e0433e3c9d9 100644 (file)
 #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
index 05ba34b2e7b08cfe7ac689daa1d66ed1b981224e..687394a2fce493562490cdb9580acc101c475ede 100644 (file)
@@ -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);
index 3c0cc58ad2d5c3a110376e3ccdd0fe06f738d963..ea1d26cb60064a79a706d9f47b95be04a757e57c 100644 (file)
@@ -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);