support predicate flagas and declaration support.
This commit is contained in:
parent
64319f622f
commit
7c2ba414a3
@ -39,6 +39,7 @@
|
|||||||
'$directive'(include(_)).
|
'$directive'(include(_)).
|
||||||
'$directive'(initialization(_)).
|
'$directive'(initialization(_)).
|
||||||
'$directive'(initialization(_,_)).
|
'$directive'(initialization(_,_)).
|
||||||
|
'$directive'(license(_)).
|
||||||
'$directive'(meta_predicate(_)).
|
'$directive'(meta_predicate(_)).
|
||||||
'$directive'(module(_,_)).
|
'$directive'(module(_,_)).
|
||||||
'$directive'(module(_,_,_)).
|
'$directive'(module(_,_,_)).
|
||||||
@ -52,6 +53,7 @@
|
|||||||
'$directive'(reconsult(_)).
|
'$directive'(reconsult(_)).
|
||||||
'$directive'(reexport(_)).
|
'$directive'(reexport(_)).
|
||||||
'$directive'(reexport(_,_)).
|
'$directive'(reexport(_,_)).
|
||||||
|
'$directive'(predicate_options(_,_,_)).
|
||||||
'$directive'(thread_initialization(_)).
|
'$directive'(thread_initialization(_)).
|
||||||
'$directive'(thread_local(_)).
|
'$directive'(thread_local(_)).
|
||||||
'$directive'(uncutable(_)).
|
'$directive'(uncutable(_)).
|
||||||
@ -60,89 +62,100 @@
|
|||||||
'$directive'(use_module(_,_,_)).
|
'$directive'(use_module(_,_,_)).
|
||||||
'$directive'(wait(_)).
|
'$directive'(wait(_)).
|
||||||
|
|
||||||
'$exec_directives'((G1,G2), Mode, M) :- !,
|
'$exec_directives'((G1,G2), Mode, M, VL, Pos) :- !,
|
||||||
'$exec_directives'(G1, Mode, M),
|
'$exec_directives'(G1, Mode, M, VL, Pos),
|
||||||
'$exec_directives'(G2, Mode, M).
|
'$exec_directives'(G2, Mode, M, VL, Pos).
|
||||||
'$exec_directives'(G, Mode, M) :-
|
'$exec_directives'(G, Mode, M, VL, Pos) :-
|
||||||
'$exec_directive'(G, Mode, M).
|
'$exec_directive'(G, Mode, M, VL, Pos).
|
||||||
|
|
||||||
'$exec_directive'(multifile(D), _, M) :-
|
'$exec_directive'(multifile(D), _, M, _, _) :-
|
||||||
'$system_catch'('$multifile'(D, M), M,
|
'$system_catch'('$multifile'(D, M), M,
|
||||||
Error,
|
Error,
|
||||||
user:'$LoopError'(Error, top)).
|
user:'$LoopError'(Error, top)).
|
||||||
'$exec_directive'(discontiguous(D), _, M) :-
|
'$exec_directive'(discontiguous(D), _, M, _, _) :-
|
||||||
'$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) :-
|
'$exec_directive'(initialization(D,OPT), _, M, _, _) :-
|
||||||
'$initialization'(M:D, OPT).
|
'$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), _, _, _, _) :-
|
||||||
'$expects_dialect'(D).
|
'$expects_dialect'(D).
|
||||||
'$exec_directive'(encoding(Enc), _, _) :-
|
'$exec_directive'(encoding(Enc), _, _, _, _) :-
|
||||||
'$set_encoding'(Enc).
|
'$set_encoding'(Enc).
|
||||||
'$exec_directive'(include(F), Status, _) :-
|
'$exec_directive'(include(F), Status, _, _, _) :-
|
||||||
'$include'(F, Status).
|
'$include'(F, Status).
|
||||||
'$exec_directive'(module(N,P), Status, _) :-
|
'$exec_directive'(module(N,P), Status, _, _, _) :-
|
||||||
'$module'(Status,N,P).
|
'$module'(Status,N,P).
|
||||||
'$exec_directive'(module(N,P,Op), Status, _) :-
|
'$exec_directive'(module(N,P,Op), Status, _, _, _) :-
|
||||||
'$module'(Status,N,P,Op).
|
'$module'(Status,N,P,Op).
|
||||||
'$exec_directive'(meta_predicate(P), _, M) :-
|
'$exec_directive'(meta_predicate(P), _, M, _, _) :-
|
||||||
'$meta_predicate'(P, M).
|
'$meta_predicate'(P, M).
|
||||||
'$exec_directive'(module_transparent(P), _, M) :-
|
'$exec_directive'(module_transparent(P), _, M, _, _) :-
|
||||||
'$module_transparent'(P, M).
|
'$module_transparent'(P, M).
|
||||||
'$exec_directive'(noprofile(P), _, M) :-
|
'$exec_directive'(noprofile(P), _, M, _, _) :-
|
||||||
'$noprofile'(P, M).
|
'$noprofile'(P, M).
|
||||||
'$exec_directive'(require(Ps), _, M) :-
|
'$exec_directive'(require(Ps), _, M, _, _) :-
|
||||||
'$require'(Ps, M).
|
'$require'(Ps, M).
|
||||||
'$exec_directive'(dynamic(P), _, M) :-
|
'$exec_directive'(dynamic(P), _, M, _, _) :-
|
||||||
'$dynamic'(P, M).
|
'$dynamic'(P, M).
|
||||||
'$exec_directive'(thread_local(P), _, M) :-
|
'$exec_directive'(thread_local(P), _, M, _, _) :-
|
||||||
'$thread_local'(P, M).
|
'$thread_local'(P, M).
|
||||||
'$exec_directive'(op(P,OPSEC,OP), _, _) :-
|
'$exec_directive'(op(P,OPSEC,OP), _, _, _, _) :-
|
||||||
'$current_module'(M),
|
'$current_module'(M),
|
||||||
op(P,OPSEC,M:OP).
|
op(P,OPSEC,M:OP).
|
||||||
'$exec_directive'(set_prolog_flag(F,V), _, _) :-
|
'$exec_directive'(set_prolog_flag(F,V), _, _, _, _) :-
|
||||||
set_prolog_flag(F,V).
|
set_prolog_flag(F,V).
|
||||||
'$exec_directive'(ensure_loaded(Fs), _, M) :-
|
'$exec_directive'(ensure_loaded(Fs), _, M, _, _) :-
|
||||||
'$load_files'(M:Fs, [if(changed)], ensure_loaded(Fs)).
|
'$load_files'(M:Fs, [if(changed)], ensure_loaded(Fs)).
|
||||||
'$exec_directive'(char_conversion(IN,OUT), _, _) :-
|
'$exec_directive'(char_conversion(IN,OUT), _, _, _, _) :-
|
||||||
char_conversion(IN,OUT).
|
char_conversion(IN,OUT).
|
||||||
'$exec_directive'(public(P), _, M) :-
|
'$exec_directive'(public(P), _, M, _, _) :-
|
||||||
'$public'(P, M).
|
'$public'(P, M).
|
||||||
'$exec_directive'(compile(Fs), _, M) :-
|
'$exec_directive'(compile(Fs), _, M, _, _) :-
|
||||||
'$load_files'(M:Fs, [], compile(Fs)).
|
'$load_files'(M:Fs, [], compile(Fs)).
|
||||||
'$exec_directive'(reconsult(Fs), _, M) :-
|
'$exec_directive'(reconsult(Fs), _, M, _, _) :-
|
||||||
'$load_files'(M:Fs, [], reconsult(Fs)).
|
'$load_files'(M:Fs, [], reconsult(Fs)).
|
||||||
'$exec_directive'(consult(Fs), _, M) :-
|
'$exec_directive'(consult(Fs), _, M, _, _) :-
|
||||||
'$consult'(Fs, M).
|
'$consult'(Fs, M).
|
||||||
'$exec_directive'(use_module(F), _, M) :-
|
'$exec_directive'(use_module(F), _, M, _, _) :-
|
||||||
'$load_files'(M:F, [if(not_loaded)],use_module(F)).
|
'$load_files'(M:F, [if(not_loaded)],use_module(F)).
|
||||||
'$exec_directive'(reexport(F), _, M) :-
|
'$exec_directive'(reexport(F), _, M, _, _) :-
|
||||||
'$reexport'(F, all, M).
|
'$reexport'(F, all, M).
|
||||||
'$exec_directive'(reexport(F,Spec), _, M) :-
|
'$exec_directive'(reexport(F,Spec), _, M, _, _) :-
|
||||||
'$reexport'(F, Spec, M).
|
'$reexport'(F, Spec, M).
|
||||||
'$exec_directive'(use_module(F,Is), _, M) :-
|
'$exec_directive'(use_module(F,Is), _, M, _, _) :-
|
||||||
'$load_files'(M:F, [if(not_loaded),imports(Is)],use_module(F,Is)).
|
'$load_files'(M:F, [if(not_loaded),imports(Is)],use_module(F,Is)).
|
||||||
'$exec_directive'(use_module(Mod,F,Is), _, _) :-
|
'$exec_directive'(use_module(Mod,F,Is), _, _, _, _) :-
|
||||||
'$use_module'(Mod,F,Is).
|
'$use_module'(Mod,F,Is).
|
||||||
'$exec_directive'(block(BlockSpec), _, _) :-
|
'$exec_directive'(block(BlockSpec), _, _, _, _) :-
|
||||||
'$block'(BlockSpec).
|
'$block'(BlockSpec).
|
||||||
'$exec_directive'(wait(BlockSpec), _, _) :-
|
'$exec_directive'(wait(BlockSpec), _, _, _, _) :-
|
||||||
'$wait'(BlockSpec).
|
'$wait'(BlockSpec).
|
||||||
'$exec_directive'(table(PredSpec), _, M) :-
|
'$exec_directive'(table(PredSpec), _, M, _, _) :-
|
||||||
'$table'(PredSpec, M).
|
'$table'(PredSpec, M).
|
||||||
'$exec_directive'(uncutable(PredSpec), _, M) :-
|
'$exec_directive'(uncutable(PredSpec), _, M, _, _) :-
|
||||||
'$uncutable'(PredSpec, M).
|
'$uncutable'(PredSpec, M).
|
||||||
'$exec_directive'(if(Goal), Context, M) :-
|
'$exec_directive'(if(Goal), Context, M, _, _) :-
|
||||||
'$if'(M:Goal, Context).
|
'$if'(M:Goal, Context).
|
||||||
'$exec_directive'(else, Context, _) :-
|
'$exec_directive'(else, Context, _, _, _) :-
|
||||||
'$else'(Context).
|
'$else'(Context).
|
||||||
'$exec_directive'(elif(Goal), Context, M) :-
|
'$exec_directive'(elif(Goal), Context, M, _, _) :-
|
||||||
'$elif'(M:Goal, Context).
|
'$elif'(M:Goal, Context).
|
||||||
'$exec_directive'(endif, Context, _) :-
|
'$exec_directive'(endif, Context, _, _, _) :-
|
||||||
'$endif'(Context).
|
'$endif'(Context).
|
||||||
|
'$exec_directive'(license(_), Context, _, _, _) :-
|
||||||
|
Context \= top.
|
||||||
|
'$exec_directive'(predicate_options(PI, Arg, Options), Context, Module, VL, Pos) :-
|
||||||
|
Context \= top,
|
||||||
|
'$predopts':expand_predicate_options(PI, Arg, Options, Clauses),
|
||||||
|
'$assert_list'(Clauses, Context, Module, VL, Pos).
|
||||||
|
|
||||||
|
'$assert_list'([], _Context, _Module, _VL, _Pos).
|
||||||
|
'$assert_list'(Clause.Clauses, Context, Module, VL, Pos) :-
|
||||||
|
'$command'(Clause, VL, Pos, Context),
|
||||||
|
'$assert_list'(Clauses, Context, Module, VL, Pos).
|
||||||
|
|
||||||
%
|
%
|
||||||
% allow users to define their own directives.
|
% allow users to define their own directives.
|
||||||
|
Reference in New Issue
Block a user