sparrow
2.4.0
C++20 idiomatic APIs for the Apache Arrow Columnar Format
Toggle main menu visibility
Loading...
Searching...
No Matches
duration_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 mplied.
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/primitive_array_impl.hpp
"
18
19
// tDs : std::chrono::seconds
20
// tDm : std::chrono::milliseconds
21
// tDu : std::chrono::microseconds
22
// tDn : std::chrono::nanoseconds
23
24
namespace
sparrow
25
{
26
using
duration_types_t
= mpl::
27
typelist<std::chrono::seconds, std::chrono::milliseconds, std::chrono::microseconds, std::chrono::nanoseconds>;
28
29
template
<
typename
T>
30
concept
duration_type
=
mpl::contains<duration_types_t, T>
();
31
32
namespace
detail
33
{
34
template
<>
35
struct
primitive_data_traits
<
std
::chrono::seconds>
36
{
37
static
constexpr
sparrow::data_type
type_id
=
sparrow::data_type::DURATION_SECONDS
;
38
};
39
40
template
<>
41
struct
primitive_data_traits
<
std
::chrono::milliseconds>
42
{
43
static
constexpr
sparrow::data_type
type_id
=
sparrow::data_type::DURATION_MILLISECONDS
;
44
};
45
46
template
<>
47
struct
primitive_data_traits
<
std
::chrono::microseconds>
48
{
49
static
constexpr
sparrow::data_type
type_id
=
sparrow::data_type::DURATION_MICROSECONDS
;
50
};
51
52
template
<>
53
struct
primitive_data_traits
<
std
::chrono::nanoseconds>
54
{
55
static
constexpr
sparrow::data_type
type_id
=
sparrow::data_type::DURATION_NANOSECONDS
;
56
};
57
}
58
70
template
<duration_type T>
71
using
duration_array
=
primitive_array_impl<T>
;
72
77
using
duration_seconds_array
=
duration_array<std::chrono::seconds>
;
82
using
duration_milliseconds_array
=
duration_array<std::chrono::milliseconds>
;
87
using
duration_microseconds_array
=
duration_array<std::chrono::microseconds>
;
92
using
duration_nanoseconds_array
=
duration_array<std::chrono::nanoseconds>
;
93
94
template
<
class
T>
95
struct
is_duration_array
: std::false_type
96
{
97
};
98
99
template
<
class
T>
100
struct
is_duration_array
<
duration_array
<T>> : std::true_type
101
{
102
};
103
107
template
<
class
T>
108
constexpr
bool
is_duration_array_v
=
is_duration_array<T>::value
;
109
}
sparrow::primitive_array_impl
Definition
primitive_array_impl.hpp:125
sparrow::duration_type
Definition
duration_array.hpp:30
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::duration_seconds_array
duration_array< std::chrono::seconds > duration_seconds_array
A duration array for std::chrono::seconds values.
Definition
duration_array.hpp:77
sparrow::duration_types_t
mpl:: typelist< std::chrono::seconds, std::chrono::milliseconds, std::chrono::microseconds, std::chrono::nanoseconds > duration_types_t
Definition
duration_array.hpp:26
sparrow::duration_array
primitive_array_impl< T > duration_array
Array of std::chrono::duration values.
Definition
duration_array.hpp:71
sparrow::is_duration_array_v
constexpr bool is_duration_array_v
Checks whether T is a duration_array type.
Definition
duration_array.hpp:108
sparrow::duration_microseconds_array
duration_array< std::chrono::microseconds > duration_microseconds_array
A duration array for std::chrono::microseconds values.
Definition
duration_array.hpp:87
sparrow::duration_milliseconds_array
duration_array< std::chrono::milliseconds > duration_milliseconds_array
A duration array for std::chrono::milliseconds values.
Definition
duration_array.hpp:82
sparrow::duration_nanoseconds_array
duration_array< std::chrono::nanoseconds > duration_nanoseconds_array
A duration array for std::chrono::nanoseconds values.
Definition
duration_array.hpp:92
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::DURATION_MILLISECONDS
@ DURATION_MILLISECONDS
Definition
data_type.hpp:225
sparrow::data_type::DURATION_NANOSECONDS
@ DURATION_NANOSECONDS
Definition
data_type.hpp:227
sparrow::data_type::DURATION_SECONDS
@ DURATION_SECONDS
Definition
data_type.hpp:224
sparrow::data_type::DURATION_MICROSECONDS
@ DURATION_MICROSECONDS
Definition
data_type.hpp:226
std
Extensions to the C++ standard library.
Definition
float16_t.hpp:1916
primitive_array_impl.hpp
sparrow::detail::primitive_data_traits< std::chrono::microseconds >::type_id
static constexpr sparrow::data_type type_id
Definition
duration_array.hpp:49
sparrow::detail::primitive_data_traits< std::chrono::milliseconds >::type_id
static constexpr sparrow::data_type type_id
Definition
duration_array.hpp:43
sparrow::detail::primitive_data_traits< std::chrono::nanoseconds >::type_id
static constexpr sparrow::data_type type_id
Definition
duration_array.hpp:55
sparrow::detail::primitive_data_traits< std::chrono::seconds >::type_id
static constexpr sparrow::data_type type_id
Definition
duration_array.hpp:37
sparrow::detail::primitive_data_traits
Definition
primitive_array_impl.hpp:69
sparrow::is_duration_array
Definition
duration_array.hpp:96
sparrow
duration_array.hpp
Generated by
1.17.0