diff options
author | Chris Lattner <sabre@nondot.org> | 2011-03-02 20:55:51 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2011-03-02 20:55:51 +0000 |
commit | fa09685a9aa17dbdd4c72ad032684debb25feb0b (patch) | |
tree | c739b6075131f33fde028b6cecdfa00f87d9cf14 | |
parent | 291bb70d9348f8e80ec53a4c17c0464c0c8441bf (diff) |
add some slice helper methods.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126878 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/ADT/ArrayRef.h | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/include/llvm/ADT/ArrayRef.h b/include/llvm/ADT/ArrayRef.h index 711470bf56..ebddb1287e 100644 --- a/include/llvm/ADT/ArrayRef.h +++ b/include/llvm/ADT/ArrayRef.h @@ -96,10 +96,22 @@ namespace llvm { return Data[Length-1]; } + /// slice(n) - Chop off the first N elements of the array. + ArrayRef<T> slice(unsigned N) { + assert(N <= size() && "Invalid specifier"); + return ArrayRef<T>(data()+N, size()-N); + } + + /// slice(n, m) - Chop off the first N elements of the array, and keep M + /// elements in the array. + ArrayRef<T> slice(unsigned N, unsigned M) { + assert(N+M <= size() && "Invalid specifier"); + return ArrayRef<T>(data()+N, M); + } + /// @} /// @name Operator Overloads /// @{ - const T &operator[](size_t Index) const { assert(Index < Length && "Invalid index!"); return Data[Index]; @@ -108,7 +120,6 @@ namespace llvm { /// @} /// @name Expensive Operations /// @{ - std::vector<T> vec() const { return std::vector<T>(Data, Data+Length); } |