Runtime Structures

#include <jnc_RuntimeStructs.h>

// typedefs

typedef void jnc_Scheduler_ScheduleFunc(
    jnc_Scheduler *scheduler,
    jnc_FunctionPtr functionPtr
    );

typedef void jnc_MarkOpaqueGcRootsFunc(
    jnc_IfaceHdr *iface,
    jnc_GcHeap *gcHeap
    );

typedef void jnc_RequireOpaqueItemsFunc(jnc_Module *module);
typedef void jnc_StaticConstructFunc();
typedef void jnc_StaticDestructFunc();
typedef void jnc_ConstructFunc(jnc_IfaceHdr *iface);
typedef void jnc_DestructFunc(jnc_IfaceHdr *iface);

// enums

enum jnc_BoxFlag;

// structs

struct jnc_Box;
struct jnc_CallSite;
struct jnc_DataBox;
struct jnc_DataPtr;
struct jnc_DataPtrValidator;
struct jnc_DetachedDataBox;
struct jnc_FmtLiteral;
struct jnc_FunctionPtr;
struct jnc_GcMutatorThread;
struct jnc_GcShadowStackFrame;
struct jnc_GcShadowStackFrameMapBuffer;
struct jnc_IfaceHdr;
struct jnc_McSnapshot;
struct jnc_Multicast;
struct jnc_OpaqueClassTypeInfo;
struct jnc_PropertyPtr;
struct jnc_Reactor;
struct jnc_ReactorClosure;
struct jnc_Scheduler;
struct jnc_SchedulerVtable;
struct jnc_SjljFrame;
struct jnc_Tls;
struct jnc_TlsVariableTable;

// global variables

JNC_SELECT_ANY jnc_DataPtr jnc_g_nullDataPtr = { 0 };
JNC_SELECT_ANY jnc_FunctionPtr jnc_g_nullFunctionPtr = { 0 };
JNC_SELECT_ANY jnc_PropertyPtr jnc_g_nullPropertyPtr = { 0 };