Log process context contents in IInfoListener::setChannelContextInfos

This commit is contained in:
Robbert van der Helm
2021-02-13 16:40:24 +01:00
parent 4f8eaaaa75
commit 907925d660
3 changed files with 35 additions and 2 deletions
+11 -2
View File
@@ -382,10 +382,19 @@ bool Vst3Logger::log_request(
bool is_host_vst,
const YaInfoListener::SetChannelContextInfos& request) {
return log_request_base(is_host_vst, [&](auto& message) {
// TODO: Log the keys for the values provided by the host
message << request.instance_id
<< ": IInfoListener::setChannelContextInfos(list = "
"<IAttributeList*>)";
"<IAttributeList* containing [";
for (bool first = true;
const auto& key_type : request.list.keys_and_types()) {
if (!first) {
message << ", ";
}
message << key_type;
first = false;
}
message << "]>)";
});
}
@@ -89,6 +89,24 @@ IMPLEMENT_FUNKNOWN_METHODS(YaAttributeList,
Steinberg::Vst::IAttributeList::iid)
#pragma GCC diagnostic pop
std::vector<std::string> YaAttributeList::keys_and_types() const {
std::vector<std::string> result{};
for (const auto& [key, value] : attrs_int) {
result.push_back("\"" + key + "\" (int)");
}
for (const auto& [key, value] : attrs_float) {
result.push_back("\"" + key + "\" (float)");
}
for (const auto& [key, value] : attrs_string) {
result.push_back("\"" + key + "\" (string)");
}
for (const auto& [key, value] : attrs_binary) {
result.push_back("\"" + key + "\" (binary)");
}
return result;
}
tresult YaAttributeList::write_back(
Steinberg::Vst::IAttributeList* stream) const {
if (!stream) {
@@ -42,6 +42,12 @@ class YaAttributeList : public Steinberg::Vst::IAttributeList {
DECLARE_FUNKNOWN_METHODS
/**
* Get all of the keys stored in this attribute list along with their type
* in the `<key> (<type>)` format, used in the log messages.
*/
std::vector<std::string> keys_and_types() const;
/**
* Write the attribute list a host provided `IAttributeList`. This is used
* in `YaBStream::write_back` to write any preset meta data back to the host