class CCL::ClassFactory
Overview
#include <classfactory.h> class ClassFactory: public CCL::Unknown, public CCL::IClassFactory { public: // typedefs typedef IUnknown* (*UnknownCreateFunc)( UIDRef cid, void *userData ); // structs struct ClassHashEntry; // fields VersionDesc version; Vector <ClassEntry*> classes; HashTable <ClassHashEntry, LinkedList <ClassHashEntry>> classIdTable; static ClassFactory* theInstance = nullptr; // methods void setVersion (const VersionDesc& version); bool isEmpty () const; const ClassDesc* findClass (UIDRef cid) const; bool registerClass ( const ClassDesc& description, UnknownCreateFunc createFunc, void* userData = nullptr, IAttributeList* attributes = nullptr ); bool unregisterClass (UIDRef cid); bool unregisterAll (); PROPERTY_BOOL (subCategoryAsFolder, SubCategoryAsFolder); LocalizationEnabled PROPERTY_POINTER ( ClassAttributeProvider, attributeProvider, AttributeProvider ) const; virtual int CCL_API getNumClasses () const; virtual tbool CCL_API getClassDescription (ClassDesc& description, int index) const; virtual tbool CCL_API getClassAttributes ( IAttributeList& attributes, UIDRef cid, StringID language ) const; virtual tresult CCL_API createInstance (UIDRef cid, UIDRef iid, void** obj); ClassEntry* lookup (UIDRef cid) const; static ClassFactory* instance (); static int hashClassEntry (const ClassHashEntry& entry, int size); };
Inherited Members
public: // methods virtual tresult CCL_API queryInterface (UIDRef iid, void** ptr) = 0; virtual unsigned int CCL_API retain () = 0; virtual unsigned int CCL_API release () = 0; Unknown& operator = (const Unknown&); unsigned int getRetainCount () const; virtual tresult CCL_API createInstance (UIDRef cid, UIDRef iid, void** obj) = 0; virtual void CCL_API getVersion (VersionDesc& version) const = 0; virtual int CCL_API getNumClasses () const = 0; virtual tbool CCL_API getClassDescription (ClassDesc& description, int index) const = 0; virtual tbool CCL_API getClassAttributes ( IAttributeList& attributes, UIDRef cid, StringID language ) const = 0;
Detailed Documentation
Methods
void setVersion (const VersionDesc& version)
Set factory version.
bool isEmpty () const
Check if factory is empty.
const ClassDesc* findClass (UIDRef cid) const
Find registered class.
bool registerClass ( const ClassDesc& description, UnknownCreateFunc createFunc, void* userData = nullptr, IAttributeList* attributes = nullptr )
Register class.
bool unregisterClass (UIDRef cid)
Unregister class.
bool unregisterAll ()
Unregister all classes.
PROPERTY_BOOL (subCategoryAsFolder, SubCategoryAsFolder)
Use subcategory as class folder attribute.
Enable localization of class attributes.
LocalizationEnabled PROPERTY_POINTER ( ClassAttributeProvider, attributeProvider, AttributeProvider ) const
Class attribute provider (optional).
virtual int CCL_API getNumClasses () const
Returns number of exported classes.
virtual tbool CCL_API getClassDescription (ClassDesc& description, int index) const
Get description of class at specified index.
virtual tbool CCL_API getClassAttributes ( IAttributeList& attributes, UIDRef cid, StringID language ) const
Get additional class attributes (optional).
virtual tresult CCL_API createInstance (UIDRef cid, UIDRef iid, void** obj)
Create new class instance.
static ClassFactory* instance ()
Global class factory instance, must be released by caller!