conformal_vst_wrapper 0.6.6

Implements a VST3-compatible plug-in for audio processors implemented with the conformal audio plug-in framework.
use crate::HostInfo;
use vst3::Steinberg::Vst::IHostApplicationTrait;

use super::from_utf16_buffer;

fn get_name(host: &dyn IHostApplicationTrait) -> Option<String> {
    let mut name_buffer = [0u16; 128];
    let res = unsafe { host.getName(&raw mut name_buffer) };
    if res != vst3::Steinberg::kResultOk {
        return None;
    }

    from_utf16_buffer(&name_buffer)
}

/// Extract the host info from `IHostApplication`.  Note that this is
/// potentially re-entrant!
pub fn get(host: &dyn IHostApplicationTrait) -> Option<HostInfo> {
    let name = get_name(host)?;
    Some(HostInfo { name })
}