This repository has been archived on 2023-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
yap-6.3/library/dialect/swi/fli/swi.h

63 lines
1.1 KiB
C
Raw Normal View History

2010-11-30 21:59:45 +00:00
void Yap_swi_install(void);
void Yap_install_blobs(void);
typedef struct open_query_struct {
int open;
int state;
YAP_Term *g;
PredEntry *pe;
2010-11-30 21:59:45 +00:00
yamop *p, *cp;
jmp_buf env;
2013-01-18 14:26:24 +00:00
int flags;
YAP_dogoalinfo h;
2010-11-30 21:59:45 +00:00
} open_query;
#define addr_hash(V) (((CELL) (V)) >> 4 & (N_SWI_HASH-1))
static inline void
add_to_hash(Int i, ADDR key)
{
2013-10-04 13:22:00 +01:00
2010-11-30 21:59:45 +00:00
UInt h = addr_hash(key);
while (SWI_ReverseHash[h].key) {
h = (h+1)%N_SWI_HASH;
}
SWI_ReverseHash[h].key = key;
SWI_ReverseHash[h].pos = i;
}
static atom_t
in_hash(ADDR key)
{
UInt h = addr_hash(key);
while (SWI_ReverseHash[h].key) {
if (SWI_ReverseHash[h].key == key)
return SWI_ReverseHash[h].pos;
h = (h+1)%N_SWI_HASH;
}
return 0;
}
static inline Term
SWIModuleToModule(module_t m)
{
CACHE_REGS
2010-11-30 21:59:45 +00:00
if (m)
return MkAtomTerm(m->AtomOfME);
2010-11-30 21:59:45 +00:00
if (CurrentModule)
return CurrentModule;
return USER_MODULE;
}
static inline functor_t
FunctorToSWIFunctor(Functor at)
{
atom_t ats;
if ((ats = in_hash((ADDR)at)))
return (functor_t)((CELL)ats*4+2);
2010-11-30 21:59:45 +00:00
return (functor_t)at;
}
2013-11-21 00:22:03 +00:00
#define isDefinedProcedure(pred) TRUE // TBD