Initial release
This commit is contained in:
@@ -0,0 +1,122 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// Project : SDK Core
|
||||
//
|
||||
// Category : SDK Core Interfaces
|
||||
// Filename : pluginterfaces/base/iplugincompatibility.h
|
||||
// Created by : Steinberg, 02/2022
|
||||
// Description : Basic Plug-in Interfaces
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
// This file is part of a Steinberg SDK. It is subject to the license terms
|
||||
// in the LICENSE file found in the top-level directory of this distribution
|
||||
// and at www.steinberg.net/sdklicenses.
|
||||
// No part of the SDK, including this file, may be copied, modified, propagated,
|
||||
// or distributed except according to the terms contained in the LICENSE file.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "ibstream.h"
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
namespace Steinberg {
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
/** moduleinfo.json
|
||||
|
||||
The moduleinfo.json describes the contents of the plug-in in a JSON5 compatible format (See https://json5.org/).
|
||||
It contains the factory info (see PFactoryInfo), the contained classes (see PClassInfo), the
|
||||
included snapshots and a list of compatibility of the included classes.
|
||||
|
||||
An example moduleinfo.json:
|
||||
|
||||
\code
|
||||
{
|
||||
"Name": "",
|
||||
"Version": "1.0",
|
||||
"Factory Info": {
|
||||
"Vendor": "Steinberg Media Technologies",
|
||||
"URL": "http://www.steinberg.net",
|
||||
"E-Mail": "mailto:info@steinberg.de",
|
||||
"Flags": {
|
||||
"Unicode": true,
|
||||
"Classes Discardable": false,
|
||||
"Component Non Discardable": false,
|
||||
},
|
||||
},
|
||||
"Compatibility": [
|
||||
{
|
||||
"New": "B9F9ADE1CD9C4B6DA57E61E3123535FD",
|
||||
"Old": [
|
||||
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", // just an example
|
||||
"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", // another example
|
||||
],
|
||||
},
|
||||
],
|
||||
"Classes": [
|
||||
{
|
||||
"CID": "B9F9ADE1CD9C4B6DA57E61E3123535FD",
|
||||
"Category": "Audio Module Class",
|
||||
"Name": "AGainSimple VST3",
|
||||
"Vendor": "Steinberg Media Technologies",
|
||||
"Version": "1.3.0.1",
|
||||
"SDKVersion": "VST 3.7.4",
|
||||
"Sub Categories": [
|
||||
"Fx",
|
||||
],
|
||||
"Class Flags": 0,
|
||||
"Cardinality": 2147483647,
|
||||
"Snapshots": [
|
||||
],
|
||||
},
|
||||
],
|
||||
}
|
||||
\endcode
|
||||
|
||||
*/
|
||||
|
||||
#define kPluginCompatibilityClass "Plugin Compatibility Class"
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
/** optional interface to query the compatibility of the plug-ins classes
|
||||
- [plug imp]
|
||||
|
||||
A plug-in can add a class with this interface to its class factory if it cannot provide a
|
||||
moduleinfo.json file in its plug-in package/bundle where the compatibility is normally part of.
|
||||
|
||||
If the module contains a moduleinfo.json the host will ignore this class.
|
||||
|
||||
The class must write into the stream an UTF-8 encoded json description of the compatibility of
|
||||
the other classes in the factory.
|
||||
|
||||
It is expected that the JSON5 written starts with an array:
|
||||
\code
|
||||
[
|
||||
{
|
||||
"New": "B9F9ADE1CD9C4B6DA57E61E3123535FD",
|
||||
"Old": [
|
||||
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", // just an example
|
||||
"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB", // another example
|
||||
],
|
||||
},
|
||||
]
|
||||
\endcode
|
||||
*/
|
||||
class IPluginCompatibility : public FUnknown
|
||||
{
|
||||
public:
|
||||
/** get the compatibility stream
|
||||
* @param stream the stream the plug-in must write the UTF8 encoded JSON5 compatibility
|
||||
* string.
|
||||
* @return kResultTrue on success
|
||||
*/
|
||||
virtual tresult PLUGIN_API getCompatibilityJSON (IBStream* stream) = 0;
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
static const FUID iid;
|
||||
};
|
||||
|
||||
DECLARE_CLASS_IID (IPluginCompatibility, 0x4AFD4B6A, 0x35D7C240, 0xA5C31414, 0xFB7D15E6)
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
} // Steinberg
|
||||
Reference in New Issue
Block a user