extend SWI interface with PL_toplevel and to handle C++ code.
prolog/0 built-in fixes to parms.h changes.
This commit is contained in:
parent
0179998d60
commit
0ea348c26d
@ -5543,7 +5543,7 @@ p_choicepoint_info(void)
|
|||||||
break;
|
break;
|
||||||
case _Nstop:
|
case _Nstop:
|
||||||
{
|
{
|
||||||
Atom at = AtomProlog;
|
Atom at = AtomLive;
|
||||||
t = MkAtomTerm(at);
|
t = MkAtomTerm(at);
|
||||||
pe = RepPredProp(PredPropByAtom(at, CurrentModule));
|
pe = RepPredProp(PredPropByAtom(at, CurrentModule));
|
||||||
}
|
}
|
||||||
|
@ -111,7 +111,7 @@ p_load_foreign(void)
|
|||||||
|
|
||||||
static Int
|
static Int
|
||||||
p_obj_suffix(void) {
|
p_obj_suffix(void) {
|
||||||
return(Yap_unify(TailOfTerm(Yap_StringToList(YAP_SHLIB_SUFFIX)),ARG1));
|
return(Yap_unify(Yap_StringToList(YAP_SHLIB_SUFFIX),ARG1));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -291,7 +291,7 @@ config.h: parms.h
|
|||||||
parms.h: Makefile
|
parms.h: Makefile
|
||||||
@echo "#define YAP_ROOTDIR \"$(prefix)\"" > $@%
|
@echo "#define YAP_ROOTDIR \"$(prefix)\"" > $@%
|
||||||
@echo "#define YAP_BINDIR \"$(BINDIR)\"" >> $@%
|
@echo "#define YAP_BINDIR \"$(BINDIR)\"" >> $@%
|
||||||
@echo "#define YAP_LIBDIR \"$(LIBDIR)\"" >> $@%
|
@echo "#define YAP_LIBDIR \"$(YAPLIBDIR)\"" >> $@%
|
||||||
@echo "#define YAP_SHAREDIR \"$(SHAREDIR)\"" >> $@%
|
@echo "#define YAP_SHAREDIR \"$(SHAREDIR)\"" >> $@%
|
||||||
@echo "#define YAP_PL_SRCDIR \"$(SHAREDIR)/Yap/pl\"" >> $@%
|
@echo "#define YAP_PL_SRCDIR \"$(SHAREDIR)/Yap/pl\"" >> $@%
|
||||||
@echo "#define YAP_STARTUP \"$(YAPSTARTUP)\"" >> $@%
|
@echo "#define YAP_STARTUP \"$(YAPSTARTUP)\"" >> $@%
|
||||||
|
@ -816,7 +816,7 @@ exec_top_level(int BootMode, YAP_init_args *iap)
|
|||||||
YAP_Atom livegoal;
|
YAP_Atom livegoal;
|
||||||
/* read the bootfile */
|
/* read the bootfile */
|
||||||
do_bootfile (iap->YapPrologBootFile ? iap->YapPrologBootFile : BootFile);
|
do_bootfile (iap->YapPrologBootFile ? iap->YapPrologBootFile : BootFile);
|
||||||
livegoal = YAP_FullLookupAtom("prolog");
|
livegoal = YAP_FullLookupAtom("$live");
|
||||||
/* initialise the top-level */
|
/* initialise the top-level */
|
||||||
if (BootMode == YAP_FULL_BOOT_FROM_PROLOG) {
|
if (BootMode == YAP_FULL_BOOT_FROM_PROLOG) {
|
||||||
char init_file[256];
|
char init_file[256];
|
||||||
@ -855,7 +855,7 @@ exec_top_level(int BootMode, YAP_init_args *iap)
|
|||||||
/* read it before case someone, that is, Ashwin, hides
|
/* read it before case someone, that is, Ashwin, hides
|
||||||
the atom false away ;-).
|
the atom false away ;-).
|
||||||
*/
|
*/
|
||||||
livegoal = YAP_FullLookupAtom("prolog");
|
livegoal = YAP_FullLookupAtom("$live");
|
||||||
atomfalse = YAP_MkAtomTerm (YAP_FullLookupAtom("$false"));
|
atomfalse = YAP_MkAtomTerm (YAP_FullLookupAtom("$false"));
|
||||||
while (YAP_GetValue (livegoal) != atomfalse) {
|
while (YAP_GetValue (livegoal) != atomfalse) {
|
||||||
YAP_Reset();
|
YAP_Reset();
|
||||||
|
@ -13,6 +13,10 @@
|
|||||||
#ifndef _FLI_H_INCLUDED
|
#ifndef _FLI_H_INCLUDED
|
||||||
#define _FLI_H_INCLUDED
|
#define _FLI_H_INCLUDED
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
//=== includes ===============================================================
|
//=== includes ===============================================================
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include <YapInterface.h>
|
#include <YapInterface.h>
|
||||||
@ -406,12 +410,13 @@ extern X_API qid_t PL_open_query(module_t, int, predicate_t, term_t);
|
|||||||
extern X_API int PL_next_solution(qid_t);
|
extern X_API int PL_next_solution(qid_t);
|
||||||
extern X_API void PL_cut_query(qid_t);
|
extern X_API void PL_cut_query(qid_t);
|
||||||
extern X_API void PL_close_query(qid_t);
|
extern X_API void PL_close_query(qid_t);
|
||||||
|
extern X_API int PL_toplevel(void);
|
||||||
extern X_API term_t PL_exception(qid_t);
|
extern X_API term_t PL_exception(qid_t);
|
||||||
extern X_API int PL_call_predicate(module_t, int, predicate_t, term_t);
|
extern X_API int PL_call_predicate(module_t, int, predicate_t, term_t);
|
||||||
extern X_API int PL_call(term_t, module_t);
|
extern X_API int PL_call(term_t, module_t);
|
||||||
extern X_API void PL_register_foreign_in_module(const char *, const char *, int, foreign_t (*)(void), int);
|
extern X_API void PL_register_foreign_in_module(const char *, const char *, int, foreign_t (*)(void), int);
|
||||||
extern X_API void PL_register_extensions(PL_extension *);
|
extern X_API void PL_register_extensions(const PL_extension *);
|
||||||
extern X_API void PL_load_extensions(PL_extension *);
|
extern X_API void PL_load_extensions(const PL_extension *);
|
||||||
extern X_API int PL_handle_signals(void);
|
extern X_API int PL_handle_signals(void);
|
||||||
extern X_API int PL_thread_self(void);
|
extern X_API int PL_thread_self(void);
|
||||||
extern X_API int PL_thread_attach_engine(const PL_thread_attr_t *);
|
extern X_API int PL_thread_attach_engine(const PL_thread_attr_t *);
|
||||||
@ -472,5 +477,9 @@ void swi_install(void);
|
|||||||
X_API int PL_error(const char *pred, int arity, const char *msg, int id, ...);
|
X_API int PL_error(const char *pred, int arity, const char *msg, int id, ...);
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* _FLI_H_INCLUDED */
|
#endif /* _FLI_H_INCLUDED */
|
||||||
|
|
||||||
|
@ -2010,6 +2010,11 @@ X_API int PL_call_predicate(module_t ctx, int flags, predicate_t p, term_t t0)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
X_API int PL_toplevel(void)
|
||||||
|
{
|
||||||
|
return YAP_RunGoal(MkAtomTerm(Yap_FullLookupAtom("$live")));
|
||||||
|
}
|
||||||
|
|
||||||
X_API int PL_call(term_t tp, module_t m)
|
X_API int PL_call(term_t tp, module_t m)
|
||||||
{
|
{
|
||||||
YAP_Term t[2], g;
|
YAP_Term t[2], g;
|
||||||
@ -2047,12 +2052,12 @@ X_API void PL_register_foreign_in_module(const char *module, const char *name, i
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
X_API void PL_register_extensions(PL_extension *ptr)
|
X_API void PL_register_extensions(const PL_extension *ptr)
|
||||||
{
|
{
|
||||||
PL_load_extensions(ptr);
|
PL_load_extensions(ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
X_API void PL_load_extensions(PL_extension *ptr)
|
X_API void PL_load_extensions(const PL_extension *ptr)
|
||||||
{
|
{
|
||||||
/* ignore flags for now */
|
/* ignore flags for now */
|
||||||
while(ptr->predicate_name != NULL) {
|
while(ptr->predicate_name != NULL) {
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
|
|
||||||
true :- true.
|
true :- true.
|
||||||
|
|
||||||
prolog :-
|
'$live' :-
|
||||||
'$init_system',
|
'$init_system',
|
||||||
'$do_live'.
|
'$do_live'.
|
||||||
|
|
||||||
@ -161,7 +161,7 @@ prolog :-
|
|||||||
get_value('$top_level_goal',GA), GA \= [], !,
|
get_value('$top_level_goal',GA), GA \= [], !,
|
||||||
set_value('$top_level_goal',[]),
|
set_value('$top_level_goal',[]),
|
||||||
'$run_atom_goal'(GA),
|
'$run_atom_goal'(GA),
|
||||||
set_value(prolog,'$false').
|
set_value('$live','$false').
|
||||||
'$enter_top_level' :-
|
'$enter_top_level' :-
|
||||||
prompt(_,' ?- '),
|
prompt(_,' ?- '),
|
||||||
prompt(' | '),
|
prompt(' | '),
|
||||||
@ -174,7 +174,7 @@ prolog :-
|
|||||||
prompt(_,' |: '),
|
prompt(_,' |: '),
|
||||||
'$command'((?-Command),Varnames,Pos,top),
|
'$command'((?-Command),Varnames,Pos,top),
|
||||||
'$sync_mmapped_arrays',
|
'$sync_mmapped_arrays',
|
||||||
set_value(prolog,'$false').
|
set_value('$live','$false').
|
||||||
|
|
||||||
'$startup_goals' :-
|
'$startup_goals' :-
|
||||||
get_value('$extend_file_search_path',P), P \= [],
|
get_value('$extend_file_search_path',P), P \= [],
|
||||||
@ -958,7 +958,7 @@ break :-
|
|||||||
format(user_error, '% Break (level ~w)~n', [NBL]),
|
format(user_error, '% Break (level ~w)~n', [NBL]),
|
||||||
'$do_live',
|
'$do_live',
|
||||||
!,
|
!,
|
||||||
set_value(prolog,'$true'),
|
set_value('$live','$true'),
|
||||||
b_setval('$spy_glist',GList),
|
b_setval('$spy_glist',GList),
|
||||||
nb_setval('$spy_gn',SPY_GN),
|
nb_setval('$spy_gn',SPY_GN),
|
||||||
'$set_input'(InpStream), '$set_output'(OutStream),
|
'$set_input'(InpStream), '$set_output'(OutStream),
|
||||||
|
@ -222,6 +222,9 @@ restore(A) :- var(A), !,
|
|||||||
restore(A) :- atom(A), !, name(A,S), '$restore'(S).
|
restore(A) :- atom(A), !, name(A,S), '$restore'(S).
|
||||||
restore(S) :- '$restore'(S).
|
restore(S) :- '$restore'(S).
|
||||||
|
|
||||||
|
prolog :-
|
||||||
|
'$live'.
|
||||||
|
|
||||||
%%% current ....
|
%%% current ....
|
||||||
|
|
||||||
recordaifnot(K,T,R) :-
|
recordaifnot(K,T,R) :-
|
||||||
|
Reference in New Issue
Block a user