LMMS
Loading...
Searching...
No Matches
funknown.h File Reference

Go to the source code of this file.

Classes

class  Steinberg::FUID
class  Steinberg::FUnknown
class  Steinberg::FUnknownPtr< I >
struct  Steinberg::FReleaser

Namespaces

namespace  Steinberg
namespace  Steinberg::FUnknownPrivate

Macros

#define INLINE_UID(l1, l2, l3, l4)
#define DECLARE_UID(name, l1, l2, l3, l4)
#define EXTERN_UID(name)
#define DECLARE_CLASS_IID(ClassName, l1, l2, l3, l4)
#define DEF_CLASS_IID(ClassName)
#define INLINE_UID_OF(ClassName)
#define INLINE_UID_FROM_FUID(x)
#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 Steinberg::LARGE_INT
using Steinberg::TUID[16] = char[16]
 plain UID type

Enumerations

enum  {
  Steinberg::kNoInterface = -1 , Steinberg::kResultOk , Steinberg::kResultTrue = kResultOk , Steinberg::kResultFalse ,
  Steinberg::kInvalidArgument , Steinberg::kNotImplemented , Steinberg::kInternalError , Steinberg::kNotInitialized ,
  Steinberg::kOutOfMemory
}

Functions

SMTG_ALWAYS_INLINE bool Steinberg::FUnknownPrivate::iidEqual (const void *iid1, const void *iid2)
int32 PLUGIN_API Steinberg::FUnknownPrivate::atomicAdd (int32 &var, int32 d)
template<typename T>
const TUIDSteinberg::getTUID ()

Macro Definition Documentation

◆ DECLARE_CLASS_IID

#define DECLARE_CLASS_IID ( ClassName,
l1,
l2,
l3,
l4 )
Value:
static const ::Steinberg::TUID ClassName##_iid = INLINE_UID (l1, l2, l3, l4);
#define INLINE_UID(l1, l2, l3, l4)
Definition funknown.h:49

◆ DECLARE_FUNKNOWN_METHODS

#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:
int32_t int32
Definition basics.h:89
uint32_t uint32
Definition basics.h:90
#define SMTG_OVERRIDE
Definition fplatform.h:241
Definition baseiids.cpp:43

◆ DECLARE_UID

#define DECLARE_UID ( name,
l1,
l2,
l3,
l4 )
Value:
::Steinberg::TUID name = INLINE_UID (l1, l2, l3, l4);
static const char * name
Definition pugl.h:1582
int8 TUID[16]
plain UID type
Definition funknown.h:210

◆ DEF_CLASS_IID

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

◆ DELEGATE_REFCOUNT

#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 (); }

◆ EXTERN_UID

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

◆ FUNKNOWN_CTOR

#define FUNKNOWN_CTOR   { __funknownRefCount = 1; }

◆ FUNKNOWN_DTOR

#define FUNKNOWN_DTOR

◆ IMPLEMENT_FUNKNOWN_METHODS

#define IMPLEMENT_FUNKNOWN_METHODS ( ClassName,
InterfaceName,
ClassIID )
Value:
IMPLEMENT_REFCOUNT (ClassName) \
IMPLEMENT_QUERYINTERFACE (ClassName, InterfaceName, ClassIID)
#define IMPLEMENT_REFCOUNT(ClassName)
Definition funknown.h:106

◆ IMPLEMENT_QUERYINTERFACE

#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; \
}
static const FUID iid
Definition funknown.h:382
int32 tresult
Definition ftypes.h:76

◆ IMPLEMENT_REFCOUNT

#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; \
}
int32 PLUGIN_API atomicAdd(int32 &var, int32 d)
Definition funknown.cpp:88
unsigned int uint32
Definition ftypes.h:51

◆ INLINE_UID

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

◆ INLINE_UID_FROM_FUID

#define INLINE_UID_FROM_FUID ( x)
Value:
INLINE_UID (x.getLong1 (), x.getLong2 (), x.getLong3 (), x.getLong4 ())
unsigned x[BMAX+1]
Definition inflate.c:1586

◆ INLINE_UID_OF

#define INLINE_UID_OF ( ClassName)
Value:
ClassName##_iid

◆ QUERY_INTERFACE

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