Library loading

Imagine allows the loading of dynamic libraries and the description of function call interfaces between libraries and host applications. The host starts by creating an interface and then load function pointers in to it. It then loads a library that can access these functions pointers to comunicate with the host application. The same interface can be used for multiple loaded libraries.


IInterface *imagine_library_interface_create();

Description: Create an interface.


void imagine_library_interface_destroy(IInterface *i);

Description: Destroy an interface.


void imagine_library_interface_register(IInterface *i, void *funtion_pointer, char *name);

Description: load a function pointer with a name in to identy fy it in to an interface


int imagine_library_interface_count(IInterface *i);

Description: Find ount hown many functions are available in the interface.


char *imagine_library_interface_list(IInterface *i, uint number);

Description: Get the name of a specific function in the interface.


void *imagine_library_interface_get_by_number(IInterface *i, uint number);

Description: Get the function pointer belonging to a specific number from an interface.


void *imagine_library_interface_get_by_name(IInterface *i, char *name);

Description: Look up a function pointer by name from an interface. Returns NULL is not available


ILib *imagine_library_load(char *path, IInterface *i, char *interface_name);

Description: Load a library.


void imagine_library_unload(ILib *lib, boolean interface_delete);

Description: Deletes a library. if interface_delete is set top TRUE, the interface used to load the library will als be deleted