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
8#include <sparrow/buffer/buffer.hpp>
9
11
12namespace sparrow_ipc
13{
14 template <typename T>
15 concept ArrowPrivateData = requires(T& t) {
16 { t.buffers_ptrs() } -> std::same_as<const void**>;
17 { t.n_buffers() } -> std::convertible_to<std::size_t>;
18 };
19
21 {
22 public:
23
24 using optionally_owned_buffer = std::variant<sparrow::buffer<uint8_t>, std::span<const uint8_t>>;
25 explicit arrow_array_private_data(std::vector<optionally_owned_buffer>&& buffers);
26
27 [[nodiscard]] SPARROW_IPC_API const void** buffers_ptrs() noexcept;
28 [[nodiscard]] SPARROW_IPC_API std::size_t n_buffers() const noexcept;
29
30 private:
31
32 std::vector<optionally_owned_buffer> m_buffers;
33 std::vector<const void*> m_buffer_pointers;
34 };
35}
SPARROW_IPC_API const void ** buffers_ptrs() noexcept
SPARROW_IPC_API std::size_t n_buffers() const noexcept
std::variant< sparrow::buffer< uint8_t >, std::span< const uint8_t > > optionally_owned_buffer
arrow_array_private_data(std::vector< optionally_owned_buffer > &&buffers)
#define SPARROW_IPC_API
Definition config.hpp:12