Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
note_transform.hpp
Go to the documentation of this file.
1#pragma once
2
5
6#include <cstddef>
7#include <cstdint>
8#include <memory>
9#include <optional>
10#include <span>
11#include <string>
12#include <string_view>
13#include <vector>
14
15namespace pulp::timeline {
16
20
26
31
39 std::span<const NoteEvent> notes, std::string_view canonical_params_json,
40 std::uint64_t seed, const void* user_data) noexcept;
41
48
67
73 std::optional<NoteTransformCallbackFailure> callback_error;
74 std::optional<PersistenceError> persistence_error;
75 std::optional<ModelError> model_error;
76 std::optional<TransactionError> transaction_error;
77};
78
90
97
104 public:
106 static constexpr std::size_t kMaxRegistrations = 1024;
108 static constexpr std::size_t kMaxParameterBytes = 1024 * 1024;
109 // ReplaceNoteContent persists both the input and output arrays under this
110 // shared note quota.
111 static constexpr std::size_t kMaxDurableCommandNotes = DecodeLimits{}.max_notes;
112
117 std::optional<NoteTransformError> register_transform(NoteTransformRegistration registration);
118
127 preview(const DocumentView& view, WriterToken& writer, const ApplyNoteTransform& request) const;
128
130 std::size_t size() const noexcept {
131 return registrations_.size();
132 }
133
134 private:
135 std::vector<NoteTransformRegistration> registrations_;
136};
137
139
140} // namespace pulp::timeline
Result<T, E> — either holds a T or an E, never both.
Definition result.hpp:76
Owned canonical collection of incremental invalidations.
Definition transaction.hpp:74
Control-thread registry for pure note transforms.
Definition note_transform.hpp:103
static constexpr std::size_t kMaxRegistrations
Maximum number of transform identities admitted by one registry.
Definition note_transform.hpp:106
static constexpr std::size_t kMaxParameterBytes
Maximum canonical parameter payload size in bytes.
Definition note_transform.hpp:108
std::optional< NoteTransformError > register_transform(NoteTransformRegistration registration)
Admits one valid, unique transform identity.
runtime::Result< NoteTransformPreview, NoteTransformError > preview(const DocumentView &view, WriterToken &writer, const ApplyNoteTransform &request) const
Invokes the requested transform and prepares its durable replacement.
std::size_t size() const noexcept
Returns the number of admitted transform identities.
Definition note_transform.hpp:130
static constexpr std::size_t kMaxDurableCommandNotes
Definition note_transform.hpp:111
Immutable root of a Timeline document and its monotonic identity domain.
Definition model.hpp:1079
Move-only authority for submitting transactions to one DocumentSession.
Definition document_session.hpp:334
runtime::Result< std::vector< NoteEvent >, NoteTransformCallbackFailure >(*)( std::span< const NoteEvent > notes, std::string_view canonical_params_json, std::uint64_t seed, const void *user_data) noexcept NoteTransformFunction
Pure, non-throwing note-transform callback.
Definition note_transform.hpp:37
NoteTransformCallbackError
Extension callback failures that are safe to persist in transform diagnostics.
Definition note_transform.hpp:22
NoteTransformErrorCode
Validation and execution failures reported by NoteTransformRegistry.
Definition note_transform.hpp:50
@ InvalidParameters
Definition note_transform.hpp:23
@ Refused
Definition note_transform.hpp:24
@ OutputLimitExceeded
Definition note_transform.hpp:63
@ CallbackFailed
Definition note_transform.hpp:59
@ InvalidOutput
Definition note_transform.hpp:60
@ ForeignOutputIdentity
Definition note_transform.hpp:61
@ TargetMissing
Definition note_transform.hpp:57
@ InvalidView
Definition note_transform.hpp:55
@ TransactionRejected
Definition note_transform.hpp:65
@ TransformNotFound
Definition note_transform.hpp:54
@ WrongTargetKind
Definition note_transform.hpp:58
@ InvalidRegistration
Definition note_transform.hpp:51
@ DuplicateRegistration
Definition note_transform.hpp:52
@ DuplicateOutputIdentity
Definition note_transform.hpp:62
@ CapacityExceeded
Definition note_transform.hpp:53
@ ItemIdExhausted
Definition clip.hpp:34
Definition program_compiler.hpp:18
Hover-cursor tracking for platform window hosts.
Definition fwd.hpp:27
A typed, apply-time request.
Definition note_transform.hpp:82
ItemId track_id
Definition note_transform.hpp:84
ItemId clip_id
Definition note_transform.hpp:85
std::string canonical_params_json
Definition note_transform.hpp:87
SchemaIdentity transform
Definition note_transform.hpp:86
ItemId sequence_id
Definition note_transform.hpp:83
std::uint64_t seed
Definition note_transform.hpp:88
Parser, migration, opaque-payload, and Timeline structure quotas.
Definition schema_json.hpp:78
std::size_t max_notes
Maximum note events across all note content.
Definition schema_json.hpp:108
Atomically observed immutable project snapshot and its matching revision.
Definition document_session.hpp:401
Nonzero monotonic identity for a Timeline-owned object.
Definition item_id.hpp:19
Failure returned directly by a registered note-transform callback.
Definition note_transform.hpp:28
NoteTransformCallbackError code
Definition note_transform.hpp:29
Transform failure with nested callback, persistence, model, or transaction detail.
Definition note_transform.hpp:69
ItemId item
Definition note_transform.hpp:72
std::optional< PersistenceError > persistence_error
Definition note_transform.hpp:74
std::optional< ModelError > model_error
Definition note_transform.hpp:75
NoteTransformErrorCode code
Definition note_transform.hpp:70
SchemaIdentity transform
Definition note_transform.hpp:71
std::optional< NoteTransformCallbackFailure > callback_error
Definition note_transform.hpp:73
std::optional< TransactionError > transaction_error
Definition note_transform.hpp:76
Prepared durable transaction and resulting immutable document snapshot.
Definition note_transform.hpp:92
Transaction transaction
Definition note_transform.hpp:93
Project snapshot
Definition note_transform.hpp:94
DirtySet dirty
Definition note_transform.hpp:95
Immutable registration for one versioned transform implementation.
Definition note_transform.hpp:43
SchemaIdentity identity
Definition note_transform.hpp:44
NoteTransformFunction function
Definition note_transform.hpp:45
std::shared_ptr< const void > user_data
Definition note_transform.hpp:46
Versioned extension-schema identity.
Definition clip.hpp:102
Atomically admitted ordered command batch.
Definition command.hpp:824