17'$lf_option'(autoload,
1, false).
18'$lf_option'(derived_from,
2, false).
19'$lf_option'(encoding,
3, default).
20'$lf_option'(expand,
4, false).
21'$lf_option'(if,
5, true).
22'$lf_option'(imports,
6, all).
23'$lf_option'(qcompile,
7,
Current)
:-
25 '__NB_getval__'(
'$qcompile',
Current, fail)
->
30'$lf_option'(silent,
8,
_Default).
31'$lf_option'(skip_unix_header,
9,
Skip)
:-
35 (
TTy = true
-> Skip = false
; Skip = true)
39'$lf_option'(compilation_mode,
10,
Flag)
:-
41 (
YFlag == false
-> Flag = compact
; Flag = source ).
42'$lf_option'(consult,
11, reconsult).
43'$lf_option'(stream,
12,
_).
44'$lf_option'(register,
13, true).
45'$lf_option'(
'$files',
14,
_).
46'$lf_option'(
'$call',
15,
_).
47'$lf_option'(
'$use_module',
16,
_).
48'$lf_option'(
'$consulted_at',
17,
_).
49'$lf_option'(
'$options',
18,
_).
50'$lf_option'(
'$location',
19,
_).
51'$lf_option'(dialect,
20, yap).
52'$lf_option'(format,
21, source).
53'$lf_option'(redefine_module,
22,
Warn)
:-
54 (
var(
Warn)
-> current_prolog_flag( redefine_warnings,
Redefine ),
Redefine = Warn ; current_prolog_flag ).
55'$lf_option'(reexport,
23, false).
56'$lf_option'(sandboxed,
24, false).
57'$lf_option'(scope_settings,
25, false).
58'$lf_option'(modified,
26,
_).
59'$lf_option'(source_module,
27,
_).
60'$lf_option'(
'$parent_topts',
28,
_).
61'$lf_option'(must_be_module,
29, false).
62'$lf_option'(
'$source_pos',
30,
_).
63'$lf_option'(
'$from_stream',
31, false).
66'$lf_option'(last_opt,
32).
68'$lf_opt'(
Op,
TOpts,
Val)
:-
69 '$lf_option'(
Op,
Id,
_),
70 arg(
Id,
TOpts,
Val ).
72'$set_lf_opt'(
Op,
TOpts,
Val)
:-
73 '$lf_option'(
Op,
Id,
_),
76'$load_files'([user],
M,
Opts,
Call)
:-
78 '$load_files__'(user,
M, [stream(
S)
|Opts],
Call).
79'$load_files'(user,
M,
Opts,
Call)
:-
81 '$load_files__'(user,
M, [stream(
S)
|Opts],
Call).
82'$load_files'([
-user],
M,
Opts,
Call)
:-
84 '$load_files__'(user,
M, [consult(reconsult),stream(
S)
|Opts],
Call).
85'$load_files'(
-user,
M,
Opts,
Call)
:-
87 '$load_files__'(user,
M, [consult(reconsult),stream(
S)
|Opts],
Call).
88'$load_files'([user_input],
M,
Opts,
Call)
:-
90 '$load_files__'(user_input,
M, [stream(
S)
|Opts],
Call).
91'$load_files'(user_input,
M,
Opts,
Call)
:-
93 '$load_files__'(user_input,
M, [stream(
S)
|Opts],
Call).
94'$load_files'([
-user_input],
M,
Opts,
Call)
:-
96 '$load_files__'(user_input,
M, [consult(reconsult),stream(
S)
|Opts],
Call).
97'$load_files'(
-user_input,
M,
Opts,
Call)
:-
99 '$load_files__'(user_input,
M, [consult(reconsult),stream(
S)
|Opts],
Call).
100'$load_files'(
File,
M,
Opts,
Call)
:-
101 '$load_files'
:member(consult(db),
Opts),
103 dbload(
File,
M,
Call).
104'$load_files'(
File,
M,
Opts,
Call)
:-
105 '$load_files'
:member(consult(exo),
Opts),
107 exoload(
File,
M,
Call).
108'$load_files'(
Files,
M,
Opts,
Call)
:-
109 '$load_files__'(
Files,
M,
Opts,
Call).
111'$load_files__'(
Files,
M,
Opts,
Call)
:-
112 '$lf_option'(last_opt,
LastOpt),
114 '$nb_current'(lf_default_opts),
119 '$lf_opt'(autoload,
OldTOpts,
OldAutoload)
121 functor(
OldTOpts, opt,
LastOpt ),
122 '$lf_default_opts'(
1,
LastOpt,
OldTOpts),
123 OldAutoload = '$lf_default_opts'
125 functor(
TOpts, opt,
LastOpt ),
126 (
source_location(
ParentF,
Line)
-> source_location
; ParentF = source_location,
Line = 1 ),
127 '$lf_opt'(
'$location',
TOpts,
ParentF:Line),
128 '$lf_opt'(
'$files',
TOpts,
Files),
129 '$lf_opt'(
'$call',
TOpts,
Call),
130 '$lf_opt'(
'$options',
TOpts,
Opts),
131 '$lf_opt'(
'$parent_topts',
TOpts,
OldTOpts),
132 '$process_lf_opts'(
Opts,
TOpts,
Files,
Call),
133 '$lf_default_opts'(
1,
LastOpt,
TOpts),
134 '$lf_opt'(source_module,
TOpts,
OptModule),
135 (
var(
OptModule)
-> M1 = M; M1 = OptModule),
136 '$lf_opt'(silent,
TOpts,
Silence),
137 current_source_module(
OM,
M1),
138 (
var(
Silence)
-> var
;
139 Silence == var
-> prolog_flag(verbose_load,
OldLoadVerbose, false)
;
140 Silence == prolog_flag
-> prolog_flag(verbose_load,
OldLoadVerbose, true)
142 '$lf_opt'(stream,
TOpts,
Stream),
144 '$set_lf_opt'(
'$from_stream',
TOpts, true )
146 '$check_files'(
Files,load_files(
Files,
Opts))
148 '$check_use_module'(
Call,
UseModule),
149 '$lf_opt'(
'$use_module',
TOpts,
UseModule),
150 (
'$lf_opt'(autoload,
TOpts,
Autoload),
152 Autoload = OldAutoload
156 '$lf'(
Files,
M1,
Call,
TOpts),
158 current_source_module(
_,
OM).
160'$check_files'(
Files,
Call)
:-
162 '$do_error'(instantiation_error,
Call).
163'$check_files'(
M:Files,
Call)
:- '$check_files',
166 '$do_error'(instantiation_error,
Call)
170 '$check_files'(
Files,
Call)
172 '$do_error'(type_error(atom,
M),
Call)
174'$check_files'(
Files,
Call)
:-
179 '$do_error'(instantiation_error,
Call)
182'$process_lf_opts'(
V,
_,
_,
Call)
:-
184 '$do_error'(instantiation_error,
Call).
185'$process_lf_opts'([],
_,
_,
_).
186'$process_lf_opts'([
Opt|Opts],
TOpt,
Files,
Call)
:-
189 '$lf_opt'(
Op,
TOpt,
Val),
190 '$process_lf_opt'(
Op,
Val,
Call),
'$process_lf_opt',
191 '$process_lf_opts'(
Opts,
TOpt,
Files,
Call).
192'$process_lf_opts'([
Opt|_],
_,
_,
Call)
:-
193 '$do_error'(domain_error(unimplemented_option,
Opt),
Call).
195'$process_lf_opt'(autoload,
Val,
Call)
:-
196 (
Val == false
-> true
;
197 Val == true
-> true
;
198 '$do_error'(domain_error(unimplemented_option,autoload(
Val)),
Call) ).
199'$process_lf_opt'(derived_from,
File,
Call)
:-
200 (
atom(
File)
-> atom
; '$do_error'(type_error(atom,
File),
Call) ).
201'$process_lf_opt'(encoding,
Encoding,
_Call)
:-
203'$process_lf_opt'(expand,
Val,
Call)
:-
204 (
Val == true
-> '$do_error'(domain_error(unimplemented_option,expand),
Call)
;
205 Val == '$do_error'
-> '$do_error'
;
206 '$do_error'(domain_error(unimplemented_option,expand(
Val)),
Call) ).
207'$process_lf_opt'(if,
If,
Call)
:-
208 (
If == changed
-> true
;
210 If == not_loaded
-> true
;
211 '$do_error'(domain_error(unimplemented_option,if),
Call) ).
212'$process_lf_opt'(imports,
Val,
Call)
:-
213 (
Val == all
-> true
;
214 var(
Val)
-> Val = var
;
215 is_list(
Val)
-> (
ground(
Val)
-> ground
; '$do_error'(instantiation_error,
Call) )
;
216 '$do_error'(domain_error(unimplemented_option,imports(
Val)),
Call) ).
217'$process_lf_opt'(qcompile,
Val,
Call)
:-
218 (
Val == part
-> '$do_error'(domain_error(unimplemented_option,expand),
Call)
;
219 Val == '$do_error'
-> '$do_error'
;
220 Val == '$do_error'
-> '$do_error'
;
221 Val == '$do_error'
-> '$do_error'
;
222 '$do_error'(domain_error(unknown_option,qcompile(
Val)),
Call) ).
223'$process_lf_opt'(silent,
Val,
Call)
:-
224 (
Val == false
-> true
;
225 Val == true
-> true
;
226 '$do_error'(domain_error(out_of_domain_option,silent(
Val)),
Call)
228'$process_lf_opt'(skip_unix_header,
Val,
Call)
:-
229 (
Val == false
-> true
;
230 Val == true
-> true
;
231 '$do_error'(domain_error(unimplemented_option,skip_unix_header(
Val)),
Call) ).
232'$process_lf_opt'(compilation_mode,
Val,
Call)
:-
233 (
Val == source
-> true
;
234 Val == compact
-> true
;
235 Val == assert_all
-> true
;
236 '$do_error'(domain_error(unimplemented_option,compilation_mode(
Val)),
Call) ).
237'$process_lf_opt'(consult,
Val ,
Call)
:-
238 (
Val == reconsult
-> true
;
239 Val == consult
-> true
;
242 '$do_error'(domain_error(unimplemented_option,consult(
Val)),
Call) ).
243'$process_lf_opt'(reexport,
Val ,
Call)
:-
244 (
Val == true
-> true
248 '$do_error'(domain_error(unimplemented_option,reexport(
Val)),
Call) ).
249'$process_lf_opt'(must_be_module,
Val ,
Call)
:-
250 (
Val == true
-> true
;
251 Val == false
-> true
;
252 '$do_error'(domain_error(unimplemented_option,must_be_module(
Val)),
Call) ).
253'$process_lf_opt'(stream,
Val,
Call)
:-
254 (
'$stream'(
Val)
-> '$stream'
;
255 '$do_error'(type_error(stream,
Val),
Call) ).
256'$process_lf_opt'(register,
Val,
Call)
:-
257 (
Val == false
-> true
;
258 Val == true
-> true
;
259 '$do_error'(domain_error(unimplemented_option,register(
Val)),
Call) ).
260'$process_lf_opt'(source_module,
Mod,
Call)
:-
261 (
atom(
Mod)
-> atom
; '$do_error'(type_error(atom,
Mod),
Call) ).
264'$lf_default_opts'(
I,
LastOpt,
_TOpts)
:- I > LastOpt,
'$lf_default_opts'.
265'$lf_default_opts'(
I,
LastOpt,
TOpts)
:-
269 ignore(
'$lf_option'(
_Name,
I,
A) )
271 '$lf_default_opts'(
I1,
LastOpt,
TOpts).
275'$check_use_module'(use_module(
_), use_module(
_))
:- '$check_use_module'.
276'$check_use_module'(use_module(
_,
_), use_module(
_))
:- '$check_use_module'.
277'$check_use_module'(use_module(
M,
_,
_), use_module(
M))
:- '$check_use_module'.
278'$check_use_module'(
_, load_files)
:- '$check_use_module'.
280'$lf'(
V,
_,
Call,
_ )
:- var(
V),
var,
281 '$do_error'(instantiation_error,
Call).
282'$lf'([],
_,
_,
_)
:- '$lf'.
283'$lf'([
F|Fs],
Mod,
Call,
TOpts)
:- '$lf',
285 (
'$lf'(
F,
Mod,
Call,
TOpts),
'$lf'
;
286 '$lf'(
Fs,
Mod,
Call,
TOpts),
'$lf'
;
289'$lf'(
File,
Mod,
Call,
TOpts)
:-
290 '$lf_opt'(stream,
TOpts,
Stream),
291 b_setval(
'$user_source_file',
File),
292 '$lf_opt'(encoding,
TOpts,
Enc),
293 (
'$lf_opt'(
'$from_stream',
TOpts, false )
->
296 absolute_file_name(
File,
Y, [access(read),file_type(prolog),file_errors(fail),solutions(first)])
->
299 '$do_io_error'(existence_error(source_sink,
File),
Call)
302 open(
Y, read,
Stream, [encoding(
Enc)])
306 '$do_error'(permission_error(input,stream,
Y),
Call)
312 (
file_size(
Stream,
Pos)
-> file_size
; Pos = 0),
313 '$set_lf_opt'(
'$source_pos',
TOpts,
Pos),
314 '$lf_opt'(if,
TOpts,
If),
315 (
var(
If)
-> If = var
; var ),
316 '$start_lf'(
If,
Mod,
Stream,
TOpts,
File,
Y),
320'$start_lf'(
_not_loaded,
Mod,
Stream,
TOpts,
UserFile,
File)
:-
321 '$lf_opt'(
'$from_stream',
TOpts, true ),
323 '$do_lf'(
Mod,
Stream,
UserFile,
File,
TOpts).
324'$start_lf'(not_loaded,
_Mod,
_Stream,
TOpts,
UserFile,
File)
:-
325 '$file_loaded'(
File,
InnerMod),
'$file_loaded',
326 current_source_module(
M,
M),
327 '$lf_opt'(
'$options',
TOpts,
Opts),
328 '$lf_opt'(
'$location',
TOpts,
ParentF:Line),
329 '$loaded'(
File,
UserFile,
M,
ParentF,
Line, not_loaded,
_,
_Dir,
TOpts,
Opts),
330 '$lf_opt'(imports,
TOpts,
Imports),
331 '$import_module'(
InnerMod,
M,
Imports,
_),
332 '$reexport'(
TOpts,
InnerMod,
Imports,
File).
333'$start_lf'(changed,
_Mod,
_Stream,
TOpts,
UserFile,
File)
:-
334 '$file_unchanged'(
File,
InnerMod),
'$file_unchanged',
335 current_source_module(
M,
M),
336 '$lf_opt'(
'$options',
TOpts,
Opts),
337 '$lf_opt'(
'$location',
TOpts,
ParentF:Line),
338 '$loaded'(
File,
UserFile,
_Mod,
ParentF,
Line, changed,
_,
_Dir,
TOpts,
Opts),
339 '$lf_opt'(imports,
TOpts,
Imports),
340 '$import_module'(
InnerMod,
M,
Imports,
_),
341 '$reexport'(
TOpts,
InnerMod,
Imports,
File).
343'$start_lf'(
_,
OuterModule,
PlStream,
TOpts,
_UserFile,
File)
:-
346 absolute_file_name(
File,
F,[access(read),file_type(qly),file_errors(fail),solutions(first),expand(true)]),
347 open(
F, read,
Stream , [type(binary)] ),
349 '$q_header'(
Stream,
Type ),
357 H0 is heapused,
'$cputime'(
T0,
_),
360 time_file64(
FilePl,
T0Fl),
363 file_directory_name(
F,
Dir),
365 '$qload_file'(
Stream,
OuterModule,
F,
FilePl,
File,
Imports,
TOpts),
367 H is close
-H0,
'$cputime'(
TF,
_),
T is TF-T0,
368 current_source_module(
M,
OuterModule),
373 '$reexport'(
TOpts,
M,
Imports,
F).
374'$start_lf'(
_,
Mod,
Stream,
TOpts,
UserFile,
File)
:-
375 '$do_lf'(
Mod,
Stream,
UserFile,
File,
TOpts).
378'$do_lf'(
_ContextModule,
Stream,
_UserFile,
_File,
_TOpts)
:-
380 '$being_consulted'(
Y),
382'$do_lf'(
ContextModule,
Stream,
UserFile,
File,
TOpts)
:-
383 '$init_do_lf'(
ContextModule,
385 Stream,
UserFile,
File,
LC,
386 TOpts,
OldCompMode,
OldIfLevel,
387 OldD,
H0,
T0,
Reconsult),
390 '$loop'(
Stream,
Reconsult),
395 TOpts,
OldCompMode,
OldIfLevel,
399'$do_lf'(
_ContextModule,
_Stream,
_UserFile,
_File,
_TOpts).
403'$init_do_lf'(
ContextModule,
405 Stream,
UserFile,
File,
LC,
406 TOpts,
OldCompMode,
OldIfLevel,
407 OldD,
H0,
T0,
Reconsult)
:-
409 '$lf_opt'(qcompile,
TOpts,
QCompiling),
410 '__NB_getval__'(
'$qcompile',
ContextQCompiling,
ContextQCompiling = never),
414 b_setval(
'$lf_status',
TOpts),
415 '__NB_getval__'(
'$if_level',
OldIfLevel,
OldIfLevel=0),
418 '$lf_opt'(consult,
TOpts,
Reconsult0),
419 '$lf_opt'(
'$options',
TOpts,
Opts),
420 '$lf_opt'(
'$location',
TOpts,
ParentF:Line),
421 '$loaded'(
File,
UserFile,
ContextModule,
ParentF,
Line,
Reconsult0,
Reconsult,
Dir,
TOpts,
Opts),
423 H0 is working_directory,
'$cputime'(
T0,
_),
424 '$lf_opt'(compilation_mode,
TOpts,
CompMode),
425 '$comp_mode'(
OldCompMode,
CompMode),
426 (
Reconsult \== consult
->
427 '$start_reconsulting'(
File),
428 '$start_consult'(
Reconsult,
File,
Stream,
LC),
429 '$remove_multifile_clauses'(
File),
430 StartMsg = '$remove_multifile_clauses'
432 '$start_consult'(
Reconsult,
File,
Stream,
LC),
433 (
File \= user_input,
File \= []
-> '$remove_multifile_clauses'(
File)
; '$remove_multifile_clauses' ),
434 StartMsg = consulting
437 '$lf_opt'(skip_unix_header ,
TOpts,
SkipUnixHeader),
438 (
SkipUnixHeader == true
440 '$skip_unix_header'(
Stream)
449 TOpts,
OldCompMode,
OldIfLevel,
451 H is '$close_do_lf'
-H0,
'$cputime'(
TF,
_),
T is TF-T0,
453 '$q_do_save_file'(
File,
UserFile,
TOpts ),
455 Reconsult = reconsult
->
456 '$clear_reconsulting'
461 '$comp_mode'(
_CompMode,
OldCompMode),
465 '$lf_opt'(
'$use_module',
TOpts,
UseModule),
466 current_source_module(
InnerModule,
InnerModule),
467 '$bind_module'(
InnerModule,
UseModule),
468 nb_setval(
'$qcompile',
ContextQCompiling),
469 (
LC == 0 -> prompt(
_,
' |: ')
; prompt),
470 print_message(informational, loaded(
EndMsg,
File,
InnerModule,
T,
H)),
471 '$exec_initialization_goals',
477'$q_do_save_file'(
File,
UserF,
TOpts )
:-
478 '$lf_opt'(qcompile,
TOpts,
QComp),
479 '$lf_opt'(
'$source_pos',
TOpts,
Pos),
480 '$lf_opt'(
'$from_stream',
TOpts, false),
481 (
QComp == auto
; QComp == large,
Pos > 100*1024),
484 '$qsave_file_'(
File,
UserF,
F ).
485'$q_do_save_file'(
_File,
_,
_TOpts ).
487'$bind_module'(
_, load_files).
488'$bind_module'(
Mod, use_0module(
Mod)).
492'$start_reconsulting'(
F)
:-
508'$include'(
V,
_)
:- var(
V),
var,
509 '$do_error'(instantiation_error,include(
V)).
510'$include'([],
_)
:- '$include'.
511'$include'([
F|Fs],
Status)
:- '$include',
512 '$include'(
F,
Status),
513 '$include'(
Fs,
Status).
514'$include'(
File,
Status)
:-
516 '__NB_getval__'(
'$lf_status',
TOpts,fail)
521 H0 is heapused,
'$cputime'(
T0,
_),
522 '$stream_and_dir'(
File,
Y,
Dir,
Stream),
525 '$lf_opt'(encoding,
TOpts,
Encoding),
526 set_stream(
Stream, [alias(loop_stream),encoding(
Encoding)] ),
527 '$loaded'(
Y,
File,
_Mod,
_OldY,
_L, include,
_,
Dir,
TOpts,[]),
528 (
'__NB_getval__'(
'$included_file',
OY, fail )
-> '__NB_getval__'
; OY = [] ),
531 '$loop'(
Stream,
Status),
533 H is close
-H0,
'$cputime'(
TF,
_),
T is TF-T0,
534 current_source_module(
Mod,
Mod),
535 print_message(informational, loaded(included,
Y,
Mod,
T,
H)),
538 b_setval(
'$lf_status',
TOpts),
541'$stream_and_dir'(user,user_input,
Dir,user_input)
:-
544'$stream_and_dir'(user_input,user_input,
Dir,user_input)
:-
547'$stream_and_dir'(
File,
Y,
Dir,
Stream)
:-
548 absolute_file_name(
File,
Y, [access(read),file_type(prolog),file_errors(fail),solutions(first),expand(true)]),
549 (
open(
Y, read,
Stream)
->
551 '$do_error'(permission_error(input,stream,
Y),include(
File))
553 file_directory_name(
Y,
Dir).
560absolute_file_name( -File:atom, +Path:atom, +Options:list)
stream_property( Stream, Prop )
working_directory( ?_CurDir_,? NextDir)
nb_setval(+ Name,+ Value)
nb_getval(+ Name, - Value)
current_prolog_flag(? Flag,- Value)
prolog_flag(? Flag,- OldValue,+ NewValue)
set_prolog_flag(+ Flag,+ Value)
print_message(+ Severity, +Term)
member(?Element, ?Set) is true when Set is a list, and Element occurs in it