|
- //------------------------------------------------------------------------
- // Project : VST SDK
- //
- // 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"
- //------------------------------------------------------------------------
|