improve docs and method names
This commit is contained in:
parent
6a9e496bde
commit
b88c8e6b82
20
CXX/yapi.cpp
20
CXX/yapi.cpp
@ -5,7 +5,7 @@
|
|||||||
#include "SWI-Stream.h"
|
#include "SWI-Stream.h"
|
||||||
|
|
||||||
|
|
||||||
YAPAtomTerm::YAPAtomTerm(char *s) { // build string
|
YAPAtomTerm::YAPAtomTerm(char *s) { // build string
|
||||||
BACKUP_H();
|
BACKUP_H();
|
||||||
|
|
||||||
CACHE_REGS
|
CACHE_REGS
|
||||||
@ -20,7 +20,7 @@ YAPAtomTerm::YAPAtomTerm(char *s) { // build string
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
YAPAtomTerm::YAPAtomTerm(char *s, size_t len) { // build string
|
YAPAtomTerm::YAPAtomTerm(char *s, size_t len) { // build string
|
||||||
BACKUP_H();
|
BACKUP_H();
|
||||||
|
|
||||||
CACHE_REGS
|
CACHE_REGS
|
||||||
@ -36,7 +36,7 @@ YAPAtomTerm::YAPAtomTerm(char *s, size_t len) { // build string
|
|||||||
RECOVER_H();
|
RECOVER_H();
|
||||||
}
|
}
|
||||||
|
|
||||||
YAPAtomTerm::YAPAtomTerm(wchar_t *s): YAPTerm() { // build string
|
YAPAtomTerm::YAPAtomTerm(wchar_t *s): YAPTerm() { // build string
|
||||||
BACKUP_H();
|
BACKUP_H();
|
||||||
|
|
||||||
CACHE_REGS
|
CACHE_REGS
|
||||||
@ -51,7 +51,7 @@ YAPAtomTerm::YAPAtomTerm(wchar_t *s): YAPTerm() { // build string
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
YAPAtomTerm::YAPAtomTerm(wchar_t *s, size_t len) : YAPTerm() { // build string
|
YAPAtomTerm::YAPAtomTerm(wchar_t *s, size_t len) : YAPTerm() { // build string
|
||||||
BACKUP_H();
|
BACKUP_H();
|
||||||
|
|
||||||
CACHE_REGS
|
CACHE_REGS
|
||||||
@ -68,7 +68,7 @@ YAPAtomTerm::YAPAtomTerm(wchar_t *s, size_t len) : YAPTerm() { // build string
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
YAPStringTerm::YAPStringTerm(char *s) { // build string
|
YAPStringTerm::YAPStringTerm(char *s) { // build string
|
||||||
BACKUP_H();
|
BACKUP_H();
|
||||||
|
|
||||||
CACHE_REGS
|
CACHE_REGS
|
||||||
@ -83,7 +83,7 @@ YAPStringTerm::YAPStringTerm(char *s) { // build string
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
YAPStringTerm::YAPStringTerm(char *s, size_t len) { // build string
|
YAPStringTerm::YAPStringTerm(char *s, size_t len) { // build string
|
||||||
BACKUP_H();
|
BACKUP_H();
|
||||||
|
|
||||||
CACHE_REGS
|
CACHE_REGS
|
||||||
@ -99,7 +99,7 @@ YAPStringTerm::YAPStringTerm(char *s, size_t len) { // build string
|
|||||||
RECOVER_H();
|
RECOVER_H();
|
||||||
}
|
}
|
||||||
|
|
||||||
YAPStringTerm::YAPStringTerm(wchar_t *s): YAPTerm() { // build string
|
YAPStringTerm::YAPStringTerm(wchar_t *s): YAPTerm() { // build string
|
||||||
BACKUP_H();
|
BACKUP_H();
|
||||||
|
|
||||||
CACHE_REGS
|
CACHE_REGS
|
||||||
@ -114,7 +114,7 @@ YAPStringTerm::YAPStringTerm(wchar_t *s): YAPTerm() { // build string
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
YAPStringTerm::YAPStringTerm(wchar_t *s, size_t len) : YAPTerm() { // build string
|
YAPStringTerm::YAPStringTerm(wchar_t *s, size_t len) : YAPTerm() { // build string
|
||||||
BACKUP_H();
|
BACKUP_H();
|
||||||
|
|
||||||
CACHE_REGS
|
CACHE_REGS
|
||||||
@ -323,7 +323,7 @@ YAPTerm YAPListTerm::car()
|
|||||||
YAPVarTerm::YAPVarTerm() { CACHE_REGS mk( MkVarTerm( ) ); }
|
YAPVarTerm::YAPVarTerm() { CACHE_REGS mk( MkVarTerm( ) ); }
|
||||||
|
|
||||||
|
|
||||||
char *YAPAtom::name(void) {
|
char *YAPAtom::getName(void) {
|
||||||
if (IsWideAtom(a)) {
|
if (IsWideAtom(a)) {
|
||||||
// return an UTF-8 version
|
// return an UTF-8 version
|
||||||
size_t sz = 512;
|
size_t sz = 512;
|
||||||
@ -576,7 +576,7 @@ displayWithJava(int c)
|
|||||||
if (c == '\n' ) {
|
if (c == '\n' ) {
|
||||||
Yap_AndroidBufp[Yap_AndroidSz] = '\0';
|
Yap_AndroidBufp[Yap_AndroidSz] = '\0';
|
||||||
__android_log_print(ANDROID_LOG_INFO, __FUNCTION__, "after char %c:%s %p",c, Yap_AndroidBufp, curren);
|
__android_log_print(ANDROID_LOG_INFO, __FUNCTION__, "after char %c:%s %p",c, Yap_AndroidBufp, curren);
|
||||||
curren->display(Yap_AndroidBufp);
|
curren->run(Yap_AndroidBufp);
|
||||||
Yap_AndroidSz = 0;
|
Yap_AndroidSz = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
101
CXX/yapi.hh
101
CXX/yapi.hh
@ -67,7 +67,7 @@ extern "C" {
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if _MSC_VER || defined(__MINGW32__)
|
#if _MSC_VER || defined(__MINGW32__)
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -100,40 +100,45 @@ class YAPTerm {
|
|||||||
friend class YAPApplTerm;
|
friend class YAPApplTerm;
|
||||||
friend class YAPPairTerm;
|
friend class YAPPairTerm;
|
||||||
friend class YAPListTerm;
|
friend class YAPListTerm;
|
||||||
|
friend class YAPQuery;
|
||||||
protected:
|
protected:
|
||||||
yhandle_t t;
|
yhandle_t t; /// handle to term, equivalent to term_t
|
||||||
void mk(Term t0);
|
void mk(Term t0); /// internal method to convert from term to handle
|
||||||
Term gt();
|
Term gt(); /// get handle and obtain term
|
||||||
YAPTerm(Term tn) { mk( tn ); }
|
YAPTerm(Term tn) { mk( tn ); } /// private method to convert from Term (internal YAP representation) to YAPTerm
|
||||||
|
inline Term term() { return gt(); } /// private method to convert from YAPTerm to Term (internal YAP representation)
|
||||||
public:
|
public:
|
||||||
YAPTerm() { mk(TermNil); } // do nothing constructor
|
// do nothing constructor
|
||||||
|
YAPTerm() { mk(TermNil); }
|
||||||
|
/// integer to term
|
||||||
YAPTerm(intptr_t i);
|
YAPTerm(intptr_t i);
|
||||||
|
/// pointer to term
|
||||||
YAPTerm(void *ptr);
|
YAPTerm(void *ptr);
|
||||||
|
/// parse string s and construct a term.
|
||||||
YAPTerm(char *s) { Term tp ; mk( YAP_ReadBuffer(s,&tp) ); }
|
YAPTerm(char *s) { Term tp ; mk( YAP_ReadBuffer(s,&tp) ); }
|
||||||
/*~YAPTerm(void) {
|
/// extract the tag of a term, after dereferencing.
|
||||||
CACHE_REGS
|
|
||||||
Yap_RecoverSlots(1, t PASS_REGS);
|
|
||||||
}*/
|
|
||||||
Term term() { return gt(); }
|
|
||||||
YAP_tag_t tag();
|
YAP_tag_t tag();
|
||||||
|
/// copy the term ( term copy )
|
||||||
YAPTerm deepCopy();
|
YAPTerm deepCopy();
|
||||||
//const YAPTerm *vars();
|
//const YAPTerm *vars();
|
||||||
|
/// this term is == to t1
|
||||||
bool exactlyEqual(YAPTerm t1);
|
bool exactlyEqual(YAPTerm t1);
|
||||||
bool unify(YAPTerm t1);
|
bool unify(YAPTerm t1); /// t = t1
|
||||||
bool unifiable(YAPTerm t1);
|
bool unifiable(YAPTerm t1); /// we can unify t and t1
|
||||||
bool variant(YAPTerm t1);
|
bool variant(YAPTerm t1); /// t =@= t1, the two terms are equal up to variable renaming
|
||||||
intptr_t hash(size_t sz, size_t depth, bool variant);
|
intptr_t hash(size_t sz, size_t depth, bool variant); /// term hash,
|
||||||
bool isVar() { return IsVarTerm( gt() ); }
|
bool isVar() { return IsVarTerm( gt() ); } /// type check for unbound
|
||||||
bool isAtom() { return IsAtomTerm( gt() ); }
|
bool isAtom() { return IsAtomTerm( gt() ); } /// type check for atom
|
||||||
bool isInteger() { return IsIntegerTerm( gt() ); }
|
bool isInteger() { return IsIntegerTerm( gt() ); } /// type check for integer
|
||||||
bool isFloat() { return IsFloatTerm( gt() ); }
|
bool isFloat() { return IsFloatTerm( gt() ); } /// type check for floating-point
|
||||||
bool isCompound() { return !(IsVarTerm( gt() ) || IsNumTerm( gt() )); }
|
bool isString() { return IsStringTerm( gt() ); } /// type check for a string " ... "
|
||||||
bool isAppl() { return IsApplTerm( gt() ); }
|
bool isCompound() { return !(IsVarTerm( gt() ) || IsNumTerm( gt() )); } /// is a primitive term
|
||||||
bool isPair() { return IsPairTerm( gt() ); }
|
bool isAppl() { return IsApplTerm( gt() ); } /// is a structured term
|
||||||
bool isGround() { return Yap_IsGroundTerm( gt() ); }
|
bool isPair() { return IsPairTerm( gt() ); } /// is a pair term
|
||||||
bool isList() { return Yap_IsListTerm( gt() ); }
|
bool isGround() { return Yap_IsGroundTerm( gt() ); } /// term is ground
|
||||||
bool isString() { return IsStringTerm( gt() ); }
|
bool isList() { return Yap_IsListTerm( gt() ); } /// term is a list
|
||||||
|
|
||||||
|
/// extract the argument i of the term, where i in 1...arity
|
||||||
inline YAPTerm getArg(int i) {
|
inline YAPTerm getArg(int i) {
|
||||||
Term t0 = gt();
|
Term t0 = gt();
|
||||||
if (IsApplTerm(t0))
|
if (IsApplTerm(t0))
|
||||||
@ -146,6 +151,8 @@ public:
|
|||||||
}
|
}
|
||||||
return YAPTerm((Term)0);
|
return YAPTerm((Term)0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// return a string with a textual representation of the term
|
||||||
char *text();
|
char *text();
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -155,8 +162,11 @@ public:
|
|||||||
class YAPVarTerm: public YAPTerm {
|
class YAPVarTerm: public YAPTerm {
|
||||||
YAPVarTerm(Term t) { if (IsVarTerm(t)) mk( t ); }
|
YAPVarTerm(Term t) { if (IsVarTerm(t)) mk( t ); }
|
||||||
public:
|
public:
|
||||||
|
/// constructor
|
||||||
YAPVarTerm();
|
YAPVarTerm();
|
||||||
|
/// get the internal representation
|
||||||
CELL *getVar() { return VarOfTerm( gt() ); }
|
CELL *getVar() { return VarOfTerm( gt() ); }
|
||||||
|
/// is the variable bound to another one
|
||||||
bool unbound() { return IsUnboundVar(VarOfTerm( gt() )); }
|
bool unbound() { return IsUnboundVar(VarOfTerm( gt() )); }
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -243,13 +253,19 @@ class YAPAtom {
|
|||||||
friend class YAPFunctor;
|
friend class YAPFunctor;
|
||||||
friend class YAPAtomTerm;
|
friend class YAPAtomTerm;
|
||||||
Atom a;
|
Atom a;
|
||||||
public:
|
/// construct new YAPAtom from Atom
|
||||||
YAPAtom( Atom at ) { a = at; }
|
YAPAtom( Atom at ) { a = at; }
|
||||||
|
public:
|
||||||
|
/// construct new YAPAtom from string
|
||||||
YAPAtom( char * s) { a = Yap_LookupAtom( s ); }
|
YAPAtom( char * s) { a = Yap_LookupAtom( s ); }
|
||||||
|
/// construct new YAPAtom from wide string
|
||||||
YAPAtom( wchar_t * s) { a = Yap_LookupMaybeWideAtom( s ); }
|
YAPAtom( wchar_t * s) { a = Yap_LookupMaybeWideAtom( s ); }
|
||||||
|
/// construct new YAPAtom from max-length string
|
||||||
YAPAtom( char * s, size_t len) { a = Yap_LookupAtomWithLength( s, len ); }
|
YAPAtom( char * s, size_t len) { a = Yap_LookupAtomWithLength( s, len ); }
|
||||||
|
/// construct new YAPAtom from max-length wide string
|
||||||
YAPAtom( wchar_t * s, size_t len) { a = Yap_LookupMaybeWideAtomWithLength( s, len ); }
|
YAPAtom( wchar_t * s, size_t len) { a = Yap_LookupMaybeWideAtomWithLength( s, len ); }
|
||||||
char *name(void);
|
/// get name of atom
|
||||||
|
char *getName(void);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -257,9 +273,13 @@ public:
|
|||||||
*/
|
*/
|
||||||
class YAPStringTerm: public YAPTerm {
|
class YAPStringTerm: public YAPTerm {
|
||||||
public:
|
public:
|
||||||
|
/// your standard constructor
|
||||||
YAPStringTerm(char *s) ;
|
YAPStringTerm(char *s) ;
|
||||||
|
/// use this one to construct length limited strings
|
||||||
YAPStringTerm(char *s, size_t len);
|
YAPStringTerm(char *s, size_t len);
|
||||||
|
/// construct using wide chars
|
||||||
YAPStringTerm(wchar_t *s) ;
|
YAPStringTerm(wchar_t *s) ;
|
||||||
|
/// construct using length-limited wide chars
|
||||||
YAPStringTerm(wchar_t *s, size_t len);
|
YAPStringTerm(wchar_t *s, size_t len);
|
||||||
const char *getString() { return StringOfTerm( gt() ); }
|
const char *getString() { return StringOfTerm( gt() ); }
|
||||||
};
|
};
|
||||||
@ -502,16 +522,19 @@ public:
|
|||||||
|
|
||||||
// Java support
|
// Java support
|
||||||
|
|
||||||
// This class implements a callback Prolog-side
|
/// This class implements a callback Prolog-side. It will be inherited by the Java or Python
|
||||||
|
/// class that actually implements the callback.
|
||||||
class YAPCallback {
|
class YAPCallback {
|
||||||
public:
|
public:
|
||||||
virtual ~YAPCallback() { printf("~YAPCallback\n"); }
|
virtual ~YAPCallback() { printf("~YAPCallback\n"); }
|
||||||
virtual void run() { __android_log_print(ANDROID_LOG_INFO, __FUNCTION__, "callback"); }
|
virtual void run() { __android_log_print(ANDROID_LOG_INFO, __FUNCTION__, "callback"); }
|
||||||
virtual void displayInWindow(char *s) { }
|
virtual void run(char *s) { }
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief YAP Engine: takes care of constructing an execution environment where we can go executing goals
|
* @brief YAP Engine: takes care of the execution environment
|
||||||
|
where we can go executing goals.
|
||||||
|
*
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
class YAPEngine {
|
class YAPEngine {
|
||||||
@ -531,12 +554,18 @@ public:
|
|||||||
bool script = FALSE,
|
bool script = FALSE,
|
||||||
bool fastBoot = FALSE,
|
bool fastBoot = FALSE,
|
||||||
YAPCallback *callback=(YAPCallback *)NULL); /// construct a new engine, including aaccess to callbacks
|
YAPCallback *callback=(YAPCallback *)NULL); /// construct a new engine, including aaccess to callbacks
|
||||||
~YAPEngine() { delYAPCallback(); } /// kill engine
|
/// kill engine
|
||||||
void delYAPCallback() { _callback = 0; } /// remove current callback
|
~YAPEngine() { delYAPCallback(); }
|
||||||
void setYAPCallback(YAPCallback *cb) { delYAPCallback(); _callback = cb; __android_log_print(ANDROID_LOG_INFO, __FILE__, "after loading startup %p",cb); } /// set a new callback
|
/// remove current callback
|
||||||
void call() { if (_callback) _callback->run(); } /// execute the callback.
|
void delYAPCallback() { _callback = 0; }
|
||||||
void display( char *s) { __android_log_print(ANDROID_LOG_INFO, __FUNCTION__, "bef calling disp %s %p",s, _callback); if (_callback) _callback->displayInWindow(s); } /// execute the callback.
|
/// set a new callback
|
||||||
YAPQuery *query( char *s ); /// build a query on the engine
|
void setYAPCallback(YAPCallback *cb) { delYAPCallback(); _callback = cb; __android_log_print(ANDROID_LOG_INFO, __FILE__, "after loading startup %p",cb); }
|
||||||
|
/// execute the callback.
|
||||||
|
void run() { if (_callback) _callback->run(); }
|
||||||
|
/// execute the callback with a text argument.
|
||||||
|
void run( char *s) { __android_log_print(ANDROID_LOG_INFO, __FUNCTION__, "bef calling disp %s %p",s, _callback); if (_callback) _callback->run(s); }
|
||||||
|
/// build a query on the engine
|
||||||
|
YAPQuery *query( char *s );
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Reference in New Issue
Block a user