exo support
This commit is contained in:
parent
1207205493
commit
8c8392b5da
14
pl/boot.yap
14
pl/boot.yap
@ -1042,6 +1042,20 @@ bootstrap(F) :-
|
|||||||
true
|
true
|
||||||
).
|
).
|
||||||
|
|
||||||
|
'$loop'(Stream,exo) :-
|
||||||
|
prompt1('| '), prompt(_,'| '),
|
||||||
|
'$current_module'(OldModule),
|
||||||
|
repeat,
|
||||||
|
'$system_catch'(dbload_from_stream(Stream, OldModule, exo), '$db_load', Error,
|
||||||
|
user:'$LoopError'(Error, Status)),
|
||||||
|
!.
|
||||||
|
'$loop'(Stream,db) :-
|
||||||
|
prompt1('| '), prompt(_,'| '),
|
||||||
|
'$current_module'(OldModule),
|
||||||
|
repeat,
|
||||||
|
'$system_catch'(dbload_from_stream(Stream, OldModule, db), '$db_load', Error,
|
||||||
|
user:'$LoopError'(Error, Status)),
|
||||||
|
!.
|
||||||
'$loop'(Stream,Status) :-
|
'$loop'(Stream,Status) :-
|
||||||
(
|
(
|
||||||
Status = top
|
Status = top
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
% qcompile(true,false)
|
% qcompile(true,false)
|
||||||
% silent(true,false) => implemented
|
% silent(true,false) => implemented
|
||||||
% stream(Stream) => implemented
|
% stream(Stream) => implemented
|
||||||
% consult(consult,reconsult) => implemented
|
% consult(consult,reconsult,exo,db) => implemented
|
||||||
% compilation_mode(compact,source,assert_all) => implemented
|
% compilation_mode(compact,source,assert_all) => implemented
|
||||||
%
|
%
|
||||||
load_files(Files,Opts) :-
|
load_files(Files,Opts) :-
|
||||||
@ -114,6 +114,8 @@ load_files(Files,Opts) :-
|
|||||||
'$process_lf_opt'(compilation_mode(compact),_,_,_,_,_,_,_,_,_,compact,_,_,_).
|
'$process_lf_opt'(compilation_mode(compact),_,_,_,_,_,_,_,_,_,compact,_,_,_).
|
||||||
'$process_lf_opt'(compilation_mode(assert_all),_,_,_,_,_,_,_,_,_,assert_all,_,_,_).
|
'$process_lf_opt'(compilation_mode(assert_all),_,_,_,_,_,_,_,_,_,assert_all,_,_,_).
|
||||||
'$process_lf_opt'(consult(reconsult),_,_,_,_,_,_,_,_,_,_,reconsult,_,_).
|
'$process_lf_opt'(consult(reconsult),_,_,_,_,_,_,_,_,_,_,reconsult,_,_).
|
||||||
|
'$process_lf_opt'(consult(exo),_,_,_,_,_,_,_,_,_,_,exo,_,_).
|
||||||
|
'$process_lf_opt'(consult(db),_,_,_,_,_,_,_,_,_,_,db,_,_).
|
||||||
'$process_lf_opt'(consult(consult),_,_,_,_,_,_,_,_,_,_,consult,_,_).
|
'$process_lf_opt'(consult(consult),_,_,_,_,_,_,_,_,_,_,consult,_,_).
|
||||||
'$process_lf_opt'(stream(Stream),_,_,_,_,_,_,Stream,_,_,_,_,Files,Call) :-
|
'$process_lf_opt'(stream(Stream),_,_,_,_,_,_,Stream,_,_,_,_,Files,Call) :-
|
||||||
/* ( is_stream(Stream) -> true ; '$do_error'(domain_error(stream,Stream),Call) ), */
|
/* ( is_stream(Stream) -> true ; '$do_error'(domain_error(stream,Stream),Call) ), */
|
||||||
@ -204,6 +206,12 @@ consult(Fs) :-
|
|||||||
reconsult(Fs) :-
|
reconsult(Fs) :-
|
||||||
'$load_files'(Fs, [], reconsult(Fs)).
|
'$load_files'(Fs, [], reconsult(Fs)).
|
||||||
|
|
||||||
|
exo_files(Fs) :-
|
||||||
|
'$load_files'(Fs, [consult(exo), if(not_loaded)], exo_files(Fs)).
|
||||||
|
|
||||||
|
db_files(Fs) :-
|
||||||
|
'$load_files'(Fs, [consult(db), if(not_loaded)], exo_files(Fs)).
|
||||||
|
|
||||||
use_module(F) :-
|
use_module(F) :-
|
||||||
'$load_files'(F, [if(not_loaded)], use_module(F)).
|
'$load_files'(F, [if(not_loaded)], use_module(F)).
|
||||||
|
|
||||||
|
@ -20,6 +20,41 @@
|
|||||||
|
|
||||||
:- dynamic dbloading/6, dbprocess/2.
|
:- dynamic dbloading/6, dbprocess/2.
|
||||||
|
|
||||||
|
dbload_from_stream(R, M0, Type) :-
|
||||||
|
read(R,T),
|
||||||
|
( T = end_of_file -> !, close_dbload(R, Type);
|
||||||
|
dbload_count(T, M0),
|
||||||
|
fail
|
||||||
|
).
|
||||||
|
|
||||||
|
close_dbload(R, exo) :-
|
||||||
|
retract(dbloading(Na,Arity,M,T,NaAr,_)),
|
||||||
|
nb_getval(NaAr,Size),
|
||||||
|
exo_db_get_space(T, M, Size, Handle),
|
||||||
|
assertz(dbloading(Na,Arity,M,T,NaAr,Handle)),
|
||||||
|
nb_setval(NaAr,0),
|
||||||
|
fail.
|
||||||
|
close_dbload(R, exo) :-
|
||||||
|
seek(R, 0, bof, _),
|
||||||
|
exodb_add_facts(R, M),
|
||||||
|
fail.
|
||||||
|
close_dbload(R, mega) :-
|
||||||
|
retract(dbloading(Na,Arity,M,T,NaAr,_)),
|
||||||
|
nb_getval(NaAr,Size),
|
||||||
|
dbload_get_space(T, M, Size, Handle),
|
||||||
|
assertz(dbloading(Na,Arity,M,T,NaAr,Handle)),
|
||||||
|
nb_setval(NaAr,0),
|
||||||
|
fail.
|
||||||
|
close_dbload(R, mega) :-
|
||||||
|
seek(R, 0, bof, _),
|
||||||
|
dbload_add_facts(R, M),
|
||||||
|
fail.
|
||||||
|
close_dbload(_, _) :-
|
||||||
|
retractall(dbloading(_Na,_Arity,_M,_T,_NaAr,_Handle)),
|
||||||
|
fail.
|
||||||
|
close_dbload(_, _).
|
||||||
|
|
||||||
|
|
||||||
prolog:load_db(Fs) :-
|
prolog:load_db(Fs) :-
|
||||||
'$current_module'(M0),
|
'$current_module'(M0),
|
||||||
prolog_flag(agc_margin,Old,0),
|
prolog_flag(agc_margin,Old,0),
|
||||||
@ -50,6 +85,7 @@ do_dbload(F0, M0, G) :-
|
|||||||
check_dbload_stream(R, M0),
|
check_dbload_stream(R, M0),
|
||||||
close(R).
|
close(R).
|
||||||
|
|
||||||
|
|
||||||
check_dbload_stream(R, M0) :-
|
check_dbload_stream(R, M0) :-
|
||||||
repeat,
|
repeat,
|
||||||
catch(read(R,T), _, fail),
|
catch(read(R,T), _, fail),
|
||||||
|
@ -614,9 +614,11 @@ source_module(Mod) :-
|
|||||||
consult(:),
|
consult(:),
|
||||||
current_predicate(:),
|
current_predicate(:),
|
||||||
current_predicate(?,:),
|
current_predicate(?,:),
|
||||||
|
db_files(:),
|
||||||
depth_bound_call(0,+),
|
depth_bound_call(0,+),
|
||||||
discontiguous(:),
|
discontiguous(:),
|
||||||
ensure_loaded(:),
|
ensure_loaded(:),
|
||||||
|
exo_files(:),
|
||||||
findall(?,0,-),
|
findall(?,0,-),
|
||||||
findall(?,0,-,?),
|
findall(?,0,-,?),
|
||||||
forall(0,0),
|
forall(0,0),
|
||||||
|
Reference in New Issue
Block a user