1:- module(dialect_loader_lib,[dialect_on_load/3,get_prolog_load_context/1]). 2 3:- dynamic(setup_dialect_load_context/1). 4 5get_prolog_load_context([variable_names=Vs,module=M,file=F,line=L,dialect=D,source=S,reload=R]):- 6 source_location(F,L), 7 prolog_load_context(variable_names,Vs), 8 prolog_load_context(module,M), 9 prolog_load_context(dialect,D), 10 prolog_load_context(source,S), 11 (prolog_load_context(reload,R)->true;R=false). 12 13:- module_transparent(dialect_on_load/3). 14:- meta_predicate(dialect_on_load( , , )). 15 16dialect_on_load(P1,T,DC):- 17 strip_module(DC,_,DC0), 18 b_setval('$term',T), 19 b_setval('$prolog_load_context',DC0), 20 ignore((memberchk(variable_names=Vs,DC0), 21 b_setval('$variable_names',Vs))), 22 call(P1,T)