Interface Technology Basics: funknownimpl.h File Reference
Author: Steinberg

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

- Main Page
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups
Classes | Namespaces | Typedefs | Functions
funknownimpl.h File Reference
`#include "pluginterfaces/base/fplatform.h"`
`#include "pluginterfaces/base/funknown.h"`
`#include <atomic>`
`#include <type_traits>`

## Classes
struct | HideIIDBase
| A base class which hides the FUnknown::iid static var. More...
struct | Destroyer
| Common destroyer policy for ski object instances. More...
class | ImplementsImpl< Base, D, I >
struct | UID< t1, t2, t3, t4 >
| This class provides a compile-time uid and enables interfaces to specify a UID as a simple typedef. More...
struct | RefCounted
| This struct implements reference counting for the `U::Implements` template. More...
struct | NonDestroyable
struct | QueryInterfaceEnd< T >
struct | Directly< T >
| 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< T >
| 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< Base, D, I >
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...

## Namespaces
namespace | Steinberg
| This header provides classes for working with FUnknown.
namespace | Steinberg::FUnknownImpl
namespace | Steinberg::FUnknownImpl::Detail
namespace | Steinberg::U
| Shortcut namespace for implementing FUnknown based objects.

## 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).
using | Unknown = FUnknownImpl::HideIIDBase

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

Empty

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