Interface Technology Basics VST 3.7 SDK for developing VST plug-in

Namespaces | Classes | Typedefs | Functions
Steinberg::FUnknownImpl Namespace Reference

## Namespaces
namespace | Detail

## Classes
struct | Destroyer
| Common destroyer policy for ski object instances. 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 `queryInterface` method. More...
struct | HideIIDBase
| A base class which hides the FUnknown::iid static var. 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...
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 `queryInterface` method. More...
struct | UID
| This class provides a compile-time uid and enables interfaces to specify a UID as a simple typedef. More...

## Typedefs
using | Unknown = FUnknown
| Typedef to keep everything in this namespace. More...
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. More...
template<typename D , typename I = Indirectly<>>
using | Implements = ImplementsImpl< Detail::QueryInterfaceEnd< Detail::RefCounted >, D, I >
| This typedef provides the interface implementation. More...
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). More...

## 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. More...
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. More...
template<typename I , typename T >
IPtr< I > | cast (const IPtr< T > &u)
| Casts to Unknown* and then to the specified interface. More...

## Typedef Documentation

## ◆ Unknown

using Unknown = FUnknown

Typedef to keep everything in this namespace.

## ◆ Extends

using Extends = ImplementsImpl<BaseClass, D, I>

This typedef enables using a custom base class with the interface implementation.

## ◆ Implements

using Implements = ImplementsImpl<Detail::QueryInterfaceEnd<Detail::RefCounted>, D, I>

This typedef provides the interface implementation.

## ◆ ImplementsNonDestroyable

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).

## Function Documentation

## ◆ getTUID()

const TUID & Steinberg::FUnknownImpl::getTUID | ( |  | ) |

Returns
  the TUID for an interface.

## ◆ cast() [1/3]

IPtr< I > Steinberg::FUnknownImpl::cast | ( | Unknown * | u | ) |

Checks if the given Unknown can provide the specified interface and returns it in an IPtr.

Returns
  an IPtr pointing to an instance of the requested interface or nullptr in case the object does not provide the interface.

## ◆ cast() [2/3]

IPtr< I > Steinberg::FUnknownImpl::cast | ( | ImplementsImpl< S, T, U > * | u | ) |

Casts to Unknown* and then to the specified interface.

## ◆ cast() [3/3]

IPtr< I > Steinberg::FUnknownImpl::cast | ( | const IPtr< T > & | u | ) |

Casts to Unknown* and then to the specified interface.

Empty

Copyright © Steinberg Media Technologies GmbH. All Rights Reserved. This documentation is under this license.