diff options
Diffstat (limited to 'lld/include/lld/Common/Arrays.h')
-rw-r--r-- | lld/include/lld/Common/Arrays.h | 32 |
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 |