//------------------------------------------------------------------------ // Project : VST SDK // Version : 3.6.7 // // Category : Interfaces // Filename : pluginterfaces/vst/ivstprefetchablesupport.h // Created by : Steinberg, 02/2015 // Description : VST Prefetchable Support Interface // //----------------------------------------------------------------------------- // 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 "pluginterfaces/vst/vsttypes.h" #include "pluginterfaces/vst/ivstattributes.h" //------------------------------------------------------------------------ #include "pluginterfaces/base/falignpush.h" //------------------------------------------------------------------------ //------------------------------------------------------------------------ namespace Steinberg { namespace Vst { typedef uint32 PrefetchableSupport; enum ePrefetchableSupport { kIsNeverPrefetchable = 0, ///< every instance of the plug does not support prefetch processing kIsYetPrefetchable, ///< in the current state the plug support prefetch processing kIsNotYetPrefetchable, ///< in the current state the plug does not support prefetch processing kNumPrefetchableSupport }; //------------------------------------------------------------------------ // IPrefetchableSupport Interface //------------------------------------------------------------------------ /** Indicates that the Plug-in could or not support Prefetch (dynamically). \ingroup vstIPlug vst365 - [plug imp] - [extends IComponent] - [released: 3.6.5] - [optional] The Plug-in should implement this interface if it needs to dynamically change between Prefetchable or not. By default (without implementing this interface) the host will decide in which mode the Plug-in will be process. For more info about Prefetch processing mode check ProcessModes::kPrefetch documentation. \section IPrefetchableSupportExample Example \code tresult PLUGIN_API myPlug::getPrefetchableSupport (PrefetchableSupport& prefetchable) { prefetchable = kIsNeverPrefetchable; switch (myPrefetchableMode) { case 0: prefetchable = kIsNeverPrefetchable; break; case 1: prefetchable = kIsYetPrefetchable; break; case 2: prefetchable = kIsNotYetPrefetchable; break; } return kResultOk; } \endcode */ class IPrefetchableSupport : public FUnknown { public: //------------------------------------------------------------------------ /** retrieve the current prefetch support. Use IComponentHandler::restartComponent (kPrefetchableSupportChanged) to inform the host that this support has changed. */ virtual tresult PLUGIN_API getPrefetchableSupport (PrefetchableSupport& prefetchable /*out*/) = 0; //------------------------------------------------------------------------ static const FUID iid; }; DECLARE_CLASS_IID (IPrefetchableSupport, 0x8AE54FDA, 0xE93046B9, 0xA28555BC, 0xDC98E21E) } // namespace Vst } // namespace Steinberg //------------------------------------------------------------------------ #include "pluginterfaces/base/falignpop.h" //------------------------------------------------------------------------