sparrow
2.4.0
C++20 idiomatic APIs for the Apache Arrow Columnar Format
Toggle main menu visibility
Loading...
Searching...
No Matches
interval_array.hpp
Go to the documentation of this file.
1
// Copyright 2024 Man Group Operations Limited
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License");
4
// you may not use this file except in compliance with the License.
5
// You may obtain a copy of the License at
6
//
7
// http://www.apache.org/licenses/LICENSE-2.0
8
//
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS,
11
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
// See the License for the specific language governing permissions and
13
// limitations under the License.
14
15
#pragma once
16
17
#include "
sparrow/layout/interval_types.hpp
"
18
#include "
sparrow/layout/primitive_array_impl.hpp
"
19
#include "
sparrow/types/data_traits.hpp
"
20
21
// tiM : std::chrono::months
22
// tiD : sparrow::day_time_interval
23
// tin : sparrow::month_day_nanoseconds_interval
24
25
namespace
sparrow
26
{
27
using
interval_types_t
=
mpl::typelist<chrono::months, days_time_interval, month_day_nanoseconds_interval>
;
28
29
template
<
typename
T>
30
concept
interval_type
=
mpl::contains<interval_types_t, T>
();
31
32
namespace
detail
33
{
34
template
<>
35
struct
primitive_data_traits
<
chrono
::months>
36
{
37
static
constexpr
sparrow::data_type
type_id
=
sparrow::data_type::INTERVAL_MONTHS
;
38
};
39
40
template
<>
41
struct
primitive_data_traits
<
days_time_interval
>
42
{
43
static
constexpr
sparrow::data_type
type_id
=
sparrow::data_type::INTERVAL_DAYS_TIME
;
44
};
45
46
template
<>
47
struct
primitive_data_traits
<
month_day_nanoseconds_interval
>
48
{
49
static
constexpr
sparrow::data_type
type_id
=
sparrow::data_type::INTERVAL_MONTHS_DAYS_NANOSECONDS
;
50
};
51
}
52
64
template
<
int
erval_type T>
65
using
interval_array
=
primitive_array_impl<T>
;
66
71
using
months_interval_array
=
interval_array<chrono::months>
;
76
using
days_time_interval_array
=
interval_array<days_time_interval>
;
81
using
month_day_nanoseconds_interval_array
=
interval_array<month_day_nanoseconds_interval>
;
82
83
template
<
class
T>
84
struct
is_interval_array
: std::false_type
85
{
86
};
87
88
template
<
class
T>
89
struct
is_interval_array
<
interval_array
<T>> : std::true_type
90
{
91
};
92
96
template
<
class
T>
97
constexpr
bool
is_interval_array_v
=
is_interval_array<T>::value
;
98
};
sparrow::primitive_array_impl
Definition
primitive_array_impl.hpp:125
sparrow::interval_type
Definition
interval_array.hpp:30
data_traits.hpp
interval_types.hpp
sparrow::chrono
Definition
temporal_types.hpp:20
sparrow::detail
Definition
dynamic_bitset.hpp:391
sparrow::mpl::contains
consteval bool contains()
Checks if a typelist contains a specific type.
Definition
mp_utils.hpp:633
sparrow
Definition
array.hpp:21
sparrow::is_interval_array_v
constexpr bool is_interval_array_v
Checks whether T is a interval_array type.
Definition
interval_array.hpp:97
sparrow::interval_array
primitive_array_impl< T > interval_array
Array of interval values.
Definition
interval_array.hpp:65
sparrow::month_day_nanoseconds_interval_array
interval_array< month_day_nanoseconds_interval > month_day_nanoseconds_interval_array
An interval array for month_day_nanoseconds_interval values.
Definition
interval_array.hpp:81
sparrow::days_time_interval_array
interval_array< days_time_interval > days_time_interval_array
An interval array for days_time_interval values.
Definition
interval_array.hpp:76
sparrow::interval_types_t
mpl::typelist< chrono::months, days_time_interval, month_day_nanoseconds_interval > interval_types_t
Definition
interval_array.hpp:27
sparrow::months_interval_array
interval_array< chrono::months > months_interval_array
An interval array for std::chrono::months values.
Definition
interval_array.hpp:71
sparrow::data_type
data_type
Runtime identifier of arrow data types, usually associated with raw bytes with the associated value.
Definition
data_type.hpp:177
sparrow::data_type::INTERVAL_DAYS_TIME
@ INTERVAL_DAYS_TIME
Definition
data_type.hpp:229
sparrow::data_type::INTERVAL_MONTHS
@ INTERVAL_MONTHS
Definition
data_type.hpp:228
sparrow::data_type::INTERVAL_MONTHS_DAYS_NANOSECONDS
@ INTERVAL_MONTHS_DAYS_NANOSECONDS
Definition
data_type.hpp:230
primitive_array_impl.hpp
sparrow::days_time_interval
Definition
interval_types.hpp:31
sparrow::detail::primitive_data_traits< chrono::months >::type_id
static constexpr sparrow::data_type type_id
Definition
interval_array.hpp:37
sparrow::detail::primitive_data_traits< days_time_interval >::type_id
static constexpr sparrow::data_type type_id
Definition
interval_array.hpp:43
sparrow::detail::primitive_data_traits< month_day_nanoseconds_interval >::type_id
static constexpr sparrow::data_type type_id
Definition
interval_array.hpp:49
sparrow::detail::primitive_data_traits
Definition
primitive_array_impl.hpp:69
sparrow::is_interval_array
Definition
interval_array.hpp:85
sparrow::month_day_nanoseconds_interval
Definition
interval_types.hpp:46
sparrow::mpl::typelist
A sequence of types used for metaprogramming operations.
Definition
mp_utils.hpp:123
sparrow
interval_array.hpp
Generated by
1.17.0