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

94 lines
1.8 KiB
C

/*************************************************************************
* *
* YAP Prolog *
* *
* Yap Prolog was developed at NCCUP - Universidade do Porto *
* *
* Copyright L.Damas, V.S.Costa and Universidade do Porto 1985-2014 *
* *
*************************************************************************/
/**
@{
@file swi.h
@defgroup swi-c-interface SWI-Prolog Foreign Language Interface
@ingroup fli_c_cx
*
* @tableofcontents
*
* A reimplementation of Jan Wielemaker's SWI-Prolog C-language interface, it supports
* most of the functionality in the original implementation. It allows for:
*
* - Term Construction, Access, and Unification
* - Manipulation of Atoms, Strings, Lists of Codes and Lists of Atoms
* - Query evaluation
* - Thread and Prolog engine management
* - Data-Base Access
*
* In this interface, all Prolog data known by C is referenced through term references (term_t), hence
* Prolog has all the information necessary to perform its memory management without special precautions
* from the C programmer.
*/
#ifndef SWI_H
#define SWI_H 1
#include "SWI-Prolog.h"
void Yap_swi_install(void);
void Yap_install_blobs(void);
static inline Term
SWIModuleToModule(module_t m)
{
CACHE_REGS
if (m)
return MkAtomTerm(m->AtomOfME);
if (CurrentModule)
return CurrentModule;
return USER_MODULE;
}
#ifdef YATOM_H
static inline atom_t
AtomToSWIAtom(Atom at)
{
return (atom_t)at;
}
#endif
static inline Atom
SWIAtomToAtom(atom_t at)
{
return (Atom)at;
}
static inline functor_t
FunctorToSWIFunctor(Functor f)
{
return (functor_t)f;
}
static inline Functor
SWIFunctorToFunctor(functor_t f)
{
return (Functor)f;
}
#define isDefinedProcedure(pred) TRUE // TBD
int Yap_write_blob(AtomEntry *ref, FILE *stream);
#endif
/**
@}
*/