| Interface Technology Basics
    VST 3.7
    SDK for developing VST plug-in | 
| Namespaces | |
| namespace | Detail | 
| Classes | |
| struct | Destroyer | 
| Common destroyer policy for ski object instances.  More... | |
| struct | UID | 
| This class provides a compile-time uid and enables interfaces to specify a UID as a simple typedef.  More... | |
| struct | Directly | 
| This struct is used to group a list of interfaces from which should be inherited and which should be available via the queryInterfacemethod.  More... | |
| struct | Indirectly | 
| This struct is used to group a list of interfaces from which should not be inherited but which should be available via the queryInterfacemethod.  More... | |
| class | ImplementsImpl | 
| class | ImplementsImpl< Base, Indirectly< IndirectInterfaces...>, Directly< DirectInterfaces...> > | 
| class | ImplementsImpl< BaseClass, Directly< I, DirectIFs...>, Indirectly< IndirectIFs...> > | 
| This class implements the required virtual methods for the U::Unknown class.  More... | |
| Typedefs | |
| using | Unknown = FUnknown | 
| Typedef to keep everything in this namespace. | |
| template<typename BaseClass , typename D , typename I = Indirectly<>> | |
| using | Extends = ImplementsImpl< BaseClass, D, I > | 
| This typedef enables using a custom base class with the interface implementation. | |
| template<typename D , typename I = Indirectly<>> | |
| using | Implements = ImplementsImpl< Detail::QueryInterfaceEnd< Detail::RefCounted >, D, I > | 
| This typedef provides the interface implementation. | |
| template<typename D , typename I = Indirectly<>> | |
| using | ImplementsNonDestroyable = ImplementsImpl< Detail::QueryInterfaceEnd< Detail::NonDestroyable >, D, I > | 
| This typedef provides the interface implementation for objects which should not be destroyed via FUnknown::release (like singletons). | |
| Functions | |
| template<typename T > | |
| const TUID & | getTUID () | 
| template<typename I > | |
| IPtr< I > | cast (Unknown *u) | 
| Checks if the given Unknown can provide the specified interface and returns it in an IPtr. | |
| template<typename I , typename S , typename T , typename U > | |
| IPtr< I > | cast (ImplementsImpl< S, T, U > *u) | 
| Casts to Unknown* and then to the specified interface. | |
| template<typename I , typename T > | |
| IPtr< I > | cast (const IPtr< T > &u) | 
| Casts to Unknown* and then to the specified interface. | |
| using Extends = ImplementsImpl<BaseClass, D, I> | 
This typedef enables using a custom base class with the interface implementation.
| using Implements = ImplementsImpl<Detail::QueryInterfaceEnd<Detail::RefCounted>, D, I> | 
This typedef provides the interface implementation.
| using ImplementsNonDestroyable = ImplementsImpl<Detail::QueryInterfaceEnd<Detail::NonDestroyable>, D, I> | 
This typedef provides the interface implementation for objects which should not be destroyed via FUnknown::release (like singletons).
| const TUID& Steinberg::FUnknownImpl::getTUID | ( | ) | 
| IPtr<I> Steinberg::FUnknownImpl::cast | ( | Unknown * | u | ) | 
| IPtr<I> Steinberg::FUnknownImpl::cast | ( | ImplementsImpl< S, T, U > * | u | ) | 
Casts to Unknown* and then to the specified interface.