From bd40379cf007150cd540356d404cd5f670c92439 Mon Sep 17 00:00:00 2001 From: Robbert van der Helm Date: Sun, 25 Sep 2022 15:08:37 +0200 Subject: [PATCH] Add serialization structs for CLAP tail extension --- src/common/serialization/clap.h | 1 + src/common/serialization/clap/ext/tail.h | 67 ++++++++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 src/common/serialization/clap/ext/tail.h diff --git a/src/common/serialization/clap.h b/src/common/serialization/clap.h index ba4eca49..b0414caa 100644 --- a/src/common/serialization/clap.h +++ b/src/common/serialization/clap.h @@ -25,6 +25,7 @@ #include "clap/ext/audio-ports.h" #include "clap/ext/note-ports.h" #include "clap/ext/params.h" +#include "clap/ext/tail.h" #include "clap/host.h" #include "clap/plugin-factory.h" #include "common.h" diff --git a/src/common/serialization/clap/ext/tail.h b/src/common/serialization/clap/ext/tail.h new file mode 100644 index 00000000..a98dd43f --- /dev/null +++ b/src/common/serialization/clap/ext/tail.h @@ -0,0 +1,67 @@ +// yabridge: a Wine plugin bridge +// Copyright (C) 2020-2022 Robbert van der Helm +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +#pragma once + +#include + +#include "../../common.h" + +// Serialization messages for `clap/ext/tail.h` + +namespace clap { +namespace ext { +namespace tail { + +namespace plugin { + +/** + * Message struct for `clap_plugin_tail::get()`. + */ +struct Get { + using Response = PrimitiveResponse; + + native_size_t instance_id; + + template + void serialize(S& s) { + s.value8b(instance_id); + } +}; + +} // namespace plugin + +namespace host { + +/** + * Message struct for `clap_host_tail::changed()`. + */ +struct Changed { + using Response = Ack; + + native_size_t owner_instance_id; + + template + void serialize(S& s) { + s.value8b(owner_instance_id); + } +}; + +} // namespace host + +} // namespace tail +} // namespace ext +} // namespace clap