funknown.h File Reference

#include <string.h>
#include "ftypes.h"

Go to the source code of this file.

Namespaces

namespace  Steinberg

Classes

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

Defines

#define COM_COMPATIBLE   0
#define PLUGIN_API
#define INLINE_UID(l1, l2, l3, l4)
#define DECLARE_UID(name, l1, l2, l3, l4)   const char name[16] = INLINE_UID (l1, l2, l3, l4);
#define EXTERN_UID(name)   extern const char name[16];
#define DECLARE_CLASS_IID(ClassName, l1, l2, l3, l4)
#define DEFINE_CLASS_IID(ClassName, l1, l2, l3, l4)   const ::Steinberg::FUID ClassName::iid (l1, l2, l3, l4);
#define DECLARE_FUNKNOWN_METHODS
#define DELEGATE_REFCOUNT(ClassName)
#define IMPLEMENT_REFCOUNT(ClassName)
#define FUNKNOWN_CTOR   { __funknownRefCount = 1; ::Steinberg::FUnknown::addObject (); }
#define FUNKNOWN_DTOR   { ::Steinberg::FUnknown::releaseObject (); }
#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
typedef char Steinberg::TUID [16]

Enumerations

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


Define Documentation

#define COM_COMPATIBLE   0

Definition at line 48 of file funknown.h.

#define DECLARE_CLASS_IID ( ClassName,
l1,
l2,
l3,
l4   ) 

Definition at line 102 of file funknown.h.

#define DECLARE_FUNKNOWN_METHODS

Value:

public:                                                                      \
        virtual tresult PLUGIN_API queryInterface (const char* iid, void** obj); \
        virtual uint32 PLUGIN_API addRef ();                              \
        virtual uint32 PLUGIN_API release ();                             \
protected :                                                                  \
        uint32 __funknownRefCount;                                        \
public:

Definition at line 111 of file funknown.h.

#define DECLARE_UID ( name,
l1,
l2,
l3,
l4   )     const char name[16] = INLINE_UID (l1, l2, l3, l4);

Definition at line 91 of file funknown.h.

#define DEFINE_CLASS_IID ( ClassName,
l1,
l2,
l3,
l4   )     const ::Steinberg::FUID ClassName::iid (l1, l2, l3, l4);

Definition at line 105 of file funknown.h.

#define DELEGATE_REFCOUNT ( ClassName   ) 

Value:

public:                                                                                                                                                 \
        virtual uint32 PLUGIN_API addRef ()  { return ClassName::addRef ();  }  \
        virtual uint32 PLUGIN_API release () { return ClassName::release (); }  \

Definition at line 122 of file funknown.h.

#define EXTERN_UID ( name   )     extern const char name[16];

Definition at line 95 of file funknown.h.

#define FUNKNOWN_CTOR   { __funknownRefCount = 1; ::Steinberg::FUnknown::addObject (); }

Definition at line 144 of file funknown.h.

#define FUNKNOWN_DTOR   { ::Steinberg::FUnknown::releaseObject (); }

Definition at line 145 of file funknown.h.

#define IMPLEMENT_FUNKNOWN_METHODS ( ClassName,
InterfaceName,
ClassIID   ) 

Value:

IMPLEMENT_REFCOUNT (ClassName)                                   \
        IMPLEMENT_QUERYINTERFACE (ClassName, InterfaceName, ClassIID)

Definition at line 167 of file funknown.h.

#define IMPLEMENT_QUERYINTERFACE ( ClassName,
InterfaceName,
ClassIID   ) 

Value:

tresult PLUGIN_API ClassName::queryInterface (const char* iid, void** obj) \
{                                                                          \
        QUERY_INTERFACE (iid, obj, ::Steinberg::FUnknown::iid, InterfaceName)             \
        QUERY_INTERFACE (iid, obj, ClassIID, InterfaceName)                    \
        *obj = 0;                                                              \
        return kNoInterface;                                                   \
}

Definition at line 157 of file funknown.h.

#define IMPLEMENT_REFCOUNT ( ClassName   ) 

Value:

uint32 PLUGIN_API ClassName::addRef ()  \
{                                              \
        return ++__funknownRefCount;               \
}                                              \
uint32 PLUGIN_API ClassName::release () \
{                                              \
        if (--__funknownRefCount == 0)              \
        {                                          \
                delete this;                           \
                return 0;                              \
        }                                          \
        return __funknownRefCount;                 \
}

Definition at line 128 of file funknown.h.

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

Value:

{ \
        (int8)((l1 & 0xFF000000) >> 24), (int8)((l1 & 0x00FF0000) >> 16), \
        (int8)((l1 & 0x0000FF00) >>  8), (int8)((l1 & 0x000000FF)      ), \
        (int8)((l2 & 0xFF000000) >> 24), (int8)((l2 & 0x00FF0000) >> 16), \
        (int8)((l2 & 0x0000FF00) >>  8), (int8)((l2 & 0x000000FF)      ), \
        (int8)((l3 & 0xFF000000) >> 24), (int8)((l3 & 0x00FF0000) >> 16), \
        (int8)((l3 & 0x0000FF00) >>  8), (int8)((l3 & 0x000000FF)      ), \
        (int8)((l4 & 0xFF000000) >> 24), (int8)((l4 & 0x00FF0000) >> 16), \
        (int8)((l4 & 0x0000FF00) >>  8), (int8)((l4 & 0x000000FF)      )  \
}

Definition at line 77 of file funknown.h.

#define PLUGIN_API

Definition at line 56 of file funknown.h.

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

Value:

if (memcmp (iid, InterfaceIID, 16) == 0)                        \
{                                                              \
        addRef ();                                                 \
        *obj = (InterfaceName*)this;                               \
        return kResultOk;                                          \
}

Definition at line 148 of file funknown.h.

Empty


Copyright ©2008 Steinberg Media Technologies. All Rights Reserved.