Ejemplo n.º 1
0
/*ARGSUSED*/
static int
p_import(value library, type tlib, value import_mod, type tim)
{
    module_item	*export_prop, *import_prop;
    pri		*pe, *pi;
    didlist	*lib_scan;

    Check_Module_And_Access(import_mod, tim);
    Check_Module(tlib, library);

    a_mutex_lock(&ModuleLock);

    export_prop = ModuleItem(library.did);
    import_prop = ModuleItem(import_mod.did);

    /* check that the module is not already imported			*/
    lib_scan = import_prop->imports;
    while (lib_scan)
    {
	if (lib_scan->name == library.did)
	{
	    a_mutex_unlock(&ModuleLock);
	    Succeed_; /* the library is already imported		*/
	}
	lib_scan = lib_scan->next;
    }

    /* add library to the lists of the mods imported by import_mod	*/
    _add_module(library.did, &(import_prop->imports));

    /* now perform the pending imports					*/
    resolve_pending_imports(import_prop->procedures);

    a_mutex_unlock(&ModuleLock);
    Succeed_;
}
Ejemplo n.º 2
0
Definition::Definition(int seq, const char *name, InitFunction init, int order) {
    _add_module(this, seq, order, new module_info{name, init});
}