functor_t dict_functor(int pairs) { if ( pairs < CACHED_DICT_FUNCTORS ) { if ( dict_functors[pairs] ) return dict_functors[pairs]; dict_functors[pairs] = lookupFunctorDef(ATOM_dict, pairs*2+1); return dict_functors[pairs]; } else { return lookupFunctorDef(ATOM_dict, pairs*2+1); } }
static void registerBuiltins(const PL_extension *f) { Module m = MODULE_system; for(; f->predicate_name; f++) { Procedure proc; atom_t name = PL_new_atom(f->predicate_name); functor_t fdef = lookupFunctorDef(name, f->arity); PL_unregister_atom(name); if ( (proc = lookupProcedure(fdef, m)) ) { Definition def = proc->definition; set(def, P_FOREIGN|HIDE_CHILDS|P_LOCKED); if ( f->flags & PL_FA_NOTRACE ) clear(def, TRACE_ME); if ( f->flags & PL_FA_TRANSPARENT ) set(def, P_TRANSPARENT); if ( f->flags & PL_FA_NONDETERMINISTIC ) set(def, P_NONDET); if ( f->flags & PL_FA_VARARGS ) set(def, P_VARARG); if ( f->flags & PL_FA_CREF ) set(def, P_FOREIGN_CREF); if ( f->flags & PL_FA_ISO ) set(def, P_ISO); def->impl.foreign.function = f->function; createForeignSupervisor(def, f->function); } else { assert(0); } } }
static int dde_initialise() { if ( ddeInst == (DWORD)NULL ) { if (DdeInitialize(&ddeInst, (PFNCALLBACK)DdeCallback, APPCLASS_STANDARD|CBF_FAIL_ADVISES|CBF_FAIL_POKES| CBF_SKIP_REGISTRATIONS|CBF_SKIP_UNREGISTRATIONS, 0L) != DMLERR_NO_ERROR) { ddeInst = (DWORD) -1; return dde_warning("initialise"); } MODULE_dde = lookupModule(PL_new_atom("win_dde")); FUNCTOR_dde_connect3 = lookupFunctorDef(PL_new_atom("$dde_connect"), 3); FUNCTOR_dde_connect_confirm3 = lookupFunctorDef(PL_new_atom("$dde_connect_confirm"), 3); FUNCTOR_dde_disconnect1 = lookupFunctorDef(PL_new_atom("$dde_disconnect"), 1); FUNCTOR_dde_request4 = lookupFunctorDef(PL_new_atom("$dde_request"), 4); FUNCTOR_dde_execute3 = lookupFunctorDef(PL_new_atom("$dde_execute"), 3); FUNCTOR_error1 = lookupFunctorDef(ATOM_error, 1); } succeed; }
static void dde_init_constants(void) { static int done = FALSE; if ( !done ) /* no worries if this happens twice */ { MODULE_dde = lookupModule(PL_new_atom("win_dde")); FUNCTOR_dde_connect3 = lookupFunctorDef(PL_new_atom("$dde_connect"), 3); FUNCTOR_dde_connect_confirm3 = lookupFunctorDef(PL_new_atom("$dde_connect_confirm"), 3); FUNCTOR_dde_disconnect1 = lookupFunctorDef(PL_new_atom("$dde_disconnect"), 1); FUNCTOR_dde_request4 = lookupFunctorDef(PL_new_atom("$dde_request"), 4); FUNCTOR_dde_execute3 = lookupFunctorDef(PL_new_atom("$dde_execute"), 3); FUNCTOR_error1 = lookupFunctorDef(ATOM_error, 1); done = TRUE; } }