141 unknown->queryInterface (
FObject::iid, (
void**)&
object);
151 return (ci1 && ci2) ? (strcmp (ci1, ci2) == 0) :
false;
160 if (
object &&
object->isTypeOf (C::getFClassID (),
true))
264 dest->removeDependent (_this);
267 dest->addDependent (_this);
278 dest->removeDependent (_this);
281 dest->addDependent (_this);
289 dest->removeDependent (_this);
298 dest->removeDependent (_this);
321#define SINGLETON(ClassName) \
322 static ClassName* instance (bool create = true) \
324 static Steinberg::FObject* inst = nullptr; \
325 if (inst == nullptr && create && Steinberg::Singleton::isTerminated () == false) \
327 Steinberg::Singleton::lockRegister (); \
328 if (inst == nullptr) \
330 inst = NEW ClassName; \
331 Steinberg::Singleton::registerInstance (&inst); \
333 Steinberg::Singleton::unlockRegister (); \
335 return (ClassName*)inst; \
339#define OBJ_METHODS(className, baseClass) \
340 static inline Steinberg::FClassID getFClassID () {return (#className);} \
341 virtual Steinberg::FClassID isA () const SMTG_OVERRIDE {return className::getFClassID ();} \
342 virtual bool isA (Steinberg::FClassID s) const SMTG_OVERRIDE {return isTypeOf (s, false);} \
343 virtual bool isTypeOf (Steinberg::FClassID s, bool askBaseClass = true) const SMTG_OVERRIDE \
344 { return (classIDsEqual (s, #className) ? true : (askBaseClass ? baseClass::isTypeOf (s, true) : false)); }
351#define REFCOUNT_METHODS(BaseClass) \
352virtual Steinberg::uint32 PLUGIN_API addRef ()SMTG_OVERRIDE{ return BaseClass::addRef (); } \
353virtual Steinberg::uint32 PLUGIN_API release ()SMTG_OVERRIDE{ return BaseClass::release (); }
378#define DEFINE_INTERFACES \
379Steinberg::tresult PLUGIN_API queryInterface (const Steinberg::TUID iid, void** obj) SMTG_OVERRIDE \
385#define DEF_INTERFACE(InterfaceName) \
386 QUERY_INTERFACE (iid, obj, InterfaceName::iid, InterfaceName)
391#define END_DEFINE_INTERFACES(BaseClass) \
392 return BaseClass::queryInterface (iid, obj); \
411#define DEF_INTERFACES_1(InterfaceName,BaseClass) \
413DEF_INTERFACE (InterfaceName) \
414END_DEFINE_INTERFACES (BaseClass)
417#define DEF_INTERFACES_2(InterfaceName1,InterfaceName2,BaseClass) \
419DEF_INTERFACE (InterfaceName1) \
420DEF_INTERFACE (InterfaceName2) \
421END_DEFINE_INTERFACES (BaseClass)
424#define DEF_INTERFACES_3(InterfaceName1,InterfaceName2,InterfaceName3,BaseClass) \
426DEF_INTERFACE (InterfaceName1) \
427DEF_INTERFACE (InterfaceName2) \
428DEF_INTERFACE (InterfaceName3) \
429END_DEFINE_INTERFACES (BaseClass)
432#define DEF_INTERFACES_4(InterfaceName1,InterfaceName2,InterfaceName3,InterfaceName4,BaseClass) \
434 DEF_INTERFACE (InterfaceName1) \
435 DEF_INTERFACE (InterfaceName2) \
436 DEF_INTERFACE (InterfaceName3) \
437 DEF_INTERFACE (InterfaceName4) \
438 END_DEFINE_INTERFACES (BaseClass)
454#define FUNKNOWN_METHODS(InterfaceName,BaseClass) \
455DEF_INTERFACES_1(InterfaceName,BaseClass) \
456REFCOUNT_METHODS(BaseClass)
458#define FUNKNOWN_METHODS2(InterfaceName1,InterfaceName2,BaseClass) \
459DEF_INTERFACES_2(InterfaceName1,InterfaceName2,BaseClass) \
460REFCOUNT_METHODS(BaseClass)
462#define FUNKNOWN_METHODS3(InterfaceName1,InterfaceName2,InterfaceName3,BaseClass) \
463DEF_INTERFACES_3(InterfaceName1,InterfaceName2,InterfaceName3,BaseClass) \
464REFCOUNT_METHODS(BaseClass)
466#define FUNKNOWN_METHODS4(InterfaceName1,InterfaceName2,InterfaceName3,InterfaceName4,BaseClass) \
467DEF_INTERFACES_4(InterfaceName1,InterfaceName2,InterfaceName3,InterfaceName4,BaseClass) \
468REFCOUNT_METHODS(BaseClass)
489#define IUNKNOWN_REFCOUNT_METHODS(BaseClass) \
490STDMETHOD_ (ULONG, AddRef) (void) {return BaseClass::addRef ();} \
491STDMETHOD_ (ULONG, Release) (void) {return BaseClass::release ();}
494#define COM_QUERY_INTERFACE(iid, obj, InterfaceName) \
495if (riid == __uuidof(InterfaceName)) \
498 *obj = (InterfaceName*)this; \
503#define COM_OBJECT_QUERY_INTERFACE(InterfaceName,BaseClass) \
504STDMETHOD (QueryInterface) (REFIID riid, void** object) \
506 COM_QUERY_INTERFACE (riid, object, InterfaceName) \
507 return BaseClass::queryInterface ((FIDString)&riid, object); \
511#define COM_UNKNOWN_METHODS(InterfaceName,BaseClass) \
512COM_OBJECT_QUERY_INTERFACE(InterfaceName,BaseClass) \
513IUNKNOWN_REFCOUNT_METHODS(BaseClass)
virtual void addDependent(IDependent *dep)
adds dependency to the object
Definition fobject.cpp:92
virtual void removeDependent(IDependent *dep)
removes dependency from the object
Definition fobject.cpp:99
virtual void changed(int32 msg=kChanged)
Inform all dependents, that the object has changed.
Definition fobject.cpp:106
FObject()
default constructor...
Definition fobject.h:85
static bool classIDsEqual(FClassID ci1, FClassID ci2)
compares (evaluates) 2 class IDs
Definition fobject.h:149
static void setUpdateHandler(IUpdateHandler *handler)
set method for the local attribute
Definition fobject.h:115
static const FUID iid
Definition fobject.h:123
uint32 PLUGIN_API addRef() SMTG_OVERRIDE
please refer to FUnknown::addref ()
Definition fobject.cpp:64
virtual void deferUpdate(int32 msg=kChanged)
Similar to triggerUpdates, except only delivered in idle (usefull in collecting updates).
Definition fobject.cpp:115
virtual bool isEqualInstance(FUnknown *d)
Definition fobject.h:113
static FObject * unknownToObject(FUnknown *unknown)
pointer conversion from FUnknown to FObject
Definition fobject.h:136
FObject & operator=(const FObject &)
overloads operator "=" as the reference assignment
Definition fobject.h:88
virtual ~FObject()
destructor...
Definition fobject.h:87
tresult PLUGIN_API queryInterface(const TUID _iid, void **obj) SMTG_OVERRIDE
please refer to FUnknown::queryInterface ()
Definition fobject.cpp:82
static IUpdateHandler * getUpdateHandler()
get method for the local attribute
Definition fobject.h:116
virtual void updateDone(int32)
empty virtual method that should be overridden by derived classes
Definition fobject.h:112
int32 refCount
COM-model local reference count.
Definition fobject.h:127
virtual bool isTypeOf(FClassID s, bool=true) const
evaluates if the passed ID is of the FObject type
Definition fobject.h:94
uint32 PLUGIN_API release() SMTG_OVERRIDE
please refer to FUnknown::release ()
Definition fobject.cpp:70
FObject(const FObject &)
overloaded constructor...
Definition fobject.h:86
int32 getRefCount()
returns the current interface reference count
Definition fobject.h:96
void PLUGIN_API update(FUnknown *, int32) SMTG_OVERRIDE
empty virtual method that should be overridden by derived classes for data updates upon changes
Definition fobject.h:105
virtual FClassID isA() const
a local alternative to getFClassID ()
Definition fobject.h:92
static FClassID getFClassID()
return Class ID as an ASCII string (statically)
Definition fobject.h:91
static IUpdateHandler * gUpdateHandler
Definition fobject.h:129
FUnknown * unknownCast()
get FUnknown interface from object
Definition fobject.h:97
virtual bool isA(FClassID s) const
evaluates if the passed ID is of the FObject type
Definition fobject.h:93
Definition funknown.h:233
Definition funknown.h:361
Definition funknown.h:403
Definition iupdatehandler.h:76
@ kChanged
Definition iupdatehandler.h:85
Definition smartpointer.h:44
Definition iupdatehandler.h:41
unsigned d
Definition inflate.c:940
unsigned s
Definition inflate.c:1555
void * object
Definition jmemsys.h:50
const char * msg
Definition missing_descriptor.c:20
void unlockRegister()
Definition fobject.cpp:141
bool isTerminated()
Definition fobject.cpp:133
void lockRegister()
Definition fobject.cpp:135
void registerInstance(FObject **o)
Definition fobject.cpp:146
Definition baseiids.cpp:43
void AssignShared(T *&dest, T *newPtr)
Definition fobject.h:244
void SafeReleaseDependent(IDependent *_this, T *&dest)
Definition fobject.h:286
void SafeDelete(T *&ptr)
Definition fobject.h:232
C * FCast(const FObject *object)
Definition fobject.h:158
int int32
Definition ftypes.h:50
void AssignSharedDependent(IDependent *_this, T *&dest, T *newPtr)
Definition fobject.h:258
int8 TUID[16]
plain UID type
Definition funknown.h:210
void SafeRelease(I *&ptr)
Definition fobject.h:213
const char8 * FIDString
Definition ftypes.h:117
C * FUCast(FObject *object)
Definition fobject.h:179
int32 tresult
Definition ftypes.h:76
FIDString FClassID
Definition fobject.h:52
unsigned int uint32
Definition ftypes.h:51
void handler(int signal)
Definition fileio.c:1632