class CCL::MetaClass

Overview

Runtime meta class for library objects. More…

#include <metaclass.h>

class MetaClass: public CCL::AbstractTypeInfo
{
public:
    // structs

    struct Attribute;
    struct AttributeModifier;
    struct CategoryModifier;
    struct ClassFlagsModifier;
    struct ClassIDModifier;
    struct ConstructorModifier;
    struct DescriptionModifier;
    struct MethodNamesModifier;
    struct NamespaceModifier;
    struct PropertyNamesModifier;

    // fields

     DECLARE_UNKNOWN;

    // construction

    MetaClass (
        const MetaClass* parentClass,
        CStringPtr className,
        Object* (*) () constructor,
        CStringPtr persistentName = nullptr,
        bool hidden = false
    );

    // methods

    bool isRegistered () const;
    bool isClass (const MetaClass& mc) const;
    bool canCast (const MetaClass& mc) const;
    bool operator == (const MetaClass& mc) const;
    PROPERTY_READONLY_FLAG (flags, kSingleton, isSingleton) const;
    void setPersistentName (CStringPtr name);
    CStringPtr getNamespaceName () const;
    CStringPtr getCategoryName () const;
    CStringPtr getDescription () const;
    virtual UIDRef CCL_API getClassID () const;
    Object* createObject () const;
    const MetaClass* getParentClass () const;
    int countAttributes () const;
    CStringPtr getAttributeName (int index) const;
    void getAttributeValue (Variant& value, int index) const;
    void removeAttribute (CStringPtr name);
    static MetaClass IUnknown* createInstance (UIDRef cid, void* userData);
};

Inherited Members

public:
    // enums

    enum DataTypes;
    enum Flags;

    // structs

    struct MethodDefinition;
    struct PropertyDefinition;

    // 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;
    virtual const ITypeInfo*CCL_API getParentType () const = 0;
    virtual int CCL_API getClassFlags () const = 0;
    virtual CStringPtr CCL_API getClassName () const = 0;
    virtual CStringPtr CCL_API getClassNamespace () const = 0;
    virtual UIDRef CCL_API getClassID () const = 0;
    virtual const MethodDefinition*CCL_API getMethodNames () const = 0;
    virtual const PropertyDefinition*CCL_API getPropertyNames () const = 0;
    virtual ModuleRef CCL_API getModuleReference () const = 0;
    virtual IUnknown*CCL_API createInstance () const = 0;
    virtual const ITypeInfo*CCL_API getParentType () const;
    virtual int CCL_API getClassFlags () const;
    virtual CStringPtr CCL_API getClassName () const;
    virtual CStringPtr CCL_API getClassNamespace () const;
    virtual UIDRef CCL_API getClassID () const;
    virtual const MethodDefinition*CCL_API getMethodNames () const;
    virtual const PropertyDefinition*CCL_API getPropertyNames () const;
    virtual ModuleRef CCL_API getModuleReference () const;
    virtual IUnknown*CCL_API createInstance () const;

Detailed Documentation

Runtime meta class for library objects.

<>

Methods

bool isRegistered () const

Check if meta class is registered.

bool isClass (const MetaClass& mc) const

Compare meta class.

bool canCast (const MetaClass& mc) const

Compare meta class for dynamic cast.

bool operator == (const MetaClass& mc) const

Compare meta class.

PROPERTY_READONLY_FLAG (flags, kSingleton, isSingleton) const

Get persistent class name.

void setPersistentName (CStringPtr name)

Set persistent class name.

CStringPtr getNamespaceName () const

Get namespace as string (can be null).

CStringPtr getCategoryName () const

Get category as string (can be null).

CStringPtr getDescription () const

Get description (can be null).

virtual UIDRef CCL_API getClassID () const

Get unique class identifier [ITypeInfo].

Object* createObject () const

Create object instance of this class.

const MetaClass* getParentClass () const

Get meta class of parent class (returns null for base class).

int countAttributes () const

Get number of class attributes.

CStringPtr getAttributeName (int index) const

Get attribute name at given index.

void getAttributeValue (Variant& value, int index) const

Get attribute value at given index.

void removeAttribute (CStringPtr name)

Remove attribute with given name.

static MetaClass IUnknown* createInstance (UIDRef cid, void* userData)

Create function for use with factory and meta class in userData.