fixes for qly loading.
This commit is contained in:
parent
bcc8fea458
commit
bd35580713
@ -422,36 +422,6 @@ load_files(Files,Opts) :-
|
|||||||
'$lf'(user_input, Mod, _, TOpts) :- !,
|
'$lf'(user_input, Mod, _, TOpts) :- !,
|
||||||
b_setval('$source_file', user_input),
|
b_setval('$source_file', user_input),
|
||||||
'$do_lf'(Mod, user_input, user_input, TOpts).
|
'$do_lf'(Mod, user_input, user_input, TOpts).
|
||||||
'$lf'(File, Mod, _Call, TOpts) :-
|
|
||||||
'$lf_opt'(stream, TOpts, Stream),
|
|
||||||
var( Stream ),
|
|
||||||
H0 is heapused, '$cputime'(T0,_),
|
|
||||||
% check if there is a qly files
|
|
||||||
'$absolute_file_name'(File,[access(read),file_type(qly),file_errors(fail),solutions(first),expand(true)],F,load_files(File)),
|
|
||||||
open( F, read, Stream , [type(binary)] ),
|
|
||||||
( '$q_header'( Stream, Type ),
|
|
||||||
Type == file
|
|
||||||
->
|
|
||||||
time_file64(F, T0F),
|
|
||||||
'$absolute_file_name'(File,[access(read),file_type(prolog),file_errors(fail),solutions(first),expand(true)],FilePl,load_files(File)),
|
|
||||||
time_file64(FilePl, T0Fl),
|
|
||||||
T0F >= T0Fl,
|
|
||||||
!,
|
|
||||||
file_directory_name(F, Dir),
|
|
||||||
working_directory(OldD, Dir),
|
|
||||||
'$msg_level'( TOpts, Verbosity),
|
|
||||||
'$lf_opt'(imports, TOpts, ImportList),
|
|
||||||
'$qload_file'(Stream, Mod, F, FilePl, File, ImportList),
|
|
||||||
close( Stream ),
|
|
||||||
H is heapused-H0, '$cputime'(TF,_), T is TF-T0,
|
|
||||||
'$current_module'(M, Mod),
|
|
||||||
working_directory( _, OldD),
|
|
||||||
print_message(Verbosity, loaded( loaded, F, M, T, H)),
|
|
||||||
'$exec_initialisation_goals'
|
|
||||||
;
|
|
||||||
close( Stream),
|
|
||||||
fail
|
|
||||||
).
|
|
||||||
'$lf'(File, Mod, Call, TOpts) :-
|
'$lf'(File, Mod, Call, TOpts) :-
|
||||||
'$lf_opt'(stream, TOpts, Stream),
|
'$lf_opt'(stream, TOpts, Stream),
|
||||||
b_setval('$source_file', File),
|
b_setval('$source_file', File),
|
||||||
@ -462,29 +432,58 @@ load_files(Files,Opts) :-
|
|||||||
;
|
;
|
||||||
stream_property(Stream, file_name(Y))
|
stream_property(Stream, file_name(Y))
|
||||||
), !,
|
), !,
|
||||||
|
( '$size_stream'(Stream, Pos) -> true ; Pos = 0),
|
||||||
|
'$set_lf_opt'('$source_pos', TOpts, Pos),
|
||||||
'$lf_opt'(reexport, TOpts, Reexport),
|
'$lf_opt'(reexport, TOpts, Reexport),
|
||||||
'$lf_opt'(if, TOpts, If),
|
'$lf_opt'(if, TOpts, If),
|
||||||
( var(If) -> If = true ; true ),
|
( var(If) -> If = true ; true ),
|
||||||
'$lf_opt'(imports, TOpts, Imports),
|
'$lf_opt'(imports, TOpts, Imports),
|
||||||
'$start_lf'(If, Mod, Stream, TOpts, File, Reexport, Imports),
|
'$start_lf'(If, Mod, Stream, TOpts, File, Reexport, Imports),
|
||||||
character_count(Stream, Pos),
|
|
||||||
'$set_lf_opt'('$source_pos', TOpts, Pos),
|
|
||||||
close(Stream).
|
close(Stream).
|
||||||
'$lf'(X, _, Call, _) :-
|
'$lf'(X, _, Call, _) :-
|
||||||
'$do_error'(permission_error(input,stream,X),Call).
|
'$do_error'(permission_error(input,stream,X),Call).
|
||||||
|
|
||||||
'$start_lf'(not_loaded, Mod, Stream, TOpts, UserFile, Reexport,Imports) :-
|
'$start_lf'(not_loaded, Mod, Stream, TOpts, UserFile, Reexport,Imports) :-
|
||||||
'$file_loaded'(Stream, Mod, Imports, TOpts), !,
|
'$file_loaded'(Stream, Mod, Imports, TOpts), !,
|
||||||
'$lf_opt'('$options', TOpts, Opts),
|
'$lf_opt'('$options', TOpts, Opts),
|
||||||
'$lf_opt'('$location', TOpts, ParentF:Line),
|
'$lf_opt'('$location', TOpts, ParentF:Line),
|
||||||
'$loaded'(Stream, UserFile, Mod, ParentF, Line, not_loaded, _, _File, _Dir, Opts),
|
'$loaded'(Stream, UserFile, Mod, ParentF, Line, not_loaded, _, _File, _Dir, Opts),
|
||||||
'$reexport'( TOpts, ParentF, Reexport, Imports, _File ).
|
'$reexport'( TOpts, ParentF, Reexport, Imports, _File ).
|
||||||
'$start_lf'(changed, Mod, Stream, TOpts, UserFile, Reexport, Imports) :-
|
'$start_lf'(changed, Mod, Stream, TOpts, UserFile, Reexport, Imports) :-
|
||||||
'$file_unchanged'(Stream, Mod, Imports, TOpts), !,
|
'$file_unchanged'(Stream, Mod, Imports, TOpts), !,
|
||||||
'$lf_opt'('$options', TOpts, Opts),
|
'$lf_opt'('$options', TOpts, Opts),
|
||||||
'$lf_opt'('$location', TOpts, ParentF:Line),
|
'$lf_opt'('$location', TOpts, ParentF:Line),
|
||||||
'$loaded'(Stream, UserFile, Mod, ParentF, Line, changed, _, _File, _Dir, Opts),
|
'$loaded'(Stream, UserFile, Mod, ParentF, Line, changed, _, File, _Dir, Opts),
|
||||||
'$reexport'( TOpts, ParentF, Reexport, Imports, _File ).
|
'$reexport'( TOpts, ParentF, Reexport, Imports, File ).
|
||||||
|
'$start_lf'(_, Mod, PlStream, TOpts, File, Reexport, ImportList) :-
|
||||||
|
% check if there is a qly file
|
||||||
|
'$absolute_file_name'(File,[access(read),file_type(qly),file_errors(fail),solutions(first),expand(true)],F,qload_file(File)),
|
||||||
|
open( F, read, Stream , [type(binary)] ),
|
||||||
|
H0 is heapused, '$cputime'(T0,_),
|
||||||
|
( '$q_header'( Stream, Type ),
|
||||||
|
Type == file
|
||||||
|
->
|
||||||
|
time_file64(F, T0F),
|
||||||
|
stream_property(PlStream, file_name(FilePl)),
|
||||||
|
time_file64(FilePl, T0Fl),
|
||||||
|
T0F >= T0Fl,
|
||||||
|
!,
|
||||||
|
file_directory_name(F, Dir),
|
||||||
|
working_directory(OldD, Dir),
|
||||||
|
'$msg_level'( TOpts, Verbosity),
|
||||||
|
'$qload_file'(Stream, Mod, F, FilePl, File, ImportList, TOpts),
|
||||||
|
close( Stream ),
|
||||||
|
H is heapused-H0, '$cputime'(TF,_), T is TF-T0,
|
||||||
|
'$current_module'(M, Mod),
|
||||||
|
working_directory( _, OldD),
|
||||||
|
'$lf_opt'('$location', TOpts, ParentF:_Line),
|
||||||
|
'$reexport'( TOpts, ParentF, Reexport, ImportList, File ),
|
||||||
|
print_message(Verbosity, loaded( loaded, F, M, T, H)),
|
||||||
|
'$exec_initialisation_goals'
|
||||||
|
;
|
||||||
|
close( Stream),
|
||||||
|
fail
|
||||||
|
).
|
||||||
'$start_lf'(_, Mod, Stream, TOpts, File, _Reexport, _Imports) :-
|
'$start_lf'(_, Mod, Stream, TOpts, File, _Reexport, _Imports) :-
|
||||||
'$do_lf'(Mod, Stream, File, TOpts).
|
'$do_lf'(Mod, Stream, File, TOpts).
|
||||||
|
|
||||||
@ -722,7 +721,7 @@ db_files(Fs) :-
|
|||||||
'$q_do_save_file'(File, UserF, TOpts ) :-
|
'$q_do_save_file'(File, UserF, TOpts ) :-
|
||||||
'$lf_opt'(qcompile, TOpts, QComp),
|
'$lf_opt'(qcompile, TOpts, QComp),
|
||||||
'$lf_opt'('$source_pos', TOpts, Pos),
|
'$lf_opt'('$source_pos', TOpts, Pos),
|
||||||
( QComp == auto ; QComp == large, Pos > 100*1024),
|
( QComp == auto ; QComp == large, Pos > 100*1024),
|
||||||
'$absolute_file_name'(UserF,[file_type(qly),solutions(first),expand(true)],F,load_files(File)),
|
'$absolute_file_name'(UserF,[file_type(qly),solutions(first),expand(true)],F,load_files(File)),
|
||||||
!,
|
!,
|
||||||
'$qsave_file_'( File, UserF, F ).
|
'$qsave_file_'( File, UserF, F ).
|
||||||
|
16
pl/qly.yap
16
pl/qly.yap
@ -730,7 +730,7 @@ qload_file( F0 ) :-
|
|||||||
'$qload_module'(S , Mod, File, SourceModule)
|
'$qload_module'(S , Mod, File, SourceModule)
|
||||||
;
|
;
|
||||||
Type == file ->
|
Type == file ->
|
||||||
'$qload_file'(S, SourceModule, File, FilePl, F0, all)
|
'$qload_file'(S, SourceModule, File, FilePl, F0, all, TOpts)
|
||||||
),
|
),
|
||||||
close(S),
|
close(S),
|
||||||
working_directory( _, OldD),
|
working_directory( _, OldD),
|
||||||
@ -739,26 +739,26 @@ qload_file( F0 ) :-
|
|||||||
print_message(Verbosity, loaded(EndMsg, File, Mod, T, H)),
|
print_message(Verbosity, loaded(EndMsg, File, Mod, T, H)),
|
||||||
'$exec_initialisation_goals'.
|
'$exec_initialisation_goals'.
|
||||||
|
|
||||||
'$qload_file'(_S, SourceModule, _F, FilePl, _F0, _ImportList) :-
|
'$qload_file'(_S, SourceModule, _F, FilePl, _F0, _ImportList, _TOpts) :-
|
||||||
recorded('$lf_loaded','$lf_loaded'( FilePl, _Age, SourceModule), _),
|
recorded('$lf_loaded','$lf_loaded'( FilePl, _Age, SourceModule), _),
|
||||||
!.
|
!.
|
||||||
'$qload_file'(_S, SourceModule, _F, FilePl, _F0, _ImportList) :-
|
'$qload_file'(_S, SourceModule, _F, FilePl, _F0, _ImportList, _TOpts) :-
|
||||||
( FilePl == user_input -> Age = 0 ; time_file64(FilePl, Age) ),
|
( FilePl == user_input -> Age = 0 ; time_file64(FilePl, Age) ),
|
||||||
recorda('$lf_loaded','$lf_loaded'( FilePl, Age, SourceModule), _),
|
recorda('$lf_loaded','$lf_loaded'( FilePl, Age, SourceModule), _),
|
||||||
fail.
|
fail.
|
||||||
'$qload_file'(S, _SourceModule, _File, _FilePl, _F0, _ImportList) :-
|
'$qload_file'(S, _SourceModule, _File, _FilePl, _F0, _ImportList, _TOpts) :-
|
||||||
'$qload_file_preds'(S),
|
'$qload_file_preds'(S),
|
||||||
fail.
|
fail.
|
||||||
'$qload_file'(_S, SourceModule, F, _FilePl, _F0, _ImportList) :-
|
'$qload_file'(_S, SourceModule, F, _FilePl, _F0, _ImportList, _TOpts) :-
|
||||||
user:'$file_property'( '$lf_loaded'( F, Age, _ ) ),
|
user:'$file_property'( '$lf_loaded'( F, Age, _ ) ),
|
||||||
recordaifnot('$lf_loaded','$lf_loaded'( F, Age, SourceModule), _),
|
recordaifnot('$lf_loaded','$lf_loaded'( F, Age, SourceModule), _),
|
||||||
fail.
|
fail.
|
||||||
'$qload_file'(_S, _SourceModule, _File, FilePl, F0, _ImportList) :-
|
'$qload_file'(_S, _SourceModule, _File, FilePl, F0, _ImportList, _TOpts) :-
|
||||||
b_setval('$source_file', F0 ),
|
b_setval('$source_file', F0 ),
|
||||||
'$process_directives'( FilePl ),
|
'$process_directives'( FilePl ),
|
||||||
fail.
|
fail.
|
||||||
'$qload_file'(_S, SourceModule, _File, FilePl, _F0, ImportList) :-
|
'$qload_file'(_S, SourceModule, _File, FilePl, _F0, ImportList, TOpts) :-
|
||||||
'$import_to_current_module'(FilePl, SourceModule, ImportList, _, _TOpts).
|
'$import_to_current_module'(FilePl, SourceModule, ImportList, _, TOpts).
|
||||||
|
|
||||||
'$process_directives'( FilePl ) :-
|
'$process_directives'( FilePl ) :-
|
||||||
user:'$file_property'( '$lf_loaded'( FilePl, M, Reconsult, UserFile, OldF, Line, Opts) ),
|
user:'$file_property'( '$lf_loaded'( FilePl, M, Reconsult, UserFile, OldF, Line, Opts) ),
|
||||||
|
Reference in New Issue
Block a user