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

95 lines
1.8 KiB
C
Raw Normal View History

2014-05-12 17:49:11 +01:00
/*************************************************************************
* *
* YAP Prolog *
* *
* Yap Prolog was developed at NCCUP - Universidade do Porto *
* *
* Copyright L.Damas, V.S.Costa and Universidade do Porto 1985-2014 *
* *
*************************************************************************/
2015-04-13 13:28:17 +01:00
/**
2015-01-04 23:58:23 +00:00
@{
2015-04-13 13:28:17 +01:00
2015-01-04 23:58:23 +00:00
@file swi.h
2014-05-12 17:49:11 +01:00
@defgroup swi-c-interface SWI-Prolog Foreign Language Interface
2018-05-10 23:27:41 +01:00
@ingroup fli_c_cxx
2014-05-12 17:49:11 +01:00
2014-05-14 10:01:11 +01:00
*
* @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.
2014-05-12 17:49:11 +01:00
*/
2015-06-19 01:29:16 +01:00
#ifndef SWI_H
#define SWI_H 1
#include "SWI-Prolog.h"
2010-11-30 21:59:45 +00:00
void Yap_swi_install(void);
void Yap_install_blobs(void);
2018-02-23 14:09:58 +00:00
2010-11-30 21:59:45 +00:00
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;
}
2015-06-19 01:29:16 +01:00
#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;
}
2015-08-07 22:57:53 +01:00
static inline functor_t
FunctorToSWIFunctor(Functor f)
{
return (functor_t)f;
}
2015-06-19 01:29:16 +01:00
static inline Functor
SWIFunctorToFunctor(functor_t f)
{
return (Functor)f;
}
2013-11-21 00:22:03 +00:00
#define isDefinedProcedure(pred) TRUE // TBD
2014-05-14 10:01:11 +01:00
2015-06-19 01:29:16 +01:00
int Yap_write_blob(AtomEntry *ref, FILE *stream);
#endif
2014-05-14 10:01:11 +01:00
/**
@}
*/