#ifndef V8_BASE_VECTOR_H_
#define V8_BASE_VECTOR_H_
#include <algorithm>
#include <cstring>
#include <iterator>
#include <limits>
#include <memory>
#include <type_traits>
#include "src/base/functional.h"
#include "src/base/logging.h"
#include "src/base/macros.h"
namespace v8 {
namespace base {
template <typename T>
class Vector { … };
template <typename T>
V8_INLINE size_t hash_value(base::Vector<T> v) { … }
template <typename T>
class V8_NODISCARD ScopedVector : public Vector<T> { … };
template <typename T>
class OwnedVector { … };
template <size_t N>
constexpr Vector<const char> StaticCharVector(const char (&array)[N]) { … }
inline Vector<const char> CStrVector(const char* data) { … }
inline Vector<const uint8_t> OneByteVector(const char* data, size_t length) { … }
inline Vector<const uint8_t> OneByteVector(const char* data) { … }
template <size_t N>
Vector<const uint8_t> StaticOneByteVector(const char (&array)[N]) { … }
template <typename T, size_t N>
inline constexpr Vector<T> ArrayVector(T (&arr)[N]) { … }
template <typename T>
inline constexpr Vector<T> VectorOf(T* start, size_t size) { … }
template <typename Container>
inline constexpr auto VectorOf(Container&& c)
-> decltype(VectorOf(std::data(c), std::size(c))) { … }
template <typename T>
inline constexpr Vector<const T> VectorOf(std::initializer_list<T> list) { … }
template <typename T, size_t kSize>
class EmbeddedVector : public Vector<T> { … };
}
}
#endif