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
6namespace pulp::format {
7
23
30public:
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
50private:
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
59static_assert(sizeof(TransportValidity) == sizeof(TransportValidity::storage_type));
60static_assert(static_cast<std::uint8_t>(TransportField::Count) <=
61 std::numeric_limits<TransportValidity::storage_type>::digits);
62
63} // namespace pulp::format
Compact validity mask for the transport values carried by ProcessContext.
Definition transport_fields.hpp:29
constexpr void set(TransportField field, bool valid=true) noexcept
Definition transport_fields.hpp:37
constexpr bool empty() const noexcept
Definition transport_fields.hpp:45
constexpr bool has(TransportField field) const noexcept
Definition transport_fields.hpp:33
std::uint16_t storage_type
Definition transport_fields.hpp:31
friend constexpr bool operator==(const TransportValidity &, const TransportValidity &) noexcept=default
What the product grants a device: the quota table indexed by capability tier and live thermal state.
Definition aax_editor.hpp:31
FrameRate
SMPTE video frame rate.
Definition process_context.hpp:24
TransportField
Independently optional fields in a per-block host transport snapshot.
Definition transport_fields.hpp:9
@ BeatPosition
Definition transport_fields.hpp:14
@ HostTime
Definition transport_fields.hpp:19
@ LoopRange
Definition transport_fields.hpp:17
@ Looping
Definition transport_fields.hpp:12
@ TimeSignature
Definition transport_fields.hpp:16
@ Recording
Definition transport_fields.hpp:11
@ Playing
Definition transport_fields.hpp:10
@ Tempo
Definition transport_fields.hpp:13
@ Bar
Definition transport_fields.hpp:18
@ Count
Definition transport_fields.hpp:21
@ SamplePosition
Definition transport_fields.hpp:15