sparrow-ipc 0.3.0
Loading...
Searching...
No Matches
dictionary_iteration.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <functional>
4#include <sparrow/record_batch.hpp>
5
7
8namespace sparrow_ipc
9{
10 template <class Func>
12 const sparrow::record_batch& record_batch,
13 dictionary_tracker& tracker,
14 Func visitor
15 )
16 {
17 const auto dictionaries = tracker.extract_dictionaries_from_batch(record_batch);
18 for (const auto& dict_info : dictionaries)
19 {
20 std::invoke(visitor, dict_info);
21 tracker.mark_emitted(dict_info.id);
22 }
23 }
24}
Tracks dictionaries during serialization.
void mark_emitted(int64_t id) noexcept
Mark a dictionary as emitted.
std::vector< dictionary_info > extract_dictionaries_from_batch(const sparrow::record_batch &batch)
Extract dictionaries from a record batch.
void for_each_pending_dictionary(const sparrow::record_batch &record_batch, dictionary_tracker &tracker, Func visitor)