Skip to main content

sim_lib_plugin_vst3/
scope.rs

1/// The current stance on native VST3 plugin hosting.
2#[derive(Clone, Copy, Debug, PartialEq, Eq)]
3pub enum Vst3HostingDecision {
4    /// Native hosting is deferred pending external approvals.
5    Deferred,
6}
7
8/// A record of what VST3 support is and is not in scope for this crate.
9///
10/// Documents why native `.vst3` export and hosting are not yet provided and
11/// what would be required to enable them.
12#[derive(Clone, Debug, PartialEq, Eq)]
13pub struct Vst3ScopeDecision {
14    /// The reason native bundle export is unavailable; empty when supported.
15    pub native_export_blocker: String,
16    /// The current native-hosting decision.
17    pub hosting: Vst3HostingDecision,
18    /// The rationale behind the hosting decision.
19    pub hosting_reason: String,
20    /// The external SDK and tooling requirements native support would need.
21    pub sdk_requirements: Vec<String>,
22}
23
24impl Vst3ScopeDecision {
25    /// Returns `true` when native bundle export is supported (no blocker set).
26    pub fn native_export_supported(&self) -> bool {
27        self.native_export_blocker.is_empty()
28    }
29}
30
31/// Returns the current VST3 scope decision for this crate.
32///
33/// Native export and hosting are deferred; the returned record names the
34/// blockers and the SDK requirements that would lift them.
35pub fn current_vst3_scope() -> Vst3ScopeDecision {
36    Vst3ScopeDecision {
37        native_export_blocker: "native .vst3 bundle export needs the Steinberg VST3 SDK, \
38            platform bundle layout, and host validator/signing policy outside this repo"
39            .to_owned(),
40        hosting: Vst3HostingDecision::Deferred,
41        hosting_reason: "native VST3 hosting is deferred until SDK licensing, binary loading, \
42            and host lifecycle ownership are approved"
43            .to_owned(),
44        sdk_requirements: vec![
45            "Steinberg VST3 SDK".to_owned(),
46            "platform .vst3 bundle layout".to_owned(),
47            "host validator or smoke host".to_owned(),
48        ],
49    }
50}