Base Module  VST 3.7
SDK for developing VST plug-in
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
FObject Class Reference

Implements FUnknown and IDependent. More...

#include <fobject.h>

+ Inheritance diagram for FObject:

Public Member Functions

 FObject ()=default
 default constructor...
 
 FObject (const FObject &)
 
FObjectoperator= (const FObject &)
 overloads operator "=" as the reference assignment
 
virtual ~FObject ()
 destructor...
 
virtual FClassID isA () const
 a local alternative to getFClassID ()
 
virtual bool isA (FClassID s) const
 evaluates if the passed ID is of the FObject type
 
virtual bool isTypeOf (FClassID s, bool=true) const
 evaluates if the passed ID is of the FObject type
 
int32 getRefCount ()
 returns the current interface reference count
 
FUnknown * unknownCast ()
 get FUnknown interface from object
 
tresult queryInterface (const TUID _iid, void **obj) SMTG_OVERRIDE
 please refer to FUnknown::queryInterface ()
 
uint32 addRef () SMTG_OVERRIDE
 please refer to FUnknown::addref ()
 
uint32 release () SMTG_OVERRIDE
 please refer to FUnknown::release ()
 
void update (FUnknown *, int32) SMTG_OVERRIDE
 empty virtual method that should be overridden by derived classes for data updates upon changes
 
virtual void addDependent (IDependent *dep)
 adds dependency to the object
 
virtual void removeDependent (IDependent *dep)
 removes dependency from the object
 
virtual void changed (int32 msg=kChanged)
 Inform all dependents, that the object has changed.
 
virtual void deferUpdate (int32 msg=kChanged)
 Similar to triggerUpdates, except only delivered in idle (usefull in collecting updates).
 
virtual void updateDone (int32)
 empty virtual method that should be overridden by derived classes
 
virtual bool isEqualInstance (FUnknown *d)
 

Static Public Member Functions

static FClassID getFClassID ()
 return Class ID as an ASCII string (statically)
 
static void setUpdateHandler (IUpdateHandler *handler)
 set method for the local attribute
 
static IUpdateHandler * getUpdateHandler ()
 get method for the local attribute
 
static bool classIDsEqual (FClassID ci1, FClassID ci2)
 compares (evaluates) 2 class IDs
 
static FObjectunknownToObject (FUnknown *unknown)
 pointer conversion from FUnknown to FObject
 
template<class Class >
static IPtr< Class > fromUnknown (FUnknown *unknown)
 convert from FUnknown to FObject
 

Static Public Attributes

static const FUID iid
 Special UID that is used to cast an FUnknown pointer to a FObject.
 

Protected Attributes

int32 refCount = 1
 COM-model local reference count.
 

Static Protected Attributes

static IUpdateHandler * gUpdateHandler = nullptr
 

Detailed Description

Implements FUnknown and IDependent.

FObject is a polymorphic class that implements IDependent (of SKI module) and therefore derived from FUnknown, which is the most abstract base class of all.

All COM-like virtual methods of FUnknown such as queryInterface(), addRef(), release() are implemented here. On top of that, dependency-related methods are implemented too.

Pointer casting is done via the template methods FCast, either FObject to FObject or FUnknown to FObject.

FObject supports a new singleton concept, therefore these objects are deleted automatically upon program termination.

  • Runtime type information: An object can be queried at runtime, of what class it is. To do this correctly, every class must override some methods. This is simplified by using the OBJ_METHODS macros
See Also
  • FUnknown
  • IDependent
  • IUpdateHandler

Constructor & Destructor Documentation

FObject ( )
default

default constructor...

FObject ( const FObject )
inline
~FObject ( )
virtual

destructor...

Member Function Documentation

FObject& operator= ( const FObject )
inline

overloads operator "=" as the reference assignment

static FClassID getFClassID ( )
inlinestatic

return Class ID as an ASCII string (statically)

virtual FClassID isA ( ) const
inlinevirtual

a local alternative to getFClassID ()

virtual bool isA ( FClassID  s) const
inlinevirtual

evaluates if the passed ID is of the FObject type

virtual bool isTypeOf ( FClassID  s,
bool  = true 
) const
inlinevirtual

evaluates if the passed ID is of the FObject type

int32 getRefCount ( )
inline

returns the current interface reference count

FUnknown* unknownCast ( )
inline

get FUnknown interface from object

tresult queryInterface ( const TUID  _iid,
void **  obj 
)

please refer to FUnknown::queryInterface ()

uint32 addRef ( )

please refer to FUnknown::addref ()

uint32 release ( )

please refer to FUnknown::release ()

void update ( FUnknown *  ,
int32   
)
inline

empty virtual method that should be overridden by derived classes for data updates upon changes

void addDependent ( IDependent *  dep)
virtual

adds dependency to the object

void removeDependent ( IDependent *  dep)
virtual

removes dependency from the object

void changed ( int32  msg = kChanged)
virtual

Inform all dependents, that the object has changed.

void deferUpdate ( int32  msg = kChanged)
virtual

Similar to triggerUpdates, except only delivered in idle (usefull in collecting updates).

virtual void updateDone ( int32  )
inlinevirtual

empty virtual method that should be overridden by derived classes

virtual bool isEqualInstance ( FUnknown *  d)
inlinevirtual
static void setUpdateHandler ( IUpdateHandler *  handler)
inlinestatic

set method for the local attribute

static IUpdateHandler* getUpdateHandler ( )
inlinestatic

get method for the local attribute

bool classIDsEqual ( FClassID  ci1,
FClassID  ci2 
)
inlinestatic

compares (evaluates) 2 class IDs

FObject * unknownToObject ( FUnknown *  unknown)
inlinestatic

pointer conversion from FUnknown to FObject

IPtr< C > fromUnknown ( FUnknown *  unknown)
inlinestatic

convert from FUnknown to FObject

Member Data Documentation

const FUID iid
static

Special UID that is used to cast an FUnknown pointer to a FObject.

int32 refCount = 1
protected

COM-model local reference count.

IUpdateHandler * gUpdateHandler = nullptr
staticprotected
Empty

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