Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
graph_identity.hpp
Go to the documentation of this file.
1#pragma once
2
3// Control-side identity helpers for authored graph ports. These helpers are
4// value-only: they never inspect a live snapshot and are safe to retain after
5// a graph mutation. Runtime scheduling and canonical port numbers are not
6// part of this identity surface.
7
9
10#include <cstdint>
11#include <span>
12#include <string>
13#include <vector>
14
15namespace pulp::host {
16
18 // The stable authored spelling and the replacement spelling supplied by
19 // the source contract. Resolution is deliberately one hop.
20 std::string authored_name;
21 std::string replacement_name;
22 std::uint32_t contract_version = 0;
23};
24
39
41 bool valid = false;
42 std::vector<std::string> normalized_names;
43 std::vector<PortIdentityIssue> issues;
44};
45
46// Validate and NFC-normalize a port set according to docs/contracts/
47// g3-identity-contract.md. The result is deterministic and owns all strings.
48PortIdentityReport validate_port_identities(std::span<const PortHandle> ports,
49 std::span<const PortIdentityAlias> aliases = {});
50
51// Stable semantic fingerprint of a validated identity set. Returns zero when
52// validation fails. Canonical port indexes and insertion order are excluded.
53std::uint64_t port_identity_fingerprint(std::span<const PortHandle> ports,
54 std::span<const PortIdentityAlias> aliases = {});
55
57 std::vector<std::string> added;
58 std::vector<std::string> removed;
59 std::vector<std::string> renamed;
60 bool order_changed = false;
61 bool valid = false;
62};
63
64PortIdentityDiff diff_port_identities(std::span<const PortHandle> before,
65 std::span<const PortHandle> after,
66 std::span<const PortIdentityAlias> aliases = {});
67
68// A compact value-owned undo record. Applying undo is a caller-owned graph
69// mutation; this type intentionally has no access to SignalGraph internals.
71 std::vector<PortHandle> before;
72 bool valid = false;
73};
74
75PortIdentityUndo capture_port_identity_undo(std::span<const PortHandle> before,
76 std::span<const PortIdentityAlias> aliases = {});
77
78std::vector<PortHandle> undo_port_identity(const PortIdentityUndo& undo);
79
80} // namespace pulp::host
Bounded event contracts shared by host ingress and graph-authored nodes.
Definition anticipation_eligibility.hpp:9
std::uint64_t port_identity_fingerprint(std::span< const PortHandle > ports, std::span< const PortIdentityAlias > aliases={})
PortIdentityUndo capture_port_identity_undo(std::span< const PortHandle > before, std::span< const PortIdentityAlias > aliases={})
PortIdentityReport validate_port_identities(std::span< const PortHandle > ports, std::span< const PortIdentityAlias > aliases={})
PortIdentityDiff diff_port_identities(std::span< const PortHandle > before, std::span< const PortHandle > after, std::span< const PortIdentityAlias > aliases={})
std::vector< PortHandle > undo_port_identity(const PortIdentityUndo &undo)
Definition graph_identity.hpp:17
std::string authored_name
Definition graph_identity.hpp:20
std::string replacement_name
Definition graph_identity.hpp:21
std::uint32_t contract_version
Definition graph_identity.hpp:22
Definition graph_identity.hpp:56
bool order_changed
Definition graph_identity.hpp:60
bool valid
Definition graph_identity.hpp:61
std::vector< std::string > added
Definition graph_identity.hpp:57
std::vector< std::string > removed
Definition graph_identity.hpp:58
std::vector< std::string > renamed
Definition graph_identity.hpp:59
Definition graph_identity.hpp:25
std::string name
Definition graph_identity.hpp:36
Code
Definition graph_identity.hpp:26
@ EmptyName
Definition graph_identity.hpp:28
@ InvalidAlias
Definition graph_identity.hpp:31
@ InvalidEncoding
Definition graph_identity.hpp:27
@ AliasCollision
Definition graph_identity.hpp:33
@ DuplicateName
Definition graph_identity.hpp:30
@ AliasChain
Definition graph_identity.hpp:32
@ ControlCharacter
Definition graph_identity.hpp:29
Code code
Definition graph_identity.hpp:35
std::string detail
Definition graph_identity.hpp:37
Definition graph_identity.hpp:40
std::vector< std::string > normalized_names
Definition graph_identity.hpp:42
std::vector< PortIdentityIssue > issues
Definition graph_identity.hpp:43
bool valid
Definition graph_identity.hpp:41
Definition graph_identity.hpp:70
bool valid
Definition graph_identity.hpp:72
std::vector< PortHandle > before
Definition graph_identity.hpp:71