blob: 67a82a4d1e019c4a010627d321dbedf485493339 [file] [log] [blame]
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef REMOTING_HOST_FILE_TRANSFER_TEST_BYTE_VECTOR_UTILS_H_
#define REMOTING_HOST_FILE_TRANSFER_TEST_BYTE_VECTOR_UTILS_H_
#include <cstdint>
#include <vector>
namespace remoting {
// Base case for AppendBytes template.
inline void AppendBytes(std::vector<uint8_t>& vec) {}
// Appends the bytes from each of the passed iterables to |vec|.
template <typename Iterable, typename... Iterables>
void AppendBytes(std::vector<uint8_t>& vec,
const Iterable& first,
const Iterables&... rest) {
using std::begin;
using std::end;
vec.insert(vec.end(), begin(first), end(first));
AppendBytes(vec, rest...);
}
// Creates a byte array from the provided arguments. The arguments must be
// iterable using begin() and end(). The returned vector will contain the
// concatenation of the bytes yielded by each iterable.
template <typename... Iterables>
std::vector<std::uint8_t> ByteArrayFrom(const Iterables&... iterables) {
std::vector<std::uint8_t> vec;
AppendBytes(vec, iterables...);
return vec;
}
} // namespace remoting
#endif // REMOTING_HOST_FILE_TRANSFER_TEST_BYTE_VECTOR_UTILS_H_