Initial release
This commit is contained in:
@@ -0,0 +1,213 @@
|
||||
//------------------------------------------------------------------------
|
||||
// Flags : clang-format SMTGSequencer
|
||||
// Project : VST SDK
|
||||
//
|
||||
// Category : Helpers
|
||||
// Filename : public.sdk/source/vst/aaxwrapper/aaxentry.h
|
||||
// Created by : Steinberg, 08/2017
|
||||
// Description : VST 3 -> AAX Wrapper
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
// 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.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
/// \cond ignore
|
||||
|
||||
/**
|
||||
* plugin entry from AAX_Exports.cpp
|
||||
*/
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#include "pluginterfaces/base/fplatform.h"
|
||||
|
||||
// change names to avoid different linkage
|
||||
#define ACFRegisterPlugin ACFRegisterPlugin_
|
||||
#define ACFRegisterComponent ACFRegisterComponent_
|
||||
#define ACFGetClassFactory ACFGetClassFactory_
|
||||
|
||||
#define ACFCanUnloadNow ACFCanUnloadNow_
|
||||
#define ACFStartup ACFStartup_
|
||||
#define ACFShutdown ACFShutdown_
|
||||
|
||||
//#define INITACFIDS // Make sure all of the AVX2 uids are defined.
|
||||
|
||||
#include "AAX.h"
|
||||
#include "AAX_Init.h"
|
||||
#include "acfresult.h"
|
||||
#include "acfunknown.h"
|
||||
|
||||
#undef ACFRegisterPlugin
|
||||
#undef ACFRegisterComponent
|
||||
#undef ACFGetClassFactory
|
||||
|
||||
#undef ACFCanUnloadNow
|
||||
#undef ACFStartup
|
||||
#undef ACFShutdown
|
||||
|
||||
// defined in basewrapper.cpp
|
||||
extern bool _InitModule ();
|
||||
extern bool _DeinitModule ();
|
||||
|
||||
// reference this in the plugin to force inclusion of the wrapper in the link
|
||||
int AAXWrapper_linkAnchor;
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
#if defined(__GNUC__)
|
||||
#define AAX_EXPORT extern "C" __attribute__ ((visibility ("default"))) ACFRESULT
|
||||
#else
|
||||
#define AAX_EXPORT extern "C" __declspec (dllexport) ACFRESULT __stdcall
|
||||
#endif
|
||||
|
||||
AAX_EXPORT ACFRegisterPlugin (IACFUnknown* pUnkHost, IACFPluginDefinition** ppPluginDefinition);
|
||||
AAX_EXPORT ACFRegisterComponent (IACFUnknown* pUnkHost, acfUInt32 index,
|
||||
IACFComponentDefinition** ppComponentDefinition);
|
||||
AAX_EXPORT ACFGetClassFactory (IACFUnknown* pUnkHost, const acfCLSID& clsid, const acfIID& iid,
|
||||
void** ppOut);
|
||||
|
||||
AAX_EXPORT ACFCanUnloadNow (IACFUnknown* pUnkHost);
|
||||
AAX_EXPORT ACFStartup (IACFUnknown* pUnkHost);
|
||||
AAX_EXPORT ACFShutdown (IACFUnknown* pUnkHost);
|
||||
AAX_EXPORT ACFGetSDKVersion (acfUInt64* oSDKVersion);
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
// \func ACFRegisterPlugin
|
||||
// \brief Determines the number of components defined in the dll.
|
||||
//
|
||||
ACFAPI ACFRegisterPlugin (IACFUnknown* pUnkHostVoid, IACFPluginDefinition** ppPluginDefinitionVoid)
|
||||
{
|
||||
ACFRESULT result = ACF_OK;
|
||||
|
||||
try
|
||||
{
|
||||
result = AAXRegisterPlugin (pUnkHostVoid, ppPluginDefinitionVoid);
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
result = ACF_E_UNEXPECTED;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
// \func ACFRegisterComponent
|
||||
// \brief Registers a specific component in the DLL.
|
||||
//
|
||||
ACFAPI ACFRegisterComponent (IACFUnknown* pUnkHost, acfUInt32 index,
|
||||
IACFComponentDefinition** ppComponentDefinition)
|
||||
{
|
||||
ACFRESULT result = ACF_OK;
|
||||
|
||||
try
|
||||
{
|
||||
result = AAXRegisterComponent (pUnkHost, index, ppComponentDefinition);
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
result = ACF_E_UNEXPECTED;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
// \func ACFGetClassFactory
|
||||
// \brief Gets the factory for a given class ID.
|
||||
//
|
||||
ACFAPI ACFGetClassFactory (IACFUnknown* pUnkHost, const acfCLSID& clsid, const acfIID& iid,
|
||||
void** ppOut)
|
||||
{
|
||||
ACFRESULT result = ACF_OK;
|
||||
|
||||
try
|
||||
{
|
||||
result = AAXGetClassFactory (pUnkHost, clsid, iid, ppOut);
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
result = ACF_E_UNEXPECTED;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
// \func ACFCanUnloadNow
|
||||
// \brief Figures out if all objects are released so we can unload.
|
||||
//
|
||||
ACFAPI ACFCanUnloadNow (IACFUnknown* pUnkHost)
|
||||
{
|
||||
ACFRESULT result = ACF_OK;
|
||||
|
||||
try
|
||||
{
|
||||
result = AAXCanUnloadNow (pUnkHost);
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
result = ACF_E_UNEXPECTED;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
// \func ACFStartup
|
||||
// \brief Called once at init time.
|
||||
//
|
||||
ACFAPI ACFStartup (IACFUnknown* pUnkHost)
|
||||
{
|
||||
ACFRESULT result = ACF_OK;
|
||||
|
||||
try
|
||||
{
|
||||
result = AAXStartup (pUnkHost);
|
||||
if (result == ACF_OK)
|
||||
{
|
||||
if (!_InitModule ())
|
||||
{
|
||||
AAXShutdown (pUnkHost);
|
||||
result = ACF_E_UNEXPECTED;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
result = ACF_E_UNEXPECTED;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
// \func ACFShutdown
|
||||
// \brief Called once at termination of dll.
|
||||
//
|
||||
ACFAPI ACFShutdown (IACFUnknown* pUnkHost)
|
||||
{
|
||||
ACFRESULT result = ACF_OK;
|
||||
|
||||
try
|
||||
{
|
||||
_DeinitModule ();
|
||||
result = AAXShutdown (pUnkHost);
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
result = ACF_E_UNEXPECTED;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
ACFAPI ACFGetSDKVersion (acfUInt64* oSDKVersion)
|
||||
{
|
||||
return AAXGetSDKVersion (oSDKVersion);
|
||||
}
|
||||
|
||||
/// \endcond
|
||||
Reference in New Issue
Block a user