Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
serialize.hpp
Go to the documentation of this file.
1#pragma once
2
8
9#include <cstddef>
10#include <cstdint>
11#include <string>
12#include <string_view>
13
14namespace pulp::timeline {
15
19
23 std::size_t max_output_bytes = 1024ull * 1024ull * 1024ull;
24};
25
33 std::string json;
35 bool has_opaque_objects = false;
36};
37
41 std::size_t assets = 0;
43 std::size_t sequences = 0;
45 std::size_t tracks = 0;
47 std::size_t clips = 0;
49 std::size_t notes = 0;
51 std::size_t device_placements = 0;
53 std::size_t automation_lanes = 0;
55 std::size_t automation_points = 0;
57 std::size_t modulators = 0;
59 std::size_t macro_controls = 0;
61 std::size_t modulation_routes = 0;
63 std::size_t take_lanes = 0;
65 std::size_t takes = 0;
67 std::size_t take_comp_segments = 0;
69 std::size_t markers = 0;
71 std::size_t regions = 0;
73 std::size_t scenes = 0;
75 std::size_t slots = 0;
77 std::size_t chord_scale_events = 0;
79 std::size_t dynamics_events = 0;
81 std::size_t groove_steps = 0;
83 std::size_t midi_lanes = 0;
85 std::size_t midi_lane_points = 0;
86};
87
106
118serialize_project(const Project& project, const SchemaRegistry& registry,
119 const SerializeOptions& options = {});
120
134 const SchemaReleaseMap& release,
135 const SerializeOptions& options = {});
136
148peek_project_summary(std::string_view json, const SchemaRegistry& registry,
149 const DecodeLimits& limits = {});
150
162 const SchemaRegistry& registry,
163 const DecodeLimits& limits = {});
164
174deserialize_commands(std::string_view json, const SchemaRegistry& registry,
175 const DecodeLimits& limits = {});
176
178
179} // namespace pulp::timeline
Result<T, E> — either holds a T or an E, never both.
Definition result.hpp:76
Immutable root of a Timeline document and its monotonic identity domain.
Definition model.hpp:1079
Immutable, shareable registry of Timeline schema contracts.
Definition schema_registry.hpp:189
runtime::Result< SerializedSnapshot, PersistenceError > serialize_project_for_release(const Project &project, const SchemaRegistry &registry, const SchemaReleaseMap &release, const SerializeOptions &options={})
Serializes a project using the schema versions pinned by a release map.
runtime::Result< ProjectSnapshotSummary, PersistenceError > peek_project_summary(std::string_view json, const SchemaRegistry &registry, const DecodeLimits &limits={})
Scans project metadata and structural counts without constructing Project.
runtime::Result< std::vector< Command >, PersistenceError > deserialize_commands(std::string_view json, const SchemaRegistry &registry, const DecodeLimits &limits={})
Decodes a JSON command array through the supplied schema registry.
runtime::Result< SerializedSnapshot, PersistenceError > serialize_project(const Project &project, const SchemaRegistry &registry, const SerializeOptions &options={})
Serializes a model-valid project as canonical UTF-8 JSON.
runtime::Result< Project, PersistenceError > deserialize_project(std::string_view json, const SchemaRegistry &registry, const DecodeLimits &limits={})
Decodes canonical Timeline JSON into a validated Project.
@ PersistenceError
Definition file_journal.hpp:26
Definition program_compiler.hpp:18
Result<T, E> — success / failure union for fallible operations.
Parser, migration, opaque-payload, and Timeline structure quotas.
Definition schema_json.hpp:78
Nonzero monotonic identity for a Timeline-owned object.
Definition item_id.hpp:19
Structural item counts extracted from a serialized project.
Definition serialize.hpp:39
std::size_t sequences
Number of sequences.
Definition serialize.hpp:43
std::size_t midi_lane_points
Number of controller points across all lanes.
Definition serialize.hpp:85
std::size_t midi_lanes
Number of controller/expression lanes across MIDI-content clips.
Definition serialize.hpp:83
std::size_t notes
Number of note events across note-content clips.
Definition serialize.hpp:49
std::size_t tracks
Number of tracks across all sequences.
Definition serialize.hpp:45
std::size_t clips
Number of clips across all tracks.
Definition serialize.hpp:47
std::size_t regions
Number of sequence regions.
Definition serialize.hpp:71
std::size_t automation_lanes
Number of automation lanes across all tracks.
Definition serialize.hpp:53
std::size_t modulation_routes
Number of modulation routes across all tracks.
Definition serialize.hpp:61
std::size_t modulators
Number of modulators across all tracks.
Definition serialize.hpp:57
std::size_t dynamics_events
Number of dynamics context events.
Definition serialize.hpp:79
std::size_t device_placements
Number of device placements across all tracks.
Definition serialize.hpp:51
std::size_t take_comp_segments
Number of selected comp segments across all take lanes.
Definition serialize.hpp:67
std::size_t assets
Number of media assets.
Definition serialize.hpp:41
std::size_t macro_controls
Number of macro controls across all tracks.
Definition serialize.hpp:59
std::size_t scenes
Number of launch scenes.
Definition serialize.hpp:73
std::size_t markers
Number of sequence markers.
Definition serialize.hpp:69
std::size_t groove_steps
Number of groove-template steps.
Definition serialize.hpp:81
std::size_t take_lanes
Number of take lanes across all tracks.
Definition serialize.hpp:63
std::size_t automation_points
Number of automation points across all lanes.
Definition serialize.hpp:55
std::size_t takes
Number of takes across all take lanes.
Definition serialize.hpp:65
std::size_t slots
Number of launch slots across all scenes.
Definition serialize.hpp:75
std::size_t chord_scale_events
Number of chord/scale context events.
Definition serialize.hpp:77
Allocation-light metadata view for project browsers and admission checks.
Definition serialize.hpp:92
std::uint64_t next_item_id
Next never-used project ItemId value.
Definition serialize.hpp:100
ProjectSnapshotCounts counts
Structurally counted item totals.
Definition serialize.hpp:104
ItemId root_sequence_id
Root arrangement sequence identity.
Definition serialize.hpp:102
ItemId project_id
Project identity.
Definition serialize.hpp:96
std::string name
Authored project name.
Definition serialize.hpp:98
std::uint32_t schema_version
Version of the outer project schema envelope.
Definition serialize.hpp:94
Immutable set of schema-version targets identified by a release label.
Definition schema_release.hpp:25
Output quota for project serialization.
Definition serialize.hpp:21
std::size_t max_output_bytes
Maximum bytes accepted in the returned JSON document.
Definition serialize.hpp:23
Canonical serialized project plus extension-preservation status.
Definition serialize.hpp:31
bool has_opaque_objects
Whether at least one OpaqueContent envelope was emitted.
Definition serialize.hpp:35
std::string json
Complete serialized project document.
Definition serialize.hpp:33