1 // Copyright (C) 2018 Intel Corporation
3 // SPDX-License-Identifier: Apache-2.0
6 #ifndef UTIL_CONTAINER_HELPER_HPP
7 #define UTIL_CONTAINER_HELPER_HPP
12 #include "util/memory_range.hpp"
18 inline auto data(const std::vector<T>& vector) -> decltype(vector.data())
24 inline std::size_t size(const std::vector<T>& vector)
30 inline auto slice(const std::vector<T>& vector, const std::size_t start, const std::size_t newSize)
31 ->decltype(memory_range(data(vector), size(vector)).Slice(start, newSize))
33 return memory_range(data(vector), size(vector)).Slice(start, newSize);
36 template<typename T, std::size_t Size>
37 inline auto data(const std::array<T, Size>& arr) -> decltype(arr.data())
42 template<typename T, std::size_t Size>
43 inline std::size_t size(const std::array<T, Size>& arr)
48 template<typename T, std::size_t Size>
49 inline auto slice(const std::array<T, Size>& arr, const std::size_t start, const std::size_t newSize)
50 ->decltype(memory_range(data(arr), size(arr)).Slice(start, newSize))
52 return memory_range(data(arr), size(arr)).Slice(start, newSize);