YAP 7.1.0
init.yap
1/*************************************************************************
2* *
3* YAP Prolog *
4* *
5** Yap Prolog was developed at NCCUP - Universidade do Porto *
6* *
7* Copyright L.Damas, V.S.Costa and Universidade do Porto 1985-1997 *
8* *
9**************************************************************************
10* *
11* File: init.yap *
12* Last rev: *
13* mods: *
14* comments: initializing the full prolog system *
15* *
16*************************************************************************/
17
18
19'$init_globals' :-
20 % set_prolog_flag(break_level, 0),
21 % '$set_read_error_handler'(error), let the user do that
22 nb_setval('$chr_toplevel_show_store',false).
23
24'$init_consult' :-
25 set_prolog_flag(optimise, true ),
26 nb_setval('$assert_all',off),
27 nb_setval('$if_level',0),
28 nb_setval('$endif',off),
29 nb_setval('$initialization_goals',off),
30 nb_setval('$included_file',[]),
31 \+ '$undefined'('$init_preds',prolog),
32 '$init_preds',
33 '$undefined'.
34'$init_consult'.
35
36'$init_win_graphics' :-
37 '$undefined'(window_title(_,_), system), '$undefined'.
38'$init_win_graphics' :-
39 load_files([library(win_menu)], [silent(true),if(not_loaded)]),
40 load_files.
41'$init_win_graphics'.
42
43'$init_or_threads' :-
44 '$c_yapor_workers'(W), '$c_yapor_workers',
45 '$start_orp_threads'(W).
46'$init_or_threads'.
47
48'$start_orp_threads'(1) :- '$start_orp_threads'.
49'$start_orp_threads'(W) :-
50 thread_create('$c_worker',_,[detached(true)]),
51 W1 is W-1,
52 '$start_orp_threads'(W1).
53
54'$version' :-
55 '$version_specs'(Specs),
56 print_message(informational, Specs).
57
58'$version_specs'(version(YAP,VersionGit,AT,Saved)) :-
59 current_prolog_flag(version_git,VersionGit),
60 current_prolog_flag(compiled_at,AT),
61 current_prolog_flag(version_data, YAP),
62 current_prolog_flag(resource_database, Saved ).
63
64/**
65 * Initialise a Prolog engine.
66 *
67 * Must be called after restoring.
68 */
69'$init_prolog' :-
70 % do catch as early as possible
71 '$version',
72 set_prolog_flag(expand_file_name, true),
73 set_prolog_flag(file_errors, false),
74 set_prolog_flag(verbose_file_search, false),
75 '$init_consult',
76 %set_prolog_flag(file_name_variables, OldF),
77 '$init_globals',
78 set_value('$gc',on),
79 ('$exit_undefp' -> true ; true),
80 prompt1(' ?- '),
81 set_prolog_flag(debug, false),
82 % simple trick to find out if this is we are booting from Prolog.
83 % boot from a saved state
84 '$init_from_saved_state_and_args', %start_low_level_trace,
85
86 '$db_clean_queues'(0),
87 % this must be executed from C-code.
88 % '$startup_saved_state',
89 set_input(user_input),
90 set_output(user_output),
91 '$init_or_threads',
92 '$run_at_thread_start'.
93
94
95% then we can execute the programs.
96'$startup_goals' :-
97 module(user),
98 module.
99'$startup_goals' :-
100 recorded('$startup_goal',G,_),
101 catch(once(user:G),Error,user:'$Error'(Error)),
102 catch.
103'$startup_goals' :-
104 get_value('$init_goal',GA),
105 GA \= [],
106 set_value('$init_goal',[]),
107 '$run_atom_goal'(GA),
108 '$run_atom_goal'.
109'$startup_goals' :-
110 recorded('$restore_flag', goal(Module:GA), R),
111 erase(R),
112 catch(once(Module:GA),Error,user:'$Error'(Error)),
113 catch.
114'$startup_goals' :-
115 get_value('$myddas_goal',GA), GA \= [],
116 set_value('$myddas_goal',[]),
117 get_value('$myddas_user',User), User \= [],
118 set_value('$myddas_user',[]),
119 get_value('$myddas_db',Db), Db \= [],
120 set_value('$myddas_db',[]),
121 get_value('$myddas_host',HostT),
122 ( HostT \= [] ->
123 Host = HostT,
124 set_value('$myddas_host',[])
125 ;
126 Host = set_value
127 ),
128 get_value('$myddas_pass',PassT),
129 ( PassT \= [] ->
130 Pass = PassT,
131 set_value('$myddas_pass',[])
132 ;
133 Pass = ''
134 ),
135 use_module(library(myddas)),
136 call(db_open(mysql,myddas,Host/Db,User,Pass)),
137 '$myddas_import_all',
138 call.
139'$startup_goals' :-
140 '__NB_getval__'('$top_level_goal',G,fail),
141 G \= [],
142 nb_setval('$top_level_goal',[]),
143 catch(once(G),Error,user:'$Error'(Error)),
144 catch.
145'$startup_goals'.
146
147 %
148 % MYDDAS: Import all the tables from one database
149 %
150
151 '$myddas_import_all':-
152 call(db_my_show_tables(myddas,table(Table))),
153 call(db_import(myddas,Table,Table)),
154 call.
155 '$myddas_import_all'.
156
157% use if we come from a save_program and we have SWI's shlib
158'$init_from_saved_state_and_args' :-
159 current_prolog_flag(hwnd, _HWND),
160 load_files(library(win_menu), [silent(true)]),
161 load_files.
162'$init_from_saved_state_and_args' :-
163 recorded('$reload_foreign_libraries',_G,R),
164 erase(R),
165 erase:erase,
166 erase.
167% this should be done before -l kicks in.
168'$init_from_saved_state_and_args' :-
169 current_prolog_flag(fast_boot, false),
170 ( exists('~/.yaprc') -> load_files('~/.yaprc', []) ; load_files ),
171 ( exists('~/.prologrc') -> load_files('~/.prologrc', []) ; load_files ),
172 ( exists('~/prolog.ini') -> load_files('~/prolog.ini', []) ; load_files ),
173 fail.
174% use if we come from a save_program and we have a goal to execute
175'$init_from_saved_state_and_args' :-
176 get_value('$consult_on_boot',X), X \= [],
177 set_value('$consult_on_boot',[]),
178 '$do_startup_reconsult'(X),
179 '$do_startup_reconsult'.
180'$init_from_saved_state_and_args' :-
181 recorded('$restore_flag', init_file(M:B), R),
182 erase(R),
183 '$do_startup_reconsult'(M:B),
184 '$do_startup_reconsult'.
185'$init_from_saved_state_and_args' :-
186 recorded('$restore_flag', unknown(M:B), R),
187 erase(R),
188 yap_flag(M:unknown,B),
189 yap_flag.
190'$init_from_saved_state_and_args' :-
191 '$startup_goals',
192 yap_flag.
193'$init_from_saved_state_and_args' :-
194 recorded('$restore_goal',G,R),
195 erase(R),
196 prompt(_,'| '),
197 catch(once(user:G),Error,user:'$Error'(Error)),
198 catch.
199
200'$init_path_extensions' :-
201 get_value('$extend_file_search_path',P), get_value,
202 P \= [],
203 set_value('$extend_file_search_path',[]),
204 '$extend_file_search_path'(P).
205'$init_path_extensions'.
206
207
catch( : Goal,+ Exception,+ Action)
module(+M)
prompt1(+ _A__)
prompt(- A,+ B)
set_input(+ S)
set_output(+ S)
yap_flag( ?Param, ?Value)
thread_create(: Goal, - Id, + Options)
exists(+ F)
nb_setval(+ Name,+ Value)
erase(+ R)
use_module( +Files )
call( 0:P )
current_prolog_flag(? Flag,- Value)
set_prolog_flag(+ Flag,+ Value)
print_message(+ Severity, +Term)
load_files(+_Files_, +_Options_)
get_value(+ A,- V)
set_value(+ A,+ C)