reexport again
This commit is contained in:
parent
93859706e3
commit
e0642dbaa3
@ -245,6 +245,7 @@ load_files(Files,Opts) :-
|
|||||||
;
|
;
|
||||||
true
|
true
|
||||||
), !,
|
), !,
|
||||||
|
'$lf_opt'(reexport, TOpts, Reexport),
|
||||||
'$lf_opt'(if, TOpts, If),
|
'$lf_opt'(if, TOpts, If),
|
||||||
( var(If) -> If = true ; true ),
|
( var(If) -> If = true ; true ),
|
||||||
'$lf_opt'(imports, TOpts, Imports),
|
'$lf_opt'(imports, TOpts, Imports),
|
||||||
@ -258,13 +259,13 @@ load_files(Files,Opts) :-
|
|||||||
'$lf_opt'('$options', TOpts, Opts),
|
'$lf_opt'('$options', TOpts, Opts),
|
||||||
'$lf_opt'('$location', TOpts, ParentF:Line),
|
'$lf_opt'('$location', TOpts, ParentF:Line),
|
||||||
'$loaded'(Stream, UserFile, Mod, ParentF, Line, not_loaded, _File, _Dir, Opts),
|
'$loaded'(Stream, UserFile, Mod, ParentF, Line, not_loaded, _File, _Dir, Opts),
|
||||||
'$reexport'( TOpts, UserFile, Imports, Mod ).
|
'$reexport'( TOpts, ParentF, Imports, _File ).
|
||||||
'$start_lf'(changed, Mod, Stream, TOpts, UserFile, Imports) :-
|
'$start_lf'(changed, Mod, Stream, TOpts, UserFile, Imports) :-
|
||||||
'$file_unchanged'(Stream, Mod, Imports, TOpts), !,
|
'$file_unchanged'(Stream, Mod, Imports, TOpts), !,
|
||||||
'$lf_opt'('$options', TOpts, Opts),
|
'$lf_opt'('$options', TOpts, Opts),
|
||||||
'$lf_opt'('$location', TOpts, ParentF:Line),
|
'$lf_opt'('$location', TOpts, ParentF:Line),
|
||||||
'$loaded'(Stream, UserFile, Mod, ParentF, Line, changed, _File, _Dir, Opts),
|
'$loaded'(Stream, UserFile, Mod, ParentF, Line, changed, _File, _Dir, Opts),
|
||||||
'$reexport'( TOpts, UserFile, Imports, Mod ).
|
'$reexport'( TOpts, ParentF, Imports, _File ).
|
||||||
'$start_lf'(_, Mod, Stream, TOpts, File, _) :-
|
'$start_lf'(_, Mod, Stream, TOpts, File, _) :-
|
||||||
'$do_lf'(Mod, Stream, File, TOpts).
|
'$do_lf'(Mod, Stream, File, TOpts).
|
||||||
|
|
||||||
@ -391,13 +392,12 @@ use_module(M,F,Is) :-
|
|||||||
nb_setval('$if_level',OldIfLevel),
|
nb_setval('$if_level',OldIfLevel),
|
||||||
'$lf_opt'('$use_module', TOpts, UseModule),
|
'$lf_opt'('$use_module', TOpts, UseModule),
|
||||||
'$bind_module'(Mod, UseModule),
|
'$bind_module'(Mod, UseModule),
|
||||||
% ( File = '/Users/vsc/Yap/bins/threads/share/Yap/error.pl' -> start_low_level_trace ; stop_low_level_trace ),
|
|
||||||
'$lf_opt'(imports, TOpts, Imports),
|
'$lf_opt'(imports, TOpts, Imports),
|
||||||
'$import_to_current_module'(File, ContextModule, Imports, _, TOpts),
|
'$import_to_current_module'(File, ContextModule, Imports, _, TOpts),
|
||||||
'$reexport'( TOpts, File, Imports, ContextModule ),
|
'$reexport'( TOpts, ParentF, Imports, File ),
|
||||||
( LC == 0 -> prompt(_,' |: ') ; true),
|
( LC == 0 -> prompt(_,' |: ') ; true),
|
||||||
'$exec_initialisation_goals',
|
'$exec_initialisation_goals',
|
||||||
% format( 'O=~w~n', [Mod=UserFile] ),
|
% format( 'O=~w~n', [Mod=UserFile] ),
|
||||||
!.
|
!.
|
||||||
|
|
||||||
% are we in autoload and autoload_flag is false?
|
% are we in autoload and autoload_flag is false?
|
||||||
@ -432,6 +432,13 @@ use_module(M,F,Is) :-
|
|||||||
'$bind_module'(_, load_files).
|
'$bind_module'(_, load_files).
|
||||||
'$bind_module'(Mod, use_module(Mod)).
|
'$bind_module'(Mod, use_module(Mod)).
|
||||||
|
|
||||||
|
'$import_to_current_module'(File, ContextModule, Imports, RemainingImports, TOpts) :-
|
||||||
|
\+ recorded('$module','$module'(File, _Module, _ModExports, _),_),
|
||||||
|
% enable loading C-predicates from a different file
|
||||||
|
recorded( '$load_foreign_done', [File, M0], _),
|
||||||
|
'$import_foreign'(File, M0, ContextModule ),
|
||||||
|
fail.
|
||||||
|
|
||||||
'$import_to_current_module'(File, ContextModule, Imports, RemainingImports, TOpts) :-
|
'$import_to_current_module'(File, ContextModule, Imports, RemainingImports, TOpts) :-
|
||||||
recorded('$module','$module'(File, Module, ModExports, _),_),
|
recorded('$module','$module'(File, Module, ModExports, _),_),
|
||||||
Module \= ContextModule, !,
|
Module \= ContextModule, !,
|
||||||
@ -578,13 +585,13 @@ initialization(G,OPT) :-
|
|||||||
print_message(Verbosity, loaded(included, Y, Mod, T, H)),
|
print_message(Verbosity, loaded(included, Y, Mod, T, H)),
|
||||||
nb_setval('$included_file',OY).
|
nb_setval('$included_file',OY).
|
||||||
|
|
||||||
'$reexport'( TOpts, File, Imports, ContextModule ) :-
|
'$reexport'( TOpts, File, Imports, OldF ) :-
|
||||||
'$lf_opt'(reexport, TOpts, Reexport),
|
'$lf_opt'(reexport, TOpts, Reexport),
|
||||||
( Reexport == false -> true ;
|
( Reexport == false -> true ;
|
||||||
'$lf_opt'('$parent_topts', TOpts, OldTOpts),
|
'$lf_opt'('$parent_topts', TOpts, OldTOpts),
|
||||||
'$lf_opt'('$context_module', OldTOpts, OldContextModule),
|
'$lf_opt'('$context_module', OldTOpts, OldContextModule),
|
||||||
'$import_to_current_module'(File, OldContextModule, Imports, _, TOpts),
|
'$import_to_current_module'(File, OldContextModule, Imports, _, TOpts),
|
||||||
'$extend_exports'(ContextModule, Imports)
|
'$extend_exports'(File, Imports, OldF )
|
||||||
).
|
).
|
||||||
|
|
||||||
'$do_startup_reconsult'(X) :-
|
'$do_startup_reconsult'(X) :-
|
||||||
|
@ -15,11 +15,19 @@
|
|||||||
* *
|
* *
|
||||||
*************************************************************************/
|
*************************************************************************/
|
||||||
|
|
||||||
|
load_foreign_files(_Objs,_Libs,_Entry) :-
|
||||||
|
prolog_load_context(file, F),
|
||||||
|
prolog_load_context(module, M),
|
||||||
|
recorded( '$load_foreign_done', [F, M0], _), !,
|
||||||
|
'$import_foreign'(F, M0, M).
|
||||||
load_foreign_files(Objs,Libs,Entry) :-
|
load_foreign_files(Objs,Libs,Entry) :-
|
||||||
'$check_objs_for_load_foreign_files'(Objs,NewObjs,load_foreign_files(Objs,Libs,Entry)),
|
'$check_objs_for_load_foreign_files'(Objs,NewObjs,load_foreign_files(Objs,Libs,Entry)),
|
||||||
'$check_libs_for_load_foreign_files'(Libs,NewLibs,load_foreign_files(Objs,Libs,Entry)),
|
'$check_libs_for_load_foreign_files'(Libs,NewLibs,load_foreign_files(Objs,Libs,Entry)),
|
||||||
'$check_entry_for_load_foreign_files'(Entry,load_foreign_files(Objs,Libs,Entry)),
|
'$check_entry_for_load_foreign_files'(Entry,load_foreign_files(Objs,Libs,Entry)),
|
||||||
'$load_foreign_files'(NewObjs,NewLibs,Entry).
|
'$load_foreign_files'(NewObjs,NewLibs,Entry),
|
||||||
|
prolog_load_context(file, F),
|
||||||
|
prolog_load_context(module, M),
|
||||||
|
ignore( recordzifnot( '$load_foreign_done', [F, M], _) ), !.
|
||||||
|
|
||||||
'$check_objs_for_load_foreign_files'(V,_,G) :- var(V), !,
|
'$check_objs_for_load_foreign_files'(V,_,G) :- var(V), !,
|
||||||
'$do_error'(instantiation_error,G).
|
'$do_error'(instantiation_error,G).
|
||||||
@ -67,6 +75,14 @@ load_foreign_files(Objs,Libs,Entry) :-
|
|||||||
'$checklib_prefix'(F, Lib) :-
|
'$checklib_prefix'(F, Lib) :-
|
||||||
atom_concat(lib, F, Lib).
|
atom_concat(lib, F, Lib).
|
||||||
|
|
||||||
|
'$import_foreign'(F, M0, M) :-
|
||||||
|
M \= M0,
|
||||||
|
predicate_property(M0:P,built_in),
|
||||||
|
predicate_property(M0:P,file(F)),
|
||||||
|
functor(P, N, K),
|
||||||
|
'$do_import'(N/K-N/K, M0, M),
|
||||||
|
fail.
|
||||||
|
'$import_foreign'(_F, _M0, _M).
|
||||||
|
|
||||||
'$check_entry_for_load_foreign_files'(V,G) :- var(V), !,
|
'$check_entry_for_load_foreign_files'(V,G) :- var(V), !,
|
||||||
'$do_error'(instantiation_error,G).
|
'$do_error'(instantiation_error,G).
|
||||||
|
@ -86,9 +86,11 @@ module(N) :-
|
|||||||
( source_location(_, Line) -> true ; Line = 0 ),
|
( source_location(_, Line) -> true ; Line = 0 ),
|
||||||
recorda('$module','$module'(F,Module,AllExports, Line),_).
|
recorda('$module','$module'(F,Module,AllExports, Line),_).
|
||||||
|
|
||||||
'$extend_exports'(Module, NewExports) :-
|
'$extend_exports'(F, Exps , NewF) :-
|
||||||
'$convert_for_export'(all, NewExports, Module, Module, _TranslationTab, NewExports1, load_files),
|
writeln( (Exps, F, NewF ) ),
|
||||||
recorded('$module','$module'(F,Module,OriginalExports,Line),R),
|
recorded('$module','$module'(NewF,NMod, NewExports, _),_R),
|
||||||
|
recorded('$module','$module'(F, Module,OriginalExports,Line),R),
|
||||||
|
'$convert_for_export'(Exps, NewExports, NMod, NMod, _TranslationTab, NewExports1, load_files),
|
||||||
'$add_exports'( NewExports1, OriginalExports, Exports ),
|
'$add_exports'( NewExports1, OriginalExports, Exports ),
|
||||||
erase(R),
|
erase(R),
|
||||||
sort( Exports, AllExports ),
|
sort( Exports, AllExports ),
|
||||||
|
Reference in New Issue
Block a user