#[repr(C)]pub struct PluginApiVt3Ext {
pub declare: Option<extern "C" fn(json: StbStringRef) -> i32>,
pub _reserved: [*mut c_void; 3],
}Expand description
The ABI v3 extension block, passed to rpi_plugin_register_v3 in
addition to the frozen v2 PluginApiVt. Keeping v3 as a separate side
struct means the v2 vtable layout never changes: a v2 plugin is unaffected,
a v3 plugin reads both.
Every slot is nullable. A null slot means the host does not support that
declaration yet — the plugin must null-check and degrade (skip the
declaration; the host applies defaults: priority 100, all platforms).
Fields§
§declare: Option<extern "C" fn(json: StbStringRef) -> i32>Declare this plugin’s host-side preferences as a JSON object, e.g.
{"priority":60,"platforms":["linux","macos"]}.
priority(integer, default100): dispatch order for this plugin’s handlers — smaller runs first (stable; registration order breaks ties). Suggested bands:0..=49infrastructure,50..=99connection,100..=199normal,200+post/cleanup.platforms(array of strings, default all): platforms this plugin supports; the host skips the plugin’s handlers on any other platform. Recognised:"linux","macos","windows","android".
Called during register. Returns 0 on success, nonzero on a handled
error (host logs it and keeps the defaults).
_reserved: [*mut c_void; 3]Reserved for future v3 declarations. MUST be null-filled today; the host ignores these slots. Zeroing them lets a future host start using them without another ABI bump.