class jnc.ClassType

class ClassType: jnc.DerivableType {
    // properties

    jnc.ClassTypeKind const property m_classTypeKind;
    jnc.StructType* const property m_ifaceStructType;
    jnc.StructType* const property m_classStructType;

    // construction

    construct(long p);

    // methods

    jnc.ClassPtrType* getClassPtrType(
        jnc.TypeKind typeKind = TypeKind.ClassPtr,
        jnc.ClassPtrTypeKind ptrTypeKind = ClassPtrTypeKind.Normal,
        jnc.PtrTypeFlags flags = 0
    ) const;
};

Inherited Members

public:
    // properties

    jnc.Module* const property m_module;
    jnc.ModuleItemKind const property m_itemKind;
    uint_t const property m_flags;
    jnc.Type* const property m_type;
    jnc.TypeKind const property m_typeKind;
    size_t const property m_size;
    size_t const property m_alignment;
    string_t const property m_signature;
    string_t const property m_typeString;
    string_t const property m_typeStringPrefix;
    string_t const property m_typeStringSuffix;
    string_t const property m_name;
    string_t const property m_qualifiedName;
    jnc.StorageKind const property m_storageKind;
    jnc.AccessKind const property m_accessKind;
    jnc.AttributeBlock* const property m_attributeBlock;
    jnc.Namespace* const property m_parentNamespace;
    jnc.Unit* const property m_parentUnit;
    int const property m_line;
    int const property m_col;
    jnc.NamespaceKind const property m_namespaceKind;
    size_t const property m_itemCount;
    jnc.ModuleItem* const indexed property m_itemArray(size_t index);
    jnc.Function* const property m_staticConstructor;
    jnc.Function* const property m_constructor;
    jnc.Function* const property m_destructor;
    size_t const property m_staticVariableCount;
    jnc.Variable* const indexed property m_staticVariableArray(size_t index);
    size_t const property m_fieldCount;
    jnc.Field* const indexed property m_fieldArray(size_t index);
    size_t const property m_methodCount;
    jnc.Function* const indexed property m_methodArray(size_t index);
    size_t const property m_propertyCount;
    jnc.Property* const indexed property m_propertyArray(size_t index);
    size_t const property m_baseTypeCount;
    jnc.BaseTypeSlot* const indexed property m_baseTypeArray(size_t index);
    jnc.Function* const indexed property m_unaryOperatorTable(jnc.UnOpKind opKind);
    jnc.Function* const indexed property m_binaryOperatorTable(jnc.BinOpKind opKind);
    jnc.Function* const property m_callOperator;
    size_t const property m_castOperatorCount;
    jnc.Function* const indexed property m_castOperatorArray(size_t index);

    // methods

    int cmp(jnc.Type* type) const;

    string_t getValueString(
        void const* value,
        string_t formatSpec = null
    ) const;

    string_t getValueString(
        variant_t value,
        string_t formatSpec = null
    ) const;

    jnc.ArrayType* getArrayType(size_t elementCount) const;

    jnc.DataPtrType* getDataPtrType(
        jnc.TypeKind typeKind = TypeKind.DataPtr,
        jnc.DataPtrTypeKind ptrTypeKind = DataPtrTypeKind.Normal,
        jnc.PtrTypeFlags flags = 0
    ) const;

    jnc.Attribute* findAttribute(string_t name) const;
    variant_t findAttributeValue(string_t name) const;
    jnc.ModuleItem* findItem(string_t name) const;
    jnc.ModuleItem* findItemNoParse(string_t name) const;
    size_t findBaseTypeOffset(jnc.DerivableType* baseType) const;