Module
#include <jnc_Module.h>
// typedefs
typedef bool_t jnc_ModuleCompileErrorHandlerFunc(
void *context,
jnc_ModuleCompileErrorKind errorKind
);
typedef void jnc_AttributeObserverFunc(
void *context,
jnc_ModuleItem *item,
jnc_AttributeBlock *attributeBlock
);
typedef enum jnc_OptLevel nc_OptLevel;
// enums
enum jnc_JitKind;
enum jnc_ModuleCompileErrorKind;
enum jnc_ModuleCompileFlag;
enum jnc_ModuleCompileState;
enum jnc_ModuleRequireFlag;
enum jnc_OptLevel;
// structs
struct jnc_CodeAuthenticatorConfig;
struct jnc_Module;
struct jnc_ModuleConfig;
// global variables
JNC_SELECT_ANY jnc_ModuleConfig jnc_g_defaultModuleConfig = { jnc_JitKind_Auto, jnc_OptLevel_Default, jnc_ModuleCompileFlag_StdFlags, };
// global functions
jnc_Module*
jnc_Module_create();
void
jnc_Module_destroy(jnc_Module* module);
void
jnc_Module_clear(jnc_Module* module);
void
jnc_Module_unloadDynamicLibs(jnc_Module* module);
void
jnc_Module_initialize(
jnc_Module* module,
const char* name,
const jnc_ModuleConfig* config
);
void
jnc_Module_updateCapabilities(jnc_Module* module);
void
jnc_Module_setDynamicExtensionAuthenticatorConfig(
jnc_Module* module,
const jnc_CodeAuthenticatorConfig* config
);
const char*
jnc_Module_getName(jnc_Module* module);
uint_t
jnc_Module_getCompileFlags(jnc_Module* module);
jnc_ModuleCompileState
jnc_Module_getCompileState(jnc_Module* module);
size_t
jnc_Module_getCompileErrorCountLimit(jnc_Module* module);
void
jnc_Module_setCompileErrorCountLimit(
jnc_Module* module,
size_t limit
);
size_t
jnc_Module_getCompileErrorCount(jnc_Module* module);
void
jnc_Module_setCompileErrorHandler(
jnc_Module* module,
jnc_ModuleCompileErrorHandlerFunc* handler,
void* context
);
void
jnc_Module_setAttributeObserver(
jnc_Module* module,
jnc_AttributeObserverFunc* observer,
void* context,
uint_t itemKindMask
);
jnc_GlobalNamespace*
jnc_Module_getGlobalNamespace(jnc_Module* module);
jnc_GlobalNamespace*
jnc_Module_getStdNamespace(
jnc_Module* module,
jnc_StdNamespace stdNamespace
);
jnc_Type*
jnc_Module_getPrimitiveType(
jnc_Module* module,
jnc_TypeKind typeKind
);
jnc_Type*
jnc_Module_getStdType(
jnc_Module* module,
jnc_StdType stdType
);
handle_t
jnc_Module_getExtensionSourceFileIterator(jnc_Module* module);
const char*
jnc_Module_getNextExtensionSourceFile(
jnc_Module* module,
handle_t* iterator
);
jnc_FindModuleItemResult
jnc_Module_findExtensionLibItem(
jnc_Module* module,
const char* name,
const jnc_Guid* libGuid,
size_t itemCacheSlot
);
const char*
jnc_Module_getExtensionLibFilePath(
jnc_Module* module,
jnc_ExtensionLib* lib
);
bool_t
jnc_Module_mapVariable(
jnc_Module* module,
jnc_Variable* variable,
void* p
);
bool_t
jnc_Module_mapFunction(
jnc_Module* module,
jnc_Function* function,
void* p
);
void
jnc_Module_addSource(
jnc_Module* module,
jnc_ExtensionLib* lib,
const char* fileName,
const char* source,
size_t length
);
handle_t
jnc_Module_getImportDirIterator(jnc_Module* module);
const char*
jnc_Module_getNextImportDir(
jnc_Module* module,
handle_t* iterator
);
void
jnc_Module_addImportDir(
jnc_Module* module,
const char* dir
);
bool_t
jnc_Module_addImport(
jnc_Module* module,
const char* fileName
);
void
jnc_Module_addSourceImport(
jnc_Module* module,
const char* fileName,
const char* source,
size_t length
);
void
jnc_Module_addIgnoredImport(
jnc_Module* module,
const char* fileName
);
void
jnc_Module_addOpaqueClassTypeInfo(
jnc_Module* module,
const char* qualifiedName,
const jnc_OpaqueClassTypeInfo* info
);
void
jnc_Module_addStaticLib(
jnc_Module* module,
jnc_ExtensionLib* lib
);
void
jnc_Module_require(
jnc_Module* module,
jnc_ModuleItemKind itemKind,
const char* name,
uint_t flags
);
void
jnc_Module_requireType(
jnc_Module* module,
jnc_TypeKind typeKind,
const char* name,
uint_t flags
);
bool_t
jnc_Module_parse(
jnc_Module* module,
const char* fileName,
const char* source,
size_t length
);
bool_t
jnc_Module_parseFile(
jnc_Module* module,
const char* fileName
);
bool_t
jnc_Module_parseImports(jnc_Module* module);
bool_t
jnc_Module_compile(jnc_Module* module);
bool_t
jnc_Module_optimize(
jnc_Module* module,
uint_t level
);
bool_t
jnc_Module_ensureJitCreated(jnc_Module* module);
bool_t
jnc_Module_jit(jnc_Module* module);
bool_t
jnc_Module_generateDocumentation(
jnc_Module* module,
const char* outputDir
);
const char*
jnc_Module_getLlvmIrString_v(jnc_Module* module);
jnc_CodeAssist*
jnc_Module_generateCodeAssist(
jnc_Module* module,
jnc_CodeAssistKind kind,
jnc_Module* cacheModule,
size_t offset,
const char* source,
size_t length
);
void
jnc_Module_cancelCodeAssist(jnc_Module* module);
jnc_CodeAssist*
jnc_Module_getCodeAssist(jnc_Module* module);