Class Type

Overview

Class type is used to describe a class in Jancy. Moreā€¦

#include <jnc_ClassType.h>

// enums

enum jnc_ClassPtrTypeKind;
enum jnc_ClassTypeFlag;
enum jnc_ClassTypeKind;
enum jnc_McSnapshotFieldKind;
enum jnc_McSnapshotMethodKind;
enum jnc_MulticastFieldKind;
enum jnc_MulticastMethodFlag;
enum jnc_MulticastMethodKind;

// structs

struct jnc_ClassType;

// global functions

const char*
jnc_getClassPtrTypeKindString(jnc_ClassPtrTypeKind ptrTypeKind);

jnc_ClassTypeKind
jnc_ClassType_getClassTypeKind(jnc_ClassType* type);

jnc_StructType*
jnc_ClassType_getIfaceStructType(jnc_ClassType* type);

jnc_ClassPtrType*
jnc_ClassType_getClassPtrType(
    jnc_ClassType* type,
    jnc_TypeKind typeKind,
    jnc_ClassPtrTypeKind ptrTypeKind,
    uint_t flags
);

jnc_ClassPtrTypeKind
jnc_ClassPtrType_getPtrTypeKind(jnc_ClassPtrType* type);

jnc_ClassType*
jnc_ClassPtrType_getTargetType(jnc_ClassPtrType* type);

jnc_FunctionPtrType*
jnc_MulticastClassType_getTargetType(jnc_MulticastClassType* type);

static
jnc_FunctionType*
jnc_MulticastClassType_getFunctionType(jnc_MulticastClassType* type);

jnc_Function*
jnc_MulticastClassType_getMethod(
    jnc_MulticastClassType* type,
    jnc_MulticastMethodKind method
);

jnc_FunctionPtrType*
jnc_McSnapshotClassType_getTargetType(jnc_McSnapshotClassType* type);

static
jnc_FunctionType*
jnc_McSnapshotClassType_getFunctionType(jnc_McSnapshotClassType* type);

jnc_Function*
jnc_McSnapshotClassType_getMethod(
    jnc_McSnapshotClassType* type,
    jnc_McSnapshotMethodKind method
);

static
bool_t
jnc_isClassType(
    jnc_Type* type,
    jnc_ClassTypeKind classTypeKind
);

static
bool_t
jnc_isOpaqueClassType(jnc_Type* type);

static
bool_t
jnc_isClosureClassType(jnc_Type* type);

static
bool_t
jnc_isDestructibleClassType(jnc_Type* type);

static
void*
jnc_getMulticastCallMethodMachineCode(jnc_Multicast* multicast);

Detailed Documentation

Class type is used to describe a class in Jancy.

Unlike structs and unions, classes can contain destructors and virtual functions.