Function Type

Function type defines a signature of a function what it the calling convention, which type is the return value of, how many and which type of arguments a function accepts and so on.

#include <jnc_FunctionType.h>

// enums

enum jnc_FunctionPtrTypeKind;
enum jnc_FunctionTypeFlag;

// structs

struct jnc_FunctionType;

// global functions

const char*
jnc_getFunctionTypeFlagString(jnc_FunctionTypeFlag flag);

const char*
jnc_getFunctionPtrTypeKindString(jnc_FunctionPtrTypeKind ptrTypeKind);

bool_t
jnc_FunctionArg_hasDefaultValue(jnc_FunctionArg* arg);

const char*
jnc_FunctionArg_getDefaultValueString_v(jnc_FunctionArg* arg);

jnc_Type*
jnc_FunctionType_getReturnType(jnc_FunctionType* type);

size_t
jnc_FunctionType_getArgCount(jnc_FunctionType* type);

jnc_FunctionArg*
jnc_FunctionType_getArg(
    jnc_FunctionType* type,
    size_t index
);

jnc_FunctionPtrType*
jnc_FunctionType_getFunctionPtrType(
    jnc_FunctionType* type,
    jnc_TypeKind typeKind,
    jnc_FunctionPtrTypeKind ptrTypeKind,
    uint_t flags
);

jnc_FunctionType*
jnc_FunctionType_getShortType(jnc_FunctionType* type);

jnc_FunctionPtrTypeKind
jnc_FunctionPtrType_getPtrTypeKind(jnc_FunctionPtrType* type);

jnc_FunctionType*
jnc_FunctionPtrType_getTargetType(jnc_FunctionPtrType* type);

size_t
jnc_FunctionTypeOverload_getOverloadCount(jnc_FunctionTypeOverload* typeOverload);

jnc_FunctionType*
jnc_FunctionTypeOverload_getOverload(
    jnc_FunctionTypeOverload* typeOverload,
    size_t index
);