21 '$do_error'(instantiation_error,module(
N)).
25 '$current_module'(
_,
N).
27 '$do_error'(type_error(atom,
N),module(
N)).
51'$module_dec'(
_,system(
N,
Ss),
Ps)
:- '$module_dec',
53 '$mk_system_predicates'(
Ss ,
N ),
54 '$module_dec'(prolog,
N,
Ps).
55'$module_dec'(
_,system(
N),
Ps)
:- '$module_dec',
58 '$module_dec'(prolog,
N,
Ps).
59'$module_dec'(
M,
MOD,
Ps)
:-
60 source_location(
F,
Line),
61 (
'__NB_getval__'(
'$user_source_file',
F0 , fail)
67 '$add_module_on_file'(
M,
MOD,
F,
Line,
F0,
Ps),
68 current_source_module(
M,
MOD),
69 '$import_module'(
MOD,
M,
Ps,
_),
71 '$lf_opt'(imports,
TOpts,
Imports),
72 '$reexport'(
TOpts,
MOD,
Imports,
F).
75'$mk_system_predicates'(
Ps,
_N )
:-
76 '$mk_system_predicates'
:member(
Name/A ,
Ps),
77 '$new_system_predicate'(
Name,
A, prolog),
78 '$new_system_predicate'.
79'$mk_system_predicates'(
_Ps,
_N ).
99 current_source_module(
M,
M),
100 '$module_dec'(
M,
N,
P).
109set_module_property(
Mod, base(
Base))
:-
110 must_be_of_type( module,
Mod),
112set_module_property(
Mod, exports(
Exports))
:-
113 must_be_of_type( module,
Mod),
114 current_source_module(
OMod,
OMod),
115 '$add_module_on_file'(
OMod, user_input,
1,
'/dev/null',
Exports).
116set_module_property(
Mod, exports(
Exports,
File,
Line))
:-
117 current_source_module(
OMod,
OMod),
118 must_be_of_type( module,
Mod),
119 '$add_module_on_file'(
OMod,
Mod,
File,
Line,
'/dev/null',
Exports).
120set_module_property(
Mod, class(
Class))
:-
121 must_be_of_type( module,
Mod),
122 must_be_of_type( atom,
Class).
124'$add_module_on_file'(
_,
DonorMod,
DonorF,
_LineF,
SourceF,
Exports)
:-
125 recorded(
'$module',
'$module'(
OtherF,
DonorMod,
_,
_,
_,
_),
R),
130 '$do_error'(permission_error(module,redefined,
DonorMod,
OtherF,
DonorF),module(
DonorMod,
Exports))
132 recorded(
'$module',
'$module'(
DonorF,
DonorMod,
SourceF,
_,
_,
_),
R),
136'$add_module_on_file'(
HostM,
DonorM,
DonorF,
Line,
SourceF,
Exports)
:-
137 (
recorded(
'$module',
'$module'(
HostF,
HostM,
_,
_,
_,
_),
_)
-> recorded
; HostF = recorded ),
139 '$convert_for_export'(all,
Exports,
DonorM,
HostM,
TranslationTab,
AllExports0),
140 '$sort'(
AllExports0,
AllExports ),
141 '$add_to_imports'(
TranslationTab,
DonorM,
DonorM),
143 recorda(
'$module',
'$module'(
DonorF,
DonorM,
SourceF,
AllExports,
Line),
_),
145 recorded(
'$source_file',
'$source_file'(
DonorF,
Time,
_),
R),
erase(
R),
148 recorda(
'$source_file',
'$source_file'(
DonorF,
Time,
DonorM),
_)
164'$export_preds'([
N/A|Decls])
:-
166 '$sys_export'(
S, prolog),
167 '$export_preds'(
Decls).
212'$reexport'(
TOpts,
InnerMod,
Imports,
_File )
:-
213 '$lf_opt'(reexport,
TOpts, true),
215 '$lf_opt'(
'$parent_topts',
TOpts,
OldTOpts),
216 (
'$lf_opt'(source_module,
OldTOpts,
OuterMod),
nonvar(
OuterMod)
222 '$import_module'(
InnerMod,
OuterMod,
Imports,
_).
223'$reexport'(
_TOpts,
_Mod,
_,
__File ).
234'$import_module'(
Module,
ContextModule,
_Imports,
_RemainingImports)
:-
236 recorded(
'$module',
'$module'(
File,
Module,
_,
_ModExports,
_),
_),
238 recorded(
'$load_foreign_done', [
File,
M0],
_),
239 '$import_foreign'(
File,
M0,
ContextModule ),
241'$import_module'(
Module,
ContextModule,
Imports,
RemainingImports)
:-
242 Module \= ContextModule,
'$import_module',
243 recorded(
'$module',
'$module'(
_File,
Module,
_,
ModExports,
_),
_),
244 '$convert_for_export'(
Imports,
ModExports,
Module,
ContextModule,
TranslationTab,
RemainingImports),
245 '$add_to_imports'(
TranslationTab,
Module,
ContextModule).
246'$import_module'(
_,
_,
_,
_).
251'$convert_for_export'(all,
Exports,
_Module,
_ContextModule,
Tab,
MyExports)
:-
252 '$simple_conversion'(
Exports,
Tab,
MyExports).
253'$convert_for_export'([],
Exports,
Module,
ContextModule,
Tab,
MyExports)
:-
254 '$clean_conversion'([],
Exports,
Module,
ContextModule,
Tab,
MyExports,
_Goal).
255'$convert_for_export'([
P1|Ps],
Exports,
Module,
ContextModule,
Tab,
MyExports)
:-
256 '$clean_conversion'([
P1|Ps],
Exports,
Module,
ContextModule,
Tab,
MyExports,
_Goal).
257'$convert_for_export'(except(
Excepts),
Exports,
Module,
ContextModule,
Tab,
MyExports)
:-
258 '$neg_conversion'(
Excepts,
Exports,
Module,
ContextModule,
MyExports,
_Goal),
259 '$simple_conversion'(
MyExports,
Tab,
_).
261'$simple_conversion'([], [], []).
262'$simple_conversion'([
F/N|Exports], [
F/N-F/N|Tab], [
F/N|E])
:-
263 '$simple_conversion'(
Exports,
Tab,
E).
264'$simple_conversion'([
F//N|Exports], [
F/N2-F/N2|Tab], [
F/N2|E])
:-
266 '$simple_conversion'(
Exports,
Tab,
E).
267'$simple_conversion'([
F/N as NF|Exports], [
F/N-NF/N|Tab], [
NF/N|E])
:-
268 '$simple_conversion'(
Exports,
Tab,
E).
269'$simple_conversion'([
F//N as NF|Exports], [
F/N2-NF/N2|Tab], [
NF/N2|E])
:-
271 '$simple_conversion'(
Exports,
Tab,
E).
272'$simple_conversion'([op(
Prio,
Assoc,
Name)
|Exports], [op(
Prio,
Assoc,
Name)
|Tab], [op(
Prio,
Assoc,
Name)
|E])
:-
273 '$simple_conversion'(
Exports,
Tab,
E).
275'$clean_conversion'([],
_,
_,
_, [], [],
_).
276'$clean_conversion'([(
N1/A1 as N2)
|Ps],
List,
Module,
ContextModule, [
N1/A1-N2/A1|Tab], [
N2/A1|MyExports],
Goal)
:- '$clean_conversion',
281 '$bad_export'((
N1/A1 as N2),
Module,
ContextModule)
283 '$clean_conversion'(
Ps,
List,
Module,
ContextModule,
Tab,
MyExports,
Goal).
284'$clean_conversion'([
N1/A1|Ps],
List,
Module,
ContextModule, [
N1/A1-N1/A1|Tab], [
N1/A1|MyExports],
Goal)
:- '$clean_conversion',
290 '$bad_export'(
N1/A1,
Module,
ContextModule)
292 '$clean_conversion'(
Ps,
List,
Module,
ContextModule,
Tab,
MyExports,
Goal).
293 '$clean_conversion'([
N1//A1|Ps],
List,
Module,
ContextModule, [
N1/A2-N1/A2|Tab], [
N1/A2|MyExports],
Goal)
:- '$clean_conversion',
300 '$bad_export'(
N1//A1,
Module,
ContextModule)
303 '$clean_conversion'(
Ps,
List,
Module,
ContextModule,
Tab,
MyExports,
Goal).
304 '$clean_conversion'([
N1//A1 as N2|Ps],
List,
Module,
ContextModule, [
N2/A2-N1/A2|Tab], [
N2/A2|MyExports],
Goal)
:- '$clean_conversion',
311 '$bad_export'((
N1//A1 as A2),
Module,
ContextModule)
313 '$clean_conversion'(
Ps,
List,
Module,
ContextModule,
Tab,
MyExports,
Goal).
314 '$clean_conversion'([op(
Prio,
Assoc,
Name)
|Ps],
List,
Module,
ContextModule, [op(
Prio,
Assoc,
Name)
|Tab], [op(
Prio,
Assoc,
Name)
|MyExports],
Goal)
:- '$clean_conversion',
316 lists
:memberchk(op(
Prio,
Assoc,
Name),
List)
320 '$bad_export'(op(
Prio,
Assoc,
Name),
Module,
ContextModule)
322 '$clean_conversion'(
Ps,
List,
Module,
ContextModule,
Tab,
MyExports,
Goal).
323 '$clean_conversion'([
P|_],
_List,
_,
_,
_,
_,
Goal)
:-
324 '$do_error'(domain_error(module_export_predicates,
P),
Goal).
326 '$bad_export'(
_,
_Module,
_ContextModule)
:- '$bad_export'.
327 '$bad_export'(
Name/Arity,
Module,
ContextModule)
:-
330 print_message(warning, declaration(
Name/Arity,
Module,
ContextModule, private)).
331 '$bad_export'(
Name//Arity,
Module,
ContextModule)
:-
335 print_message(warning, declaration(
Name/Arity,
Module,
ContextModule, private)).
336 '$bad_export'(
Indicator,
Module,
ContextModule)
:- '$bad_export',
337 print_message(warning, declaration(
Indicator,
Module,
ContextModule, undefined)).
339 '$neg_conversion'([],
Exports,
_,
_,
Exports,
_).
340 '$neg_conversion'([
N1/A1|Ps],
List,
Module,
ContextModule,
MyExports,
Goal)
:- '$neg_conversion',
342 lists
:delete(
List,
N1/A1,
RList)
344 '$neg_conversion'(
Ps,
RList,
Module,
ContextModule,
MyExports,
Goal)
346 '$bad_export'(
N1/A1,
Module,
ContextModule)
348 '$neg_conversion'([
N1//A1|Ps],
List,
Module,
ContextModule,
MyExports,
Goal)
:- '$neg_conversion',
351 lists
:delete(
List,
N1/A2,
RList)
353 '$neg_conversion'(
Ps,
RList,
Module,
ContextModule,
MyExports,
Goal)
355 '$bad_export'(
N1//A1,
Module,
ContextModule)
357 '$neg_conversion'([op(
Prio,
Assoc,
Name)
|Ps],
List,
Module,
ContextModule,
MyExports,
Goal)
:- '$neg_conversion',
359 lists
:delete(
List, op(
Prio,
Assoc,
Name),
RList)
361 '$neg_conversion'(
Ps,
RList,
Module,
ContextModule,
MyExports,
Goal)
363 '$bad_export'(op(
Prio,
Assoc,
Name),
Module,
ContextModule)
365 '$clean_conversion'([
P|_],
_List,
_,
_,
_,
Goal)
:-
366 '$do_error'(domain_error(module_export_predicates,
P),
Goal).
368predicate_property( P, Prop)
add_import_module( + Module, + ImportModule , +_Pos_)
b_getval(+ Name, - Value)
print_message(+ Severity, +Term)
delete(+ List, ? Element, ? Residue)
member(?Element, ?Set) is true when Set is a list, and Element occurs in it
memberchk(+ Element, + Set)