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);