sparrow 0.3.0
Loading...
Searching...
No Matches
builder_utils.hpp File Reference
#include <array>
#include <ranges>
#include <string>
#include <tuple>
#include <type_traits>
#include <utility>
#include <vector>
#include <sparrow/array.hpp>
#include <sparrow/utils/ranges.hpp>
Include dependency graph for builder_utils.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  sparrow::detail::express_layout_desire< T >
 
class  sparrow::dict_encode< T, KEY_TYPE >
 
class  sparrow::run_end_encode< T, LENGTH_TYPE >
 
struct  sparrow::detail::dont_enforce_layout
 
struct  sparrow::detail::enforce_dict_encoded_layout
 
struct  sparrow::detail::enforce_run_end_encoded_layout
 
struct  sparrow::detail::maybe_nullable_value_type< T >
 
struct  sparrow::detail::maybe_nullable_value_type< T >
 
struct  sparrow::detail::maybe_express_layout_desire_value_type< T >
 
struct  sparrow::detail::maybe_express_layout_desire_value_type< T >
 

Namespaces

namespace  sparrow
 
namespace  sparrow::detail
 

Concepts

concept  sparrow::detail::is_nullable_like
 
concept  sparrow::detail::is_dict_encode
 
concept  sparrow::detail::is_run_end_encode
 
concept  sparrow::detail::is_express_layout_desire
 
concept  sparrow::detail::is_plain_value_type
 
concept  sparrow::detail::has_tuple_element
 
concept  sparrow::detail::variant_like
 
concept  sparrow::detail::tuple_like
 
concept  sparrow::detail::all_elements_same
 

Typedefs

template<class T>
using sparrow::detail::decayed_range_value_t = std::decay_t<std::ranges::range_value_t<T>>
 
template<class T>
using sparrow::detail::mnv_t = typename maybe_nullable_value_type<T>::type
 
template<class T>
using sparrow::detail::meldv_t = typename maybe_express_layout_desire_value_type<T>::type
 
template<class T>
using sparrow::detail::layout_flag_t
 
template<class T>
using sparrow::detail::look_trough_t = meldv_t<mnv_t<meldv_t<T>>>
 
template<class T>
using sparrow::detail::ensured_range_value_t = look_trough_t<std::ranges::range_value_t<T>>
 
template<class T>
using sparrow::detail::nested_ensured_range_inner_value_t = ensured_range_value_t<ensured_range_value_t<T>>
 

Functions

template<class F, std::size_t... Is>
void sparrow::detail::for_each_index_impl (F &&f, std::index_sequence< Is... >)
 
template<std::size_t SIZE, class F>
void sparrow::detail::for_each_index (F &&f)
 
template<class F, std::size_t... Is>
bool sparrow::detail::exitable_for_each_index_impl (F &&f, std::index_sequence< Is... >)
 
template<std::size_t SIZE, class F>
bool sparrow::detail::exitable_for_each_index (F &&f)
 
template<typename T, std::size_t... N>
constexpr bool sparrow::detail::check_tuple_elements (std::index_sequence< N... >)
 
template<typename T>
constexpr bool sparrow::detail::is_tuple_like ()
 
template<typename Tuple, size_t... Is>
constexpr bool sparrow::detail::all_elements_same_impl (std::index_sequence< Is... >)
 
template<class T>
std::size_t sparrow::detail::get_size_save (T &&t)
 
template<class T>
decltype(auto) sparrow::detail::ensure_value (T &&t)
 
template<std::ranges::range T>
requires (is_nullable_like<std::ranges::range_value_t<T>>)
std::vector< std::size_t > sparrow::detail::where_null (T &&t)
 
template<class T>
requires (is_express_layout_desire<std::ranges::range_value_t<T>> && is_nullable_like<typename std::ranges::range_value_t<T>::value_type>)
std::vector< std::size_t > sparrow::detail::where_null (T &&t)
 
template<class T>
std::array< std::size_t, 0 > sparrow::detail::where_null (T &&)
 
template<class T>
requires (is_plain_value_type<std::ranges::range_value_t<T>>)
decltype(auto) sparrow::detail::ensure_value_range (T &&t)
 
template<class T>
requires (!is_plain_value_type<std::ranges::range_value_t<T>>)
decltype(auto) sparrow::detail::ensure_value_range (T &&t)