4#include <unordered_set>
6#include <sparrow/c_interface.hpp>
7#include <sparrow/utils/contracts.hpp>
8#include <sparrow/utils/metadata.hpp>
17 template <sparrow::input_metadata_container M = std::vector<sparrow::metadata_pair>>
20 std::string_view format,
22 std::optional<M> metadata,
23 std::optional<std::unordered_set<sparrow::ArrowFlag>> flags,
24 size_t children_count,
25 ArrowSchema** children,
26 ArrowSchema* dictionary
30 if (flags.has_value())
32 for (
const auto& flag : *flags)
34 schema.flags |=
static_cast<int64_t
>(flag);
37 schema.n_children =
static_cast<int64_t
>(children_count);
39 std::optional<std::string> metadata_str = metadata.has_value()
41 sparrow::get_metadata_from_key_values(*metadata)
49 schema.name = private_data->name_ptr();
50 schema.metadata = private_data->metadata_ptr();
51 schema.children = children;
52 schema.dictionary = dictionary;
56 template <sparrow::input_metadata_container M = std::vector<sparrow::metadata_pair>>
58 std::string_view format,
60 std::optional<M> metadata,
61 std::optional<std::unordered_set<sparrow::ArrowFlag>> flags,
62 size_t children_count,
63 ArrowSchema** children,
64 ArrowSchema* dictionary
SPARROW_IPC_API const char * format_ptr() const noexcept
ArrowSchema make_non_owning_arrow_schema(std::string_view format, const char *name, std::optional< M > metadata, std::optional< std::unordered_set< sparrow::ArrowFlag > > flags, size_t children_count, ArrowSchema **children, ArrowSchema *dictionary)
void fill_non_owning_arrow_schema(ArrowSchema &schema, std::string_view format, const char *name, std::optional< M > metadata, std::optional< std::unordered_set< sparrow::ArrowFlag > > flags, size_t children_count, ArrowSchema **children, ArrowSchema *dictionary)
SPARROW_IPC_API void release_non_owning_arrow_schema(ArrowSchema *schema)