Extension Libraries Subsystem
// typedefs
typedef void jnc_ExtensionLib_AddSourcesFunc(jnc_Module *module);
typedef void jnc_ExtensionLib_AddOpaqueClassTypeInfosFunc(jnc_Module *module);
typedef bool_t jnc_ExtensionLib_MapAddressesFunc(jnc_Module *module);
typedef void jnc_ExtensionLib_UpdateCapabilitiesFunc();
typedef jnc_ExtensionLib* jnc_DynamicExtensionLibMainFunc(jnc_DynamicExtensionLibHost *host);
typedef bool_t jnc_DynamicExtensionLibUnloadFunc();
typedef size_t jnc_StdLib_StdInputFunc(
void *p,
size_t size
);
typedef size_t jnc_StdLib_StdOutputFunc(
const void *p,
size_t size
);
// structs
struct jnc_DynamicExtensionLibHost;
struct jnc_ExtensionLib;
// global variables
JNC_SELECT_ANY char jnc_g_dynamicExtensionLibMainFuncName[] = "jncDynamicExtensionLibMain";
JNC_SELECT_ANY char jnc_g_dynamicExtensionLibUnloadFuncName[] = "jncDynamicExtensionLibUnload";
// global functions
jnc_ExtensionLib*
jnc_CoreLib_getLib();
jnc_ExtensionLib*
jnc_IntrospectionLib_getLib();
jnc_ExtensionLib*
jnc_StdLib_getLib();
jnc_ExtensionLib*
jnc_SysLib_getLib();
void
jnc_StdLib_setStdIo(
jnc_StdLib_StdInputFunc* getsFunc,
jnc_StdLib_StdOutputFunc* printOutFunc,
jnc_StdLib_StdOutputFunc* printErrFunc
);
// macros
#define JNC_BEGIN_CLASS_TYPE_VTABLE(TypePrefix)
#define JNC_BEGIN_LIB_FUNCTION_MAP(LibPrefix)
#define JNC_BEGIN_LIB_OPAQUE_CLASS_TYPE_TABLE(LibPrefix)
#define JNC_BEGIN_LIB_SOURCE_FILE_TABLE(LibPrefix)
#define JNC_BEGIN_OPAQUE_CLASS_REQUIRE_TABLE(TypePrefix)
#define JNC_BEGIN_TYPE_FUNCTION_MAP(TypePrefix)
#define JNC_CLASS_TYPE_VTABLE_ENTRY(function)
#define JNC_DECLARE_CLASS_TYPE(TypePrefix)
#define JNC_DECLARE_CLASS_TYPE_STATIC_METHODS(TypePrefix)
#define JNC_DECLARE_LIB(LibPrefix)
#define JNC_DECLARE_OPAQUE_CLASS_TYPE(TypePrefix)
#define JNC_DECLARE_OPAQUE_CLASS_TYPE_STATIC_METHODS(TypePrefix)
#define JNC_DECLARE_TYPE(TypePrefix)
#define JNC_DECLARE_TYPE_EX( \
TypePrefix, \
JncType \
)
#define JNC_DECLARE_TYPE_STATIC_METHODS(TypePrefix)
#define JNC_DECLARE_TYPE_STATIC_METHODS_EX( \
TypePrefix, \
JncType \
)
#define JNC_DEFINE_CLASS_TYPE( \
TypePrefix, \
qualifiedName, \
libGuid, \
cacheSlot \
)
#define JNC_DEFINE_LIB( \
LibPrefix, \
libGuid, \
libName, \
libDescription \
)
#define JNC_DEFINE_LIB_EX( \
LibPrefix, \
libGuid, \
libName, \
libDescription, \
updateCapabilities \
)
#define JNC_DEFINE_OPAQUE_CLASS_TYPE( \
TypePrefix, \
qualifiedName, \
libGuid, \
cacheSlot, \
Type, \
markOpaqueGcRootsFunc \
)
#define JNC_DEFINE_OPAQUE_CLASS_TYPE_EX( \
TypePrefix, \
qualifiedName, \
libGuid, \
cacheSlot, \
Type, \
markOpaqueGcRootsFunc, \
requireOpaqueItemsFunc, \
isNonCreatable \
)
#define JNC_DEFINE_OPAQUE_CLASS_TYPE_NC( \
TypePrefix, \
qualifiedName, \
libGuid, \
cacheSlot, \
Type, \
markOpaqueGcRootsFunc \
)
#define JNC_DEFINE_OPAQUE_CLASS_TYPE_REQ( \
TypePrefix, \
qualifiedName, \
libGuid, \
cacheSlot, \
Type, \
markOpaqueGcRootsFunc \
)
#define JNC_DEFINE_TYPE( \
TypePrefix, \
qualifiedName, \
libGuid, \
cacheSlot \
)
#define JNC_DEFINE_TYPE_EX( \
TypePrefix, \
JncType, \
qualifiedName, \
libGuid, \
cacheSlot \
)
#define JNC_END_CLASS_TYPE_VTABLE()
#define JNC_END_LIB_FUNCTION_MAP()
#define JNC_END_LIB_OPAQUE_CLASS_TYPE_TABLE()
#define JNC_END_LIB_SOURCE_FILE_TABLE()
#define JNC_END_OPAQUE_CLASS_REQUIRE_TABLE()
#define JNC_END_TYPE_FUNCTION_MAP()
#define JNC_FIND_ITEM_IMPL( \
name, \
findMethod, \
itemKind, \
ItemType, \
item \
)
#define JNC_LIB_IMPORT(fileName)
#define JNC_LIB_OPAQUE_CLASS_TYPE_TABLE_ENTRY(TypePrefix)
#define JNC_LIB_REQUIRE( \
itemKind, \
name \
)
#define JNC_LIB_REQUIRE_EX( \
itemKind, \
name, \
flags \
)
#define JNC_LIB_REQUIRE_TYPE( \
typeKind, \
name \
)
#define JNC_LIB_REQUIRE_TYPE_EX( \
typeKind, \
name, \
flags \
)
#define JNC_LIB_SOURCE_FILE( \
fileName, \
sourceVar \
)
#define JNC_MAP_AUTOGET_PROPERTY( \
name, \
setter \
)
#define JNC_MAP_AUTOGET_PROPERTY_IMPL( \
name, \
findMethod, \
setter \
)
#define JNC_MAP_AUTOGET_PROPERTY_Q( \
name, \
setter \
)
#define JNC_MAP_BINARY_OPERATOR( \
opKind, \
p \
)
#define JNC_MAP_CALL_OPERATOR(p)
#define JNC_MAP_CAST_OPERATOR( \
i, \
p \
)
#define JNC_MAP_CONSTRUCTOR(p)
#define JNC_MAP_CONST_PROPERTY( \
name, \
getter \
)
#define JNC_MAP_CONST_PROPERTY_IMPL( \
name, \
findMethod, \
getter \
)
#define JNC_MAP_CONST_PROPERTY_Q( \
name, \
getter \
)
#define JNC_MAP_DESTRUCTOR(p)
#define JNC_MAP_FUNCTION( \
name, \
p \
)
#define JNC_MAP_FUNCTION_IMPL( \
function, \
p \
)
#define JNC_MAP_FUNCTION_Q( \
name, \
p \
)
#define JNC_MAP_OVERLOAD(p)
#define JNC_MAP_OVERLOADABLE_FUNCTION( \
item, \
p \
)
#define JNC_MAP_PROPERTY( \
name, \
getter, \
setter \
)
#define JNC_MAP_PROPERTY_GETTER( \
prop, \
p \
)
#define JNC_MAP_PROPERTY_IMPL( \
name, \
findMethod, \
getter, \
setter \
)
#define JNC_MAP_PROPERTY_Q( \
name, \
getter, \
setter \
)
#define JNC_MAP_PROPERTY_SETTER( \
prop, \
p \
)
#define JNC_MAP_TYPE(TypePrefix)
#define JNC_MAP_TYPE_IMPL( \
TypePrefix, \
isRequired \
)
#define JNC_MAP_TYPE_REQ(TypePrefix)
#define JNC_MAP_UNARY_OPERATOR( \
opKind, \
p \
)
#define JNC_MAP_VARIABLE( \
name, \
p \
)
#define JNC_MAP_VARIABLE_IMPL( \
name, \
findMethod, \
p \
)
#define JNC_MAP_VARIABLE_Q( \
name, \
p \
)
#define JNC_OPAQUE_CLASS_REQUIRE( \
itemKind, \
name \
)
#define JNC_OPAQUE_CLASS_REQUIRE_TYPE( \
typeKind, \
name \
)
#define jnc_pvoid_cast(x)