Interface Technology Basics: Steinberg::FUnknownImpl Namespace Reference
Author: Steinberg

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

- Main Page
- Modules
- Namespaces
- Classes
- Files

- Namespace List
- Namespace Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups
Namespaces | Classes | Typedefs | Functions
Steinberg::FUnknownImpl Namespace Reference

## 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 `queryInterface` method. 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...
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.

## Typedef Documentation

using Unknown = FUnknown

Typedef to keep everything in this namespace.

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

## Function Documentation

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

Returns
  the TUID for an interface.

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.

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

Casts to Unknown* and then to the specified interface.

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

Casts to Unknown* and then to the specified interface.

Empty

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