Add implicit conversion for UniversalTResult

This commit is contained in:
Robbert van der Helm
2020-12-14 18:32:18 +01:00
parent 2becd420b2
commit cb7413c521
5 changed files with 44 additions and 62 deletions
+4 -4
View File
@@ -230,7 +230,7 @@ void Vst3Logger::log_response(bool is_host_vst,
const YaComponent::GetBusInfoResponse& response) {
log_response_base(is_host_vst, [&](auto& message) {
message << response.result.string();
if (response.result.native() == Steinberg::kResultOk) {
if (response.result == Steinberg::kResultOk) {
message << ", <BusInfo>";
}
});
@@ -241,7 +241,7 @@ void Vst3Logger::log_response(
const YaComponent::GetRoutingInfoResponse& response) {
log_response_base(is_host_vst, [&](auto& message) {
message << response.result.string();
if (response.result.native() == Steinberg::kResultOk) {
if (response.result == Steinberg::kResultOk) {
message << ", <RoutingInfo& for bus "
<< response.updated_in_info.busIndex << " and channel "
<< response.updated_in_info.channel
@@ -256,7 +256,7 @@ void Vst3Logger::log_response(bool is_host_vst,
const YaComponent::GetStateResponse& response) {
log_response_base(is_host_vst, [&](auto& message) {
message << response.result.string();
if (response.result.native() == Steinberg::kResultOk) {
if (response.result == Steinberg::kResultOk) {
message << ", <IBStream* containing "
<< response.updated_state.size() << " bytes>";
}
@@ -268,7 +268,7 @@ void Vst3Logger::log_response(
const YaComponent::GetBusArrangementResponse& response) {
log_response_base(is_host_vst, [&](auto& message) {
message << response.result.string();
if (response.result.native() == Steinberg::kResultOk) {
if (response.result == Steinberg::kResultOk) {
message << ", <SpeakerArrangement>";
}
});
+1 -1
View File
@@ -24,7 +24,7 @@ UniversalTResult::UniversalTResult() : universal_result(Value::kResultFalse) {}
UniversalTResult::UniversalTResult(tresult native_result)
: universal_result(to_universal_result(native_result)) {}
tresult UniversalTResult::native() const {
UniversalTResult::operator tresult() const {
static_assert(Steinberg::kResultOk == Steinberg::kResultTrue);
switch (universal_result) {
case Value::kNoInterface:
+1 -1
View File
@@ -104,7 +104,7 @@ class UniversalTResult {
/**
* Get the native equivalent for the wrapped `tresult` value.
*/
tresult native() const;
operator tresult() const;
/**
* Get the original name for the result, e.g. `kResultOk`.
+34 -50
View File
@@ -58,27 +58,21 @@ tresult PLUGIN_API YaComponentPluginImpl::initialize(FUnknown* context) {
context ? std::optional(context->iid) : std::nullopt);
}
return bridge
.send_message(YaComponent::Initialize{
.instance_id = arguments.instance_id,
.host_application_context_args =
std::move(host_application_context_args)})
.native();
return bridge.send_message(
YaComponent::Initialize{.instance_id = arguments.instance_id,
.host_application_context_args =
std::move(host_application_context_args)});
}
tresult PLUGIN_API YaComponentPluginImpl::terminate() {
return bridge
.send_message(
YaComponent::Terminate{.instance_id = arguments.instance_id})
.native();
return bridge.send_message(
YaComponent::Terminate{.instance_id = arguments.instance_id});
}
tresult PLUGIN_API
YaComponentPluginImpl::setIoMode(Steinberg::Vst::IoMode mode) {
return bridge
.send_message(YaComponent::SetIoMode{
.instance_id = arguments.instance_id, .mode = mode})
.native();
return bridge.send_message(YaComponent::SetIoMode{
.instance_id = arguments.instance_id, .mode = mode});
}
int32 PLUGIN_API
@@ -101,7 +95,7 @@ YaComponentPluginImpl::getBusInfo(Steinberg::Vst::MediaType type,
.bus = bus});
bus = response.updated_bus;
return response.result.native();
return response.result;
}
tresult PLUGIN_API YaComponentPluginImpl::getRoutingInfo(
@@ -114,7 +108,7 @@ tresult PLUGIN_API YaComponentPluginImpl::getRoutingInfo(
inInfo = response.updated_in_info;
outInfo = response.updated_out_info;
return response.result.native();
return response.result;
}
tresult PLUGIN_API
@@ -122,28 +116,22 @@ YaComponentPluginImpl::activateBus(Steinberg::Vst::MediaType type,
Steinberg::Vst::BusDirection dir,
int32 index,
TBool state) {
return bridge
.send_message(
YaComponent::ActivateBus{.instance_id = arguments.instance_id,
.type = type,
.dir = dir,
.index = index,
.state = state})
.native();
return bridge.send_message(
YaComponent::ActivateBus{.instance_id = arguments.instance_id,
.type = type,
.dir = dir,
.index = index,
.state = state});
}
tresult PLUGIN_API YaComponentPluginImpl::setActive(TBool state) {
return bridge
.send_message(YaComponent::SetActive{
.instance_id = arguments.instance_id, .state = state})
.native();
return bridge.send_message(YaComponent::SetActive{
.instance_id = arguments.instance_id, .state = state});
}
tresult PLUGIN_API YaComponentPluginImpl::setState(Steinberg::IBStream* state) {
return bridge
.send_message(YaComponent::SetState{
.instance_id = arguments.instance_id, .state = state})
.native();
return bridge.send_message(YaComponent::SetState{
.instance_id = arguments.instance_id, .state = state});
}
tresult PLUGIN_API YaComponentPluginImpl::getState(Steinberg::IBStream* state) {
@@ -152,7 +140,7 @@ tresult PLUGIN_API YaComponentPluginImpl::getState(Steinberg::IBStream* state) {
assert(response.updated_state.write_back(state) == Steinberg::kResultOk);
return response.result.native();
return response.result;
}
tresult PLUGIN_API YaComponentPluginImpl::setBusArrangements(
@@ -161,17 +149,15 @@ tresult PLUGIN_API YaComponentPluginImpl::setBusArrangements(
Steinberg::Vst::SpeakerArrangement* outputs,
int32 numOuts) {
assert(inputs && outputs);
return bridge
.send_message(YaComponent::SetBusArrangements{
.instance_id = arguments.instance_id,
.inputs = std::vector<Steinberg::Vst::SpeakerArrangement>(
inputs, &inputs[numIns]),
.num_ins = numIns,
.outputs = std::vector<Steinberg::Vst::SpeakerArrangement>(
outputs, &outputs[numOuts]),
.num_outs = numOuts,
})
.native();
return bridge.send_message(YaComponent::SetBusArrangements{
.instance_id = arguments.instance_id,
.inputs = std::vector<Steinberg::Vst::SpeakerArrangement>(
inputs, &inputs[numIns]),
.num_ins = numIns,
.outputs = std::vector<Steinberg::Vst::SpeakerArrangement>(
outputs, &outputs[numOuts]),
.num_outs = numOuts,
});
}
tresult PLUGIN_API YaComponentPluginImpl::getBusArrangement(
@@ -186,16 +172,14 @@ tresult PLUGIN_API YaComponentPluginImpl::getBusArrangement(
arr = response.updated_arr;
return response.result.native();
return response.result;
}
tresult PLUGIN_API
YaComponentPluginImpl::canProcessSampleSize(int32 symbolicSampleSize) {
return bridge
.send_message(YaComponent::CanProcessSampleSize{
.instance_id = arguments.instance_id,
.symbolic_sample_size = symbolicSampleSize})
.native();
return bridge.send_message(YaComponent::CanProcessSampleSize{
.instance_id = arguments.instance_id,
.symbolic_sample_size = symbolicSampleSize});
}
uint32 PLUGIN_API YaComponentPluginImpl::getLatencySamples() {
@@ -47,7 +47,7 @@ YaPluginFactoryPluginImpl::createInstance(Steinberg::FIDString cid,
new YaComponentPluginImpl(bridge, std::move(args)));
return Steinberg::kResultOk;
},
[&](const UniversalTResult& code) { return code.native(); }},
[&](const UniversalTResult& code) -> tresult { return code; }},
std::move(result));
} else {
// When the host requests an interface we do not (yet) implement, we'll
@@ -81,11 +81,9 @@ YaPluginFactoryPluginImpl::setHostContext(Steinberg::FUnknown* context) {
YaHostApplication::ConstructArgs host_application_context_args(
host_application_context, std::nullopt);
return bridge
.send_message(YaPluginFactory::SetHostContext{
.host_application_context_args =
std::move(host_application_context_args)})
.native();
return bridge.send_message(YaPluginFactory::SetHostContext{
.host_application_context_args =
std::move(host_application_context_args)});
} else {
bridge.logger.log_unknown_interface(
"In IPluginFactory3::setHostContext(), ignoring",