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_ipc/config/config.hpp
"
9
10
namespace
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
19
class
arrow_array_private_data
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::arrow_array_private_data::buffers_ptrs
SPARROW_IPC_API const void ** buffers_ptrs() noexcept
sparrow_ipc::arrow_array_private_data::n_buffers
SPARROW_IPC_API std::size_t n_buffers() const noexcept
sparrow_ipc::arrow_array_private_data::arrow_array_private_data
arrow_array_private_data(std::vector< optionally_owned_buffer > &&buffers)
sparrow_ipc::arrow_array_private_data::optionally_owned_buffer
std::variant< std::vector< uint8_t >, std::span< const uint8_t > > optionally_owned_buffer
Definition
private_data.hpp:22
sparrow_ipc::ArrowPrivateData
Definition
private_data.hpp:13
config.hpp
SPARROW_IPC_API
#define SPARROW_IPC_API
Definition
config.hpp:12
sparrow_ipc
Definition
any_output_stream.hpp:13
include
sparrow_ipc
arrow_interface
arrow_array
private_data.hpp
Generated by
1.13.2