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(1,+,:)).   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)