sparrow-ipc 0.2.0
Loading...
Searching...
No Matches
private_data.hpp
Go to the documentation of this file.
1#pragma once
2#include <concepts>
3#include <cstdint>
4#include <span>
5#include <variant>
6#include <vector>
7
9
10namespace sparrow_ipc
11{
12 template <typename T>
13 concept ArrowPrivateData = requires(T& t)
14 {
15 { t.buffers_ptrs() } -> std::same_as<const void**>;
16 { t.n_buffers() } -> std::convertible_to<std::size_t>;
17 };
18
20 {
21 public:
22 using optionally_owned_buffer = std::variant<std::vector<uint8_t>, std::span<const uint8_t>>;
23 explicit arrow_array_private_data(std::vector<optionally_owned_buffer>&& buffers);
24
25 [[nodiscard]] SPARROW_IPC_API const void** buffers_ptrs() noexcept;
26 [[nodiscard]] SPARROW_IPC_API std::size_t n_buffers() const noexcept;
27
28 private:
29
30 std::vector<optionally_owned_buffer> m_buffers;
31 std::vector<const void*> m_buffer_pointers;
32 };
33}
SPARROW_IPC_API const void ** buffers_ptrs() noexcept
SPARROW_IPC_API std::size_t n_buffers() const noexcept
arrow_array_private_data(std::vector< optionally_owned_buffer > &&buffers)
std::variant< std::vector< uint8_t >, std::span< const uint8_t > > optionally_owned_buffer
#define SPARROW_IPC_API
Definition config.hpp:12