70 {
"dawproject",
"DAWproject",
true},
71 {
"smf",
"Standard MIDI File",
true},
112 {
ImportLevel::Full,
"package-relative locator retained verbatim; identity sealed to the resolved bytes",
""},
145 {
ImportLevel::Partial,
"positions are exact when the file division divides the canonical tick grid; otherwise import reports bounded nearest-tick rounding",
""},
155 {
ImportLevel::Partial,
"tempo periods are represented as integer microseconds and may round on import",
""},
156 {
ImportLevel::Partial,
"tempo positions may use bounded nearest-tick rounding on non-dividing file grids, and periods are integer microseconds",
""},
157 {
ImportLevel::Partial,
"meter positions may use bounded nearest-tick rounding on non-dividing file grids",
""},
158 {
ImportLevel::Partial,
"time-signature changes are admitted only when they land on canonical bar boundaries",
""},
322 {
ExportLevel::Drop,
Concept::Unknown,
LossClass::Dropped,
"Pulp's Standard MIDI File writer emits note, tempo, and meter events only, so an authored controller stream is omitted and the file plays with every controller left wherever the receiving instrument already had it"},
354 for (std::size_t index = 0; index <
kFormatCount; ++index) {
356 out =
static_cast<Format>(index);
366 Concept concept_value)
noexcept {
368 [
static_cast<std::size_t
>(concept_value)];
374 Concept concept_value)
noexcept {
376 [
static_cast<std::size_t
>(concept_value)];
392 "Concept::Unknown must be the zero value so a reader that cannot"
393 " classify a construct refuses by default");
Definition capability_tables.hpp:62
constexpr ImportRow kImportRows[kFormatCount][kConceptCount]
Definition capability_tables.hpp:74
constexpr FormatRecord kFormatRecords[kFormatCount]
Definition capability_tables.hpp:69
constexpr ExportRow kExportRows[kFormatCount][kConceptCount]
Definition capability_tables.hpp:205
Concept
The format-neutral interchange concept vocabulary.
Definition concepts.hpp:13
@ ClipNote
Definition concepts.hpp:20
@ Unknown
Definition concepts.hpp:14
@ TempoMap
Definition concepts.hpp:29
ExportLevel
What a format's writer does with a concept the document uses.
Definition capability_tables.hpp:22
@ Degrade
Definition capability_tables.hpp:25
@ Drop
Definition capability_tables.hpp:23
@ RoundtripOnly
Definition capability_tables.hpp:24
@ Full
Definition capability_tables.hpp:26
constexpr const ExportRow & export_capability(Format format, Concept concept_value) noexcept
The format's export declaration for one concept, generated the same way (omitted concepts become Drop...
Definition capability_tables.hpp:373
constexpr std::size_t kFormatCount
Definition capability_tables.hpp:43
constexpr bool import_supports(Format format, Concept concept_value) noexcept
Whether the format's reader may admit the concept at all.
Definition capability_tables.hpp:381
constexpr const ImportRow & import_capability(Format format, Concept concept_value) noexcept
The format's import declaration for one concept.
Definition capability_tables.hpp:365
constexpr bool format_has_writer(Format format) noexcept
Whether a writer exists for this format. run_export refuses without one.
Definition capability_tables.hpp:348
Format
Interchange formats with a committed capability declaration.
Definition capability_tables.hpp:38
@ Smf
Definition capability_tables.hpp:40
@ DawProject
Definition capability_tables.hpp:39
constexpr std::size_t kConceptCount
Definition concepts.hpp:77
ImportLevel
How much of a concept a format's reader admits.
Definition capability_tables.hpp:14
@ Partial
Definition capability_tables.hpp:17
@ None
Definition capability_tables.hpp:15
@ Full
Definition capability_tables.hpp:18
@ PreserveOpaque
Definition capability_tables.hpp:16
constexpr bool export_is_lossless(Format format, Concept concept_value) noexcept
Whether exporting the concept costs the document anything.
Definition capability_tables.hpp:386
LossClass
How a concept is lost when a format cannot carry it intact.
Definition capability_tables.hpp:30
@ Flattened
Definition capability_tables.hpp:33
@ Approximated
Definition capability_tables.hpp:34
@ Dropped
Definition capability_tables.hpp:31
@ Degraded
Definition capability_tables.hpp:32
constexpr bool format_from_id(std::string_view id, Format &out) noexcept
Resolve a string id to its format. Returns false when unrecognized.
Definition capability_tables.hpp:353
constexpr std::string_view format_display_name(Format format) noexcept
The format's human-facing name.
Definition capability_tables.hpp:343
constexpr std::string_view format_id(Format format) noexcept
The format's stable string id.
Definition capability_tables.hpp:338
Definition capability_tables.hpp:53
LossClass loss_class
Definition capability_tables.hpp:57
Concept degrade_to
The concept a degrade lands on. Meaningful only for Degrade.
Definition capability_tables.hpp:56
ExportLevel level
Definition capability_tables.hpp:54
std::string_view loss
What the loss manifest reports. Empty when nothing is lost.
Definition capability_tables.hpp:59
Definition capability_tables.hpp:45
std::string_view notes
How the reader converts a partial or opaque concept.
Definition capability_tables.hpp:48
std::string_view refusal
What the refusal message names. Empty unless level is None.
Definition capability_tables.hpp:50
ImportLevel level
Definition capability_tables.hpp:46