aboutsummaryrefslogtreecommitdiff
path: root/lld/include/lld/Common/Arrays.h
diff options
context:
space:
mode:
Diffstat (limited to 'lld/include/lld/Common/Arrays.h')
-rw-r--r--lld/include/lld/Common/Arrays.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/lld/include/lld/Common/Arrays.h b/lld/include/lld/Common/Arrays.h
new file mode 100644
index 000000000000..b4c25ec57ca8
--- /dev/null
+++ b/lld/include/lld/Common/Arrays.h
@@ -0,0 +1,32 @@
+//===- Arrays.h ------------------------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLD_ARRAYS_H
+#define LLD_ARRAYS_H
+
+#include "llvm/ADT/ArrayRef.h"
+
+#include <vector>
+
+namespace lld {
+// Split one uint8 array into small pieces of uint8 arrays.
+inline std::vector<llvm::ArrayRef<uint8_t>> split(llvm::ArrayRef<uint8_t> arr,
+ size_t chunkSize) {
+ std::vector<llvm::ArrayRef<uint8_t>> ret;
+ while (arr.size() > chunkSize) {
+ ret.push_back(arr.take_front(chunkSize));
+ arr = arr.drop_front(chunkSize);
+ }
+ if (!arr.empty())
+ ret.push_back(arr);
+ return ret;
+}
+
+} // namespace lld
+
+#endif