SWI-compatible for initialization/2·
This commit is contained in:
parent
89e38cbcc0
commit
0c29616bc2
17
docs/yap.tex
17
docs/yap.tex
@ -1903,6 +1903,23 @@ other procedures.
|
|||||||
The compiler will execute goals @var{G} after consulting the current
|
The compiler will execute goals @var{G} after consulting the current
|
||||||
file.
|
file.
|
||||||
|
|
||||||
|
@item initialization(+@var{Goal},+@var{When})
|
||||||
|
@findex initialization/2 (directive)
|
||||||
|
@snindex initialization/2 (directive)
|
||||||
|
@cnindex initialization/2 (directive)
|
||||||
|
Similar to @code{initialization/1}, but allows for specifying when
|
||||||
|
@var{Goal} is executed while loading the program-text:
|
||||||
|
|
||||||
|
@table @code
|
||||||
|
@item now
|
||||||
|
Execute @var{Goal} immediately.
|
||||||
|
@item after_load
|
||||||
|
Execute @var{Goal} after loading program-text. This is the same as initialization/1.
|
||||||
|
@item restore
|
||||||
|
Do not execute @var{Goal} while loading the program, but only when
|
||||||
|
restoring a state (not implemented yet).
|
||||||
|
@end table
|
||||||
|
|
||||||
@item library_directory(+@var{D})
|
@item library_directory(+@var{D})
|
||||||
@findex library_directory/1
|
@findex library_directory/1
|
||||||
@snindex library_directory/1
|
@snindex library_directory/1
|
||||||
|
@ -302,6 +302,59 @@ use_module(M,F,Is) :-
|
|||||||
fail.
|
fail.
|
||||||
'$initialization'(_).
|
'$initialization'(_).
|
||||||
|
|
||||||
|
'$initialization'(G,OPT) :-
|
||||||
|
(
|
||||||
|
var(G)
|
||||||
|
->
|
||||||
|
'$do_error'(instantiation_error,initialization(G,OPT))
|
||||||
|
;
|
||||||
|
number(G)
|
||||||
|
->
|
||||||
|
'$do_error'(type_error(callable,G),initialization(G,OPT))
|
||||||
|
;
|
||||||
|
db_reference(G)
|
||||||
|
->
|
||||||
|
'$do_error'(type_error(callable,G),initialization(G,OPT))
|
||||||
|
;
|
||||||
|
var(OPT)
|
||||||
|
->
|
||||||
|
'$do_error'(instantiation_error,initialization(G,OPT))
|
||||||
|
;
|
||||||
|
atom(OPT)
|
||||||
|
->
|
||||||
|
(
|
||||||
|
OPT == now
|
||||||
|
->
|
||||||
|
fail
|
||||||
|
;
|
||||||
|
OPT == after_load
|
||||||
|
->
|
||||||
|
fail
|
||||||
|
;
|
||||||
|
OPT == restore
|
||||||
|
->
|
||||||
|
fail
|
||||||
|
;
|
||||||
|
'$do_error'(domain_error(initialization,OPT),initialization(OPT))
|
||||||
|
)
|
||||||
|
;
|
||||||
|
'$do_error'(type_error(OPT),initialization(G,OPT))
|
||||||
|
).
|
||||||
|
'$initialization'(G,now) :-
|
||||||
|
( '$notrace'(G) -> true ; format(user_error,':- ~w:~w failed.~n',[M,G]) ).
|
||||||
|
'$initialization'(G,after_load) :-
|
||||||
|
'$initialization'(G).
|
||||||
|
% ignore for now.
|
||||||
|
'$initialization'(G,restore).
|
||||||
|
|
||||||
|
'$initialization'(G) :-
|
||||||
|
'$show_consult_level'(Level1),
|
||||||
|
% it will be done after we leave the current consult level.
|
||||||
|
Level is Level1-1,
|
||||||
|
recorda('$initialisation',do(Level,G),_),
|
||||||
|
fail.
|
||||||
|
'$initialization'(_).
|
||||||
|
|
||||||
'$exec_initialisation_goals' :-
|
'$exec_initialisation_goals' :-
|
||||||
nb_setval('$initialization_goals',on),
|
nb_setval('$initialization_goals',on),
|
||||||
fail.
|
fail.
|
||||||
|
@ -38,6 +38,7 @@
|
|||||||
'$directive'(if(_)).
|
'$directive'(if(_)).
|
||||||
'$directive'(include(_)).
|
'$directive'(include(_)).
|
||||||
'$directive'(initialization(_)).
|
'$directive'(initialization(_)).
|
||||||
|
'$directive'(initialization(_,_)).
|
||||||
'$directive'(meta_predicate(_)).
|
'$directive'(meta_predicate(_)).
|
||||||
'$directive'(module(_,_)).
|
'$directive'(module(_,_)).
|
||||||
'$directive'(module(_,_,_)).
|
'$directive'(module(_,_,_)).
|
||||||
@ -75,6 +76,8 @@
|
|||||||
'$discontiguous'(D,M).
|
'$discontiguous'(D,M).
|
||||||
'$exec_directive'(initialization(D), _, M) :-
|
'$exec_directive'(initialization(D), _, M) :-
|
||||||
'$initialization'(M:D).
|
'$initialization'(M:D).
|
||||||
|
'$exec_directive'(initialization(D,OPT), _, M) :-
|
||||||
|
'$initialization'(M:D, OPT).
|
||||||
'$exec_directive'(thread_initialization(D), _, M) :-
|
'$exec_directive'(thread_initialization(D), _, M) :-
|
||||||
'$thread_initialization'(M:D).
|
'$thread_initialization'(M:D).
|
||||||
'$exec_directive'(expects_dialect(D), _, _) :-
|
'$exec_directive'(expects_dialect(D), _, _) :-
|
||||||
|
Reference in New Issue
Block a user