Pulp
1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
transport_fields.hpp
Go to the documentation of this file.
1
#pragma once
2
3
#include <cstdint>
4
#include <limits>
5
6
namespace
pulp::format
{
7
9
enum class
TransportField
: std::uint8_t {
10
Playing
= 0,
11
Recording
,
12
Looping
,
13
Tempo
,
14
BeatPosition
,
15
SamplePosition
,
16
TimeSignature
,
17
LoopRange
,
18
Bar
,
19
HostTime
,
20
FrameRate
,
21
Count
,
22
};
23
29
class
TransportValidity
{
30
public
:
31
using
storage_type
= std::uint16_t;
32
33
constexpr
bool
has
(
TransportField
field)
const
noexcept
{
34
return
(bits_ & mask(field)) != 0;
35
}
36
37
constexpr
void
set
(
TransportField
field,
bool
valid =
true
) noexcept {
38
if
(valid) {
39
bits_ =
static_cast<
storage_type
>
(bits_ | mask(field));
40
}
else
{
41
bits_ =
static_cast<
storage_type
>
(bits_ & ~mask(field));
42
}
43
}
44
45
constexpr
bool
empty
() const noexcept {
return
bits_ == 0; }
46
47
friend
constexpr
bool
operator==
(
const
TransportValidity
&,
48
const
TransportValidity
&)
noexcept
=
default
;
49
50
private
:
51
static
constexpr
storage_type
mask(
TransportField
field)
noexcept
{
52
return
static_cast<
storage_type
>
(
53
storage_type
{1} <<
static_cast<
std::uint8_t
>
(field));
54
}
55
56
storage_type
bits_ = 0;
57
};
58
59
static_assert
(
sizeof
(TransportValidity) ==
sizeof
(
TransportValidity::storage_type
));
60
static_assert
(
static_cast<
std::uint8_t
>
(
TransportField::Count
) <=
61
std::numeric_limits<TransportValidity::storage_type>::digits);
62
63
}
// namespace pulp::format
pulp::format::TransportValidity
Compact validity mask for the transport values carried by ProcessContext.
Definition
transport_fields.hpp:29
pulp::format::TransportValidity::set
constexpr void set(TransportField field, bool valid=true) noexcept
Definition
transport_fields.hpp:37
pulp::format::TransportValidity::empty
constexpr bool empty() const noexcept
Definition
transport_fields.hpp:45
pulp::format::TransportValidity::has
constexpr bool has(TransportField field) const noexcept
Definition
transport_fields.hpp:33
pulp::format::TransportValidity::storage_type
std::uint16_t storage_type
Definition
transport_fields.hpp:31
pulp::format::TransportValidity::operator==
friend constexpr bool operator==(const TransportValidity &, const TransportValidity &) noexcept=default
pulp::format
What the product grants a device: the quota table indexed by capability tier and live thermal state.
Definition
aax_editor.hpp:31
pulp::format::FrameRate
FrameRate
SMPTE video frame rate.
Definition
process_context.hpp:24
pulp::format::TransportField
TransportField
Independently optional fields in a per-block host transport snapshot.
Definition
transport_fields.hpp:9
pulp::format::TransportField::BeatPosition
@ BeatPosition
Definition
transport_fields.hpp:14
pulp::format::TransportField::HostTime
@ HostTime
Definition
transport_fields.hpp:19
pulp::format::TransportField::LoopRange
@ LoopRange
Definition
transport_fields.hpp:17
pulp::format::TransportField::Looping
@ Looping
Definition
transport_fields.hpp:12
pulp::format::TransportField::TimeSignature
@ TimeSignature
Definition
transport_fields.hpp:16
pulp::format::TransportField::Recording
@ Recording
Definition
transport_fields.hpp:11
pulp::format::TransportField::Playing
@ Playing
Definition
transport_fields.hpp:10
pulp::format::TransportField::Tempo
@ Tempo
Definition
transport_fields.hpp:13
pulp::format::TransportField::Bar
@ Bar
Definition
transport_fields.hpp:18
pulp::format::TransportField::Count
@ Count
Definition
transport_fields.hpp:21
pulp::format::TransportField::SamplePosition
@ SamplePosition
Definition
transport_fields.hpp:15
core
format
include
pulp
format
transport_fields.hpp
Generated by
1.15.0