Interface Technology Basics VST 3.6.11 SDK for developing VST Plug-in

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Classes | Namespaces | Macros | Typedefs | Enumerations | Functions
funknown.h File Reference
`#include "pluginterfaces/base/fplatform.h"`
`#include "pluginterfaces/base/ftypes.h"`
`#include "pluginterfaces/base/smartpointer.h"`
`#include <string.h>`

## Classes
class | FUID
| Handling 16 Byte Globally Unique Identifiers. More...
class | FUnknown
| The basic interface of all interfaces. More...
class | FUnknownPtr< I >
| FUnknownPtr - automatic interface conversion and smart pointer in one. More...
struct | FReleaser
| Release an interface using automatic object (obsolete). More...

## Namespaces
| Steinberg
| Steinberg::FUnknownPrivate

## Macros
#define | INLINE_UID(l1, l2, l3, l4)
#define | DECLARE_UID(name, l1, l2, l3, l4) ::Steinberg::TUID name = INLINE_UID (l1, l2, l3, l4);
#define | EXTERN_UID(name) extern const ::Steinberg::TUID name;
#define | DECLARE_CLASS_IID(ClassName, l1, l2, l3, l4) static const ::Steinberg::TUID ClassName##_iid = INLINE_UID (l1, l2, l3, l4);
#define | DEF_CLASS_IID(ClassName) const ::Steinberg::FUID ClassName::iid (ClassName##_iid);
#define | INLINE_UID_OF(ClassName) ClassName##_iid
#define | INLINE_UID_FROM_FUID(x) INLINE_UID (x.getLong1 (), x.getLong2 (), x.getLong3 (), x.getLong4 ())
#define | DECLARE_FUNKNOWN_METHODS
#define | DELEGATE_REFCOUNT(ClassName)
#define | IMPLEMENT_REFCOUNT(ClassName)
#define | FUNKNOWN_CTOR { __funknownRefCount = 1; }
#define | FUNKNOWN_DTOR
#define | QUERY_INTERFACE(iid, obj, InterfaceIID, InterfaceName)
#define | IMPLEMENT_QUERYINTERFACE(ClassName, InterfaceName, ClassIID)
#define | IMPLEMENT_FUNKNOWN_METHODS(ClassName, InterfaceName, ClassIID)

## Typedefs
typedef int64 | LARGE_INT
typedef int8 | TUID [16]
| plain UID type More...

## Enumerations
enum | { kNoInterface = -1, kResultOk, kResultTrue = kResultOk, kResultFalse, kInvalidArgument, kNotImplemented, kInternalError, kNotInitialized, kOutOfMemory }

## Functions
SMTG_ALWAYS_INLINE bool | iidEqual (const void *iid1, const void *iid2)
int32 | atomicAdd (int32 &var, int32 d)

## Macro Definition Documentation

#define INLINE_UID | ( |  | l1,
|  |  | l2,
|  |  | l3,
|  |  | l4
| ) |  |

Value:
{ \
(::Steinberg::int8)((l1 & 0xFF000000) >> 24), (::Steinberg::int8)((l1 & 0x00FF0000) >> 16), \
(::Steinberg::int8)((l1 & 0x0000FF00) >> 8), (::Steinberg::int8)((l1 & 0x000000FF) ), \
(::Steinberg::int8)((l2 & 0xFF000000) >> 24), (::Steinberg::int8)((l2 & 0x00FF0000) >> 16), \
(::Steinberg::int8)((l2 & 0x0000FF00) >> 8), (::Steinberg::int8)((l2 & 0x000000FF) ), \
(::Steinberg::int8)((l3 & 0xFF000000) >> 24), (::Steinberg::int8)((l3 & 0x00FF0000) >> 16), \
(::Steinberg::int8)((l3 & 0x0000FF00) >> 8), (::Steinberg::int8)((l3 & 0x000000FF) ), \
(::Steinberg::int8)((l4 & 0xFF000000) >> 24), (::Steinberg::int8)((l4 & 0x00FF0000) >> 16), \
(::Steinberg::int8)((l4 & 0x0000FF00) >> 8), (::Steinberg::int8)((l4 & 0x000000FF) ) \
}
Steinberg::int8
char int8
Definition: ftypes.h:39

#define DECLARE_UID | ( |  | name,
|  |  | l1,
|  |  | l2,
|  |  | l3,
|  |  | l4
| ) |  | ::Steinberg::TUID name = INLINE_UID (l1, l2, l3, l4);

#define EXTERN_UID | ( |  | name | ) | extern const ::Steinberg::TUID name;

#define DECLARE_CLASS_IID | ( |  | ClassName,
|  |  | l1,
|  |  | l2,
|  |  | l3,
|  |  | l4
| ) |  | static const ::Steinberg::TUID ClassName##_iid = INLINE_UID (l1, l2, l3, l4);

#define DEF_CLASS_IID | ( |  | ClassName | ) | const ::Steinberg::FUID ClassName::iid (ClassName##_iid);

#define INLINE_UID_OF | ( |  | ClassName | ) | ClassName##_iid

#define INLINE_UID_FROM_FUID | ( |  | x | ) | INLINE_UID (x.getLong1 (), x.getLong2 (), x.getLong3 (), x.getLong4 ())

#define DECLARE_FUNKNOWN_METHODS

Value:
public: \
virtual ::Steinberg::tresult PLUGIN_API queryInterface (const ::Steinberg::TUID _iid, void** obj) SMTG_OVERRIDE; \
virtual ::Steinberg::uint32 PLUGIN_API addRef () SMTG_OVERRIDE; \
virtual ::Steinberg::uint32 PLUGIN_API release () SMTG_OVERRIDE; \
protected : \
::Steinberg::int32 __funknownRefCount; \
public:
Steinberg::uint32
unsigned int uint32
Definition: ftypes.h:51
SMTG_OVERRIDE
#define SMTG_OVERRIDE
Definition: fplatform.h:202
Steinberg::TUID
int8 TUID[16]
plain UID type
Definition: funknown.h:202
Steinberg::tresult
int32 tresult
Definition: ftypes.h:76
Steinberg::int32
int int32
Definition: ftypes.h:50

#define DELEGATE_REFCOUNT | ( |  | ClassName | ) |

Value:
public: \
virtual ::Steinberg::uint32 PLUGIN_API addRef () SMTG_OVERRIDE { return ClassName::addRef (); } \
virtual ::Steinberg::uint32 PLUGIN_API release () SMTG_OVERRIDE { return ClassName::release (); }
Steinberg::uint32
unsigned int uint32
Definition: ftypes.h:51
SMTG_OVERRIDE
#define SMTG_OVERRIDE
Definition: fplatform.h:202

#define IMPLEMENT_REFCOUNT | ( |  | ClassName | ) |

Value:
::Steinberg::uint32 PLUGIN_API ClassName::addRef () \
{ \
return ::Steinberg::FUnknownPrivate::atomicAdd (__funknownRefCount, 1); \
} \
::Steinberg::uint32 PLUGIN_API ClassName::release () \
{ \
if (::Steinberg::FUnknownPrivate::atomicAdd (__funknownRefCount, -1) == 0) \
{ \
delete this; \
return 0; \
} \
return __funknownRefCount; \
}
Steinberg::uint32
unsigned int uint32
Definition: ftypes.h:51
Steinberg::FUnknownPrivate::atomicAdd
int32 atomicAdd(int32 &var, int32 d)
Definition: funknown.cpp:68

#define FUNKNOWN_CTOR { __funknownRefCount = 1; }

#define FUNKNOWN_DTOR

#define QUERY_INTERFACE | ( |  | iid,
|  |  | obj,
|  |  | InterfaceIID,
|  |  | InterfaceName
| ) |  |

Value:
if (::Steinberg::FUnknownPrivate::iidEqual (iid, InterfaceIID)) \
{ \
addRef (); \
*obj = static_cast< InterfaceName* >(this); \
return ::Steinberg::kResultOk; \
}
Steinberg::FUnknownPrivate::iidEqual
SMTG_ALWAYS_INLINE bool iidEqual(const void *iid1, const void *iid2)
Definition: funknown.h:207
Steinberg::kResultOk
Definition: funknown.h:185

#define IMPLEMENT_QUERYINTERFACE | ( |  | ClassName,
|  |  | InterfaceName,
|  |  | ClassIID
| ) |  |

Value:
::Steinberg::tresult PLUGIN_API ClassName::queryInterface (const ::Steinberg::TUID _iid, void** obj)\
{ \
QUERY_INTERFACE (_iid, obj, ::Steinberg::FUnknown::iid, InterfaceName) \
QUERY_INTERFACE (_iid, obj, ClassIID, InterfaceName) \
*obj = nullptr; \
return ::Steinberg::kNoInterface; \
}
QUERY_INTERFACE
#define QUERY_INTERFACE(iid, obj, InterfaceIID, InterfaceName)
Definition: funknown.h:123
Steinberg::FUnknown::iid
static const FUID iid
Definition: funknown.h:374
Steinberg::TUID
int8 TUID[16]
plain UID type
Definition: funknown.h:202
Steinberg::tresult
int32 tresult
Definition: ftypes.h:76
Steinberg::kNoInterface
Definition: funknown.h:184

#define IMPLEMENT_FUNKNOWN_METHODS | ( |  | ClassName,
|  |  | InterfaceName,
|  |  | ClassIID
| ) |  |

Value:
IMPLEMENT_REFCOUNT (ClassName) \
IMPLEMENT_QUERYINTERFACE (ClassName, InterfaceName, ClassIID)
IMPLEMENT_QUERYINTERFACE
#define IMPLEMENT_QUERYINTERFACE(ClassName, InterfaceName, ClassIID)
Definition: funknown.h:132
IMPLEMENT_REFCOUNT
#define IMPLEMENT_REFCOUNT(ClassName)
Definition: funknown.h:103
Empty

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