patch module code (by Paulo Moura)
This commit is contained in:
parent
14796f5d90
commit
7fa7c8b92a
@ -2358,7 +2358,8 @@ Add predicates to the public list of the context module. This implies
|
|||||||
the predicate will be imported into another module if this module is
|
the predicate will be imported into another module if this module is
|
||||||
imported with @code{use_module/[1,2]}. Note that predicates are normally
|
imported with @code{use_module/[1,2]}. Note that predicates are normally
|
||||||
exported using the directive @code{module/2}. @code{export/1} is meant
|
exported using the directive @code{module/2}. @code{export/1} is meant
|
||||||
to handle export from dynamically created modules.
|
to handle export from dynamically created modules. The directive argument
|
||||||
|
may also be a list of predicates.
|
||||||
|
|
||||||
@item export_list(?@var{Mod},?@var{ListOfPredicateIndicator})
|
@item export_list(?@var{Mod},?@var{ListOfPredicateIndicator})
|
||||||
@findex export_list/2
|
@findex export_list/2
|
||||||
|
@ -685,32 +685,42 @@ abolish_module(Mod) :-
|
|||||||
fail.
|
fail.
|
||||||
abolish_module(_).
|
abolish_module(_).
|
||||||
|
|
||||||
export(P) :-
|
export(Resource) :-
|
||||||
var(P),
|
var(Resource),
|
||||||
'$do_error'(instantiation_error,export(P)).
|
'$do_error'(instantiation_error,export(Resource)).
|
||||||
export(P) :-
|
export([]) :- !.
|
||||||
P = F/N, atom(F), number(N), N > 0, !,
|
export([Resource| Resources]) :- !,
|
||||||
|
export_resource(Resource),
|
||||||
|
export(Resources).
|
||||||
|
export(Resource) :-
|
||||||
|
export_resource(Resource).
|
||||||
|
|
||||||
|
export_resource(Resource) :-
|
||||||
|
var(Resource),
|
||||||
|
'$do_error'(instantiation_error,export(Resource)).
|
||||||
|
export_resource(P) :-
|
||||||
|
P = F/N, atom(F), number(N), N >= 0, !,
|
||||||
'$current_module'(Mod),
|
'$current_module'(Mod),
|
||||||
( recorded('$module','$module'(F,Mod,ExportedPreds),R) ->
|
( recorded('$module','$module'(File,Mod,ExportedPreds),R) ->
|
||||||
erase(R),
|
erase(R),
|
||||||
recorda('$module','$module'(F,Mod,[P|ExportedPreds]),_)
|
recorda('$module','$module'(File,Mod,[P|ExportedPreds]),_)
|
||||||
;
|
;
|
||||||
recorda('$module','$module'(user_input,Mod,[P]),_)
|
recorda('$module','$module'(user_input,Mod,[P]),_)
|
||||||
).
|
).
|
||||||
export(P0) :-
|
export_resource(P0) :-
|
||||||
P0 = F//N, atom(F), number(N), N > 0, !,
|
P0 = F//N, atom(F), number(N), N >= 0, !,
|
||||||
N1 is N+2, P = F/N1,
|
N1 is N+2, P = F/N1,
|
||||||
'$current_module'(Mod),
|
'$current_module'(Mod),
|
||||||
( recorded('$module','$module'(F,Mod,ExportedPreds),R) ->
|
( recorded('$module','$module'(File,Mod,ExportedPreds),R) ->
|
||||||
erase(R),
|
erase(R),
|
||||||
recorda('$module','$module'(F,Mod,[P|ExportedPreds]),_)
|
recorda('$module','$module'(File,Mod,[P|ExportedPreds]),_)
|
||||||
;
|
;
|
||||||
recorda('$module','$module'(user_input,Mod,[P]),_)
|
recorda('$module','$module'(user_input,Mod,[P]),_)
|
||||||
).
|
).
|
||||||
export(op(Prio,Assoc,Name)) :- !,
|
export_resource(op(Prio,Assoc,Name)) :- !,
|
||||||
op(Prio,Assoc,prolog:Name).
|
op(Prio,Assoc,prolog:Name).
|
||||||
export(P) :-
|
export_resource(Resource) :-
|
||||||
'$do_error'(type_error(predicate_indicator,P),export(P)).
|
'$do_error'(type_error(predicate_indicator,Resource),export(Resource)).
|
||||||
|
|
||||||
export_list(Module, List) :-
|
export_list(Module, List) :-
|
||||||
recorded('$module','$module'(_,Module,List),_).
|
recorded('$module','$module'(_,Module,List),_).
|
||||||
|
Reference in New Issue
Block a user