Derivable Type

Derivable type is the base type for structs, unions and classes.

#include <jnc_DerivableType.h>

// structs

struct jnc_DerivableType;

// global functions

static
jnc_DerivableType*
jnc_BaseTypeSlot_getType(jnc_BaseTypeSlot* baseType);

size_t
jnc_BaseTypeSlot_getOffset(jnc_BaseTypeSlot* baseType);

size_t
jnc_BaseTypeSlot_getVtableIndex(jnc_BaseTypeSlot* baseType);

jnc_Type*
jnc_Field_getType(jnc_Field* field);

uint_t
jnc_Field_getBitOffset(jnc_Field* field);

uint_t
jnc_Field_getBitCount(jnc_Field* field);

uint_t
jnc_Field_getPtrTypeFlags(jnc_Field* field);

size_t
jnc_Field_getOffset(jnc_Field* field);

jnc_Function*
jnc_DerivableType_getStaticConstructor(jnc_DerivableType* type);

jnc_OverloadableFunction
jnc_DerivableType_getConstructor(jnc_DerivableType* type);

jnc_Function*
jnc_DerivableType_getDestructor(jnc_DerivableType* type);

jnc_OverloadableFunction
jnc_DerivableType_getUnaryOperator(
    jnc_DerivableType* type,
    jnc_UnOpKind opKind
);

jnc_OverloadableFunction
jnc_DerivableType_getBinaryOperator(
    jnc_DerivableType* type,
    jnc_BinOpKind opKind
);

jnc_OverloadableFunction
jnc_DerivableType_getCallOperator(jnc_DerivableType* type);

size_t
jnc_DerivableType_getCastOperatorCount(jnc_DerivableType* type);

jnc_Function*
jnc_DerivableType_getCastOperator(
    jnc_DerivableType* type,
    size_t index
);

size_t
jnc_DerivableType_getBaseTypeCount(jnc_DerivableType* type);

jnc_BaseTypeSlot*
jnc_DerivableType_getBaseType(
    jnc_DerivableType* type,
    size_t index
);

size_t
jnc_DerivableType_findBaseTypeOffset(
    jnc_DerivableType* type,
    jnc_Type* baseType
);

size_t
jnc_DerivableType_getStaticVariableCount(jnc_DerivableType* type);

jnc_Variable*
jnc_DerivableType_getStaticVariable(
    jnc_DerivableType* type,
    size_t index
);

size_t
jnc_DerivableType_getFieldCount(jnc_DerivableType* type);

jnc_Field*
jnc_DerivableType_getField(
    jnc_DerivableType* type,
    size_t index
);

size_t
jnc_DerivableType_getMethodCount(jnc_DerivableType* type);

jnc_Function*
jnc_DerivableType_getMethod(
    jnc_DerivableType* type,
    size_t index
);

size_t
jnc_DerivableType_getPropertyCount(jnc_DerivableType* type);

jnc_Property*
jnc_DerivableType_getProperty(
    jnc_DerivableType* type,
    size_t index
);