mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-25 13:24:46 +00:00
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
This commit is contained in:
@@ -15,6 +15,14 @@
|
||||
#include <cstring>
|
||||
#include <string>
|
||||
|
||||
namespace std {
|
||||
template<typename _Tp>
|
||||
class allocator;
|
||||
|
||||
template<typename _Tp, typename _Alloc>
|
||||
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<StringRef, std::allocator<StringRef> > &A,
|
||||
StringRef Separator, unsigned MaxSplit = -1,
|
||||
bool KeepEmpty = true) const;
|
||||
|
||||
/// rsplit - Split into two substrings around the last occurence of a
|
||||
/// separator character.
|
||||
///
|
||||
|
Reference in New Issue
Block a user