Type

This type is the root of type hierarchy in Jancy. All the other types are inherited from it.

#include <jnc_Type.h>

// enums

enum jnc_DataPtrTypeKind;
enum jnc_PtrTypeFlag;
enum jnc_StdType;
enum jnc_TypeFlag;
enum jnc_TypeKind;
enum jnc_TypeKindFlag;

// structs

struct jnc_Type;

// global functions

static
bool_t
jnc_isAutoSizeArrayType(jnc_Type* type);

static
bool_t
jnc_isCharArrayType(jnc_Type* type);

static
bool_t
jnc_isCharArrayRefType(jnc_Type* type);

static
bool_t
jnc_isConstructibleType(jnc_Type* type);

uint_t
jnc_getTypeKindFlags(jnc_TypeKind typeKind);

const char*
jnc_getPtrTypeFlagString_v(uint_t flags);

const char*
jnc_getDataPtrTypeKindString(jnc_DataPtrTypeKind ptrTypeKind);

jnc_TypeKind
jnc_Type_getTypeKind(jnc_Type* type);

static
uint_t
jnc_Type_getTypeKindFlags(jnc_Type* type);

size_t
jnc_Type_getSize(jnc_Type* type);

const char*
jnc_Type_getTypeString(jnc_Type* type);

const char*
jnc_Type_getTypeStringPrefix(jnc_Type* type);

const char*
jnc_Type_getTypeStringSuffix(jnc_Type* type);

int
jnc_Type_cmp(
    jnc_Type* type,
    jnc_Type* type2
);

jnc_ArrayType*
jnc_Type_getArrayType(
    jnc_Type* type,
    size_t elementCount
);

jnc_DataPtrType*
jnc_Type_getBitFieldDataPtrType(
    jnc_Type* type,
    uint_t bitOffset,
    uint_t bitCount,
    jnc_TypeKind typeKind,
    jnc_DataPtrTypeKind ptrTypeKind,
    uint_t flags
);

jnc_DataPtrType*
jnc_Type_getDataPtrType(
    jnc_Type* type,
    jnc_TypeKind typeKind,
    jnc_DataPtrTypeKind ptrTypeKind,
    uint_t flags
);

bool_t
jnc_Type_ensureNoImports(jnc_Type* type);

bool_t
jnc_Type_ensureLayout(jnc_Type* type);

void
jnc_Type_markGcRoots(
    jnc_Type* type,
    const void* p,
    jnc_GcHeap* gcHeap
);

jnc_DataPtrTypeKind
jnc_DataPtrType_getPtrTypeKind(jnc_DataPtrType* type);

jnc_Type*
jnc_DataPtrType_getTargetType(jnc_DataPtrType* type);

uint_t
jnc_DataPtrType_getBitOffset(jnc_DataPtrType* type);

uint_t
jnc_DataPtrType_getBitCount(jnc_DataPtrType* type);

static
bool_t
jnc_isCharPtrType(jnc_Type* type);

static
bool_t
jnc_isDerivableTypePtrType(jnc_Type* type);

static
bool_t
jnc_isArrayRefType(jnc_Type* type);

static
bool_t
jnc_isDataPtrType(
    jnc_Type* type,
    jnc_DataPtrTypeKind kind
);