a68g-prelude.h
1 //! @file a68g-prelude.h
2 //! @author J. Marcel van der Veer
3 //!
4 //! @section Copyright
5 //!
6 //! This file is part of Algol68G - an Algol 68 compiler-interpreter.
7 //! Copyright 2001-2023 J. Marcel van der Veer [algol68g@xs4all.nl].
8 //!
9 //! @section License
10 //!
11 //! This program is free software; you can redistribute it and/or modify it
12 //! under the terms of the GNU General Public License as published by the
13 //! Free Software Foundation; either version 3 of the License, or
14 //! (at your option) any later version.
15 //!
16 //! This program is distributed in the hope that it will be useful, but
17 //! WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
18 //! or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
19 //! more details. You should have received a copy of the GNU General Public
20 //! License along with this program. If not, see [http://www.gnu.org/licenses/].
21
22 #if !defined (__A68G_PRELUDE_H__)
23 #define __A68G_PRELUDE_H__
24
25 #define A68_STD A68_TRUE
26 #define A68_EXT A68_FALSE
27
28 extern MOID_T *a68_proc (MOID_T *, ...);
29 extern void a68_idf (BOOL_T, char *, MOID_T *, GPROC *);
30 extern void a68_prio (char *, int);
31 extern void a68_op (BOOL_T, char *, MOID_T *, GPROC *);
32 extern void a68_mode (int, char *, MOID_T **);
33
34 // ALGOL68C type procs.
35
36 #define A68C_DEFIO(name, pname, mode) {\
37 m = a68_proc (MODE (mode), M_REF_FILE, NO_MOID);\
38 a68_idf (A68_EXT, "get" #name, m, genie_get_##pname);\
39 m = a68_proc (M_VOID, M_REF_FILE, MODE (mode), NO_MOID);\
40 a68_idf (A68_EXT, "put" #name, m, genie_put_##pname);\
41 m = a68_proc (MODE (mode), NO_MOID);\
42 a68_idf (A68_EXT, "read" #name, m, genie_read_##pname);\
43 m = a68_proc (M_VOID, MODE (mode), NO_MOID);\
44 a68_idf (A68_EXT, "print" #name, m, genie_print_##pname);\
45 }
46
47 #define IS_NL_FF(ch) ((ch) == NEWLINE_CHAR || (ch) == FORMFEED_CHAR)
48
49 #define A68_MONAD(n, MODE, OP)\
50 void n (NODE_T * p) {\
51 MODE *i;\
52 POP_OPERAND_ADDRESS (p, i, MODE);\
53 VALUE (i) = OP (VALUE (i));\
54 }
55
56 #if (A68_LEVEL >= 3)
57 extern GPROC genie_lt_bits;
58 extern GPROC genie_gt_bits;
59 extern DOUBLE_T mp_to_double_real (NODE_T *, MP_T *, int);
60 extern MP_T *double_real_to_mp (NODE_T *, MP_T *, DOUBLE_T, int);
61 #endif
62
63 extern A68_REF c_string_to_row_char (NODE_T *, char *, int);
64 extern A68_REF c_to_a_string (NODE_T *, char *, int);
65 extern A68_REF empty_row (NODE_T *, MOID_T *);
66 extern A68_REF empty_string (NODE_T *);
67 extern A68_REF genie_make_row (NODE_T *, MOID_T *, int, ADDR_T);
68 extern A68_REF genie_store (NODE_T *, MOID_T *, A68_REF *, A68_REF *);
69 extern A68_REF heap_generator (NODE_T *, MOID_T *, int);
70 extern A68_REF tmp_to_a68_string (NODE_T *, char *);
71 extern ADDR_T calculate_internal_index (A68_TUPLE *, int);
72 extern BOOL_T close_device (NODE_T *, A68_FILE *);
73 extern BOOL_T genie_int_case_unit (NODE_T *, int, int *);
74 extern BOOL_T increment_internal_index (A68_TUPLE *, int);
75 extern char *a_to_c_string (NODE_T *, char *, A68_REF);
76 extern char *propagator_name (PROP_PROC * p);
77 extern FILE *a68_fopen (char *, char *, char *);
78 extern GPROC get_global_level;
79 extern GPROC initialise_frame;
80 extern int a68_finite (REAL_T);
81 extern int a68_isinf (REAL_T);
82 extern int a68_isnan (REAL_T);
83 extern int a68_string_size (NODE_T *, A68_REF);
84 extern int char_value (int);
85 extern int grep_in_string (char *, char *, int *, int *);
86 extern INT_T a68_round (REAL_T);
87 extern PROP_T genie_generator (NODE_T *);
88 extern REAL_T seconds (void);
89 extern REAL_T ten_up (int);
90 extern ssize_t io_read_conv (FILE_T, void *, size_t);
91 extern ssize_t io_read (FILE_T, void *, size_t);
92 extern ssize_t io_write_conv (FILE_T, const void *, size_t);
93 extern ssize_t io_write (FILE_T, const void *, size_t);
94 extern unt heap_available (void);
95 extern void a68_div_complex (A68_REAL *, A68_REAL *, A68_REAL *);
96 extern void a68_exit (int);
97 extern void a68_exp_complex (A68_REAL *, A68_REAL *);
98 extern void change_breakpoints (NODE_T *, unt, int, BOOL_T *, char *);
99 extern void change_masks (NODE_T *, unt, BOOL_T);
100 extern void colour_object (BYTE_T *, MOID_T *);
101 extern void deltagammainc (REAL_T *, REAL_T *, REAL_T, REAL_T, REAL_T, REAL_T);
102 extern void exit_genie (NODE_T *, int);
103 extern void gc_heap (NODE_T *, ADDR_T);
104 extern void genie_call_event_routine (NODE_T *, MOID_T *, A68_PROCEDURE *, ADDR_T, ADDR_T);
105 extern void genie_call_operator (NODE_T *, ADDR_T);
106 extern void genie_call_procedure (NODE_T *, MOID_T *, MOID_T *, MOID_T *, A68_PROCEDURE *, ADDR_T, ADDR_T);
107 extern void genie_check_initialisation (NODE_T *, BYTE_T *, MOID_T *);
108 extern void genie_f_and_becomes (NODE_T *, MOID_T *, GPROC *);
109 extern void genie_find_proc_op (NODE_T *, int *);
110 extern void genie_free (NODE_T *);
111 extern void genie_generator_internal (NODE_T *, MOID_T *, TAG_T *, LEAP_T, ADDR_T);
112 extern void genie_generator_stowed (NODE_T *, BYTE_T *, NODE_T **, ADDR_T *);
113 extern void genie_init_rng (void);
114 extern void genie_preprocess (NODE_T *, int *, void *);
115 extern void genie_push_undefined (NODE_T *, MOID_T *);
116 extern void genie_read_standard (NODE_T *, MOID_T *, BYTE_T *, A68_REF);
117 extern void genie_serial_clause (NODE_T *, jmp_buf *);
118 extern void genie_serial_units (NODE_T *, NODE_T **, jmp_buf *, ADDR_T);
119 extern void genie_string_to_value (NODE_T *, MOID_T *, BYTE_T *, A68_REF);
120 extern void genie_subscript (NODE_T *, A68_TUPLE **, INT_T *, NODE_T **);
121 extern void genie_value_to_string (NODE_T *, MOID_T *, BYTE_T *, int);
122 extern void genie_variable_dec (NODE_T *, NODE_T **, ADDR_T);
123 extern void genie (void *);
124 extern void genie_write_standard (NODE_T *, MOID_T *, BYTE_T *, A68_REF);
125 extern void initialise_internal_index (A68_TUPLE *, int);
126 extern void io_close_tty_line (void);
127 extern void io_write_string (FILE_T, const char *);
128 extern void monitor_error (char *, char *);
129 extern void mp_strtou (NODE_T *, MP_T *, char *, MOID_T *);
130 extern void print_internal_index (FILE_T, A68_TUPLE *, int);
131 extern void print_item (NODE_T *, FILE_T, BYTE_T *, MOID_T *);
132 extern void single_step (NODE_T *, unt);
133 extern void skip_nl_ff (NODE_T *, int *, A68_REF);
134 extern void stack_dump (FILE_T, ADDR_T, int, int *);
135 extern void value_sign_error (NODE_T *, MOID_T *, A68_REF);
136 extern void where_in_source (FILE_T, NODE_T *);
137
138 // Standard prelude RTS
139
140 extern GPROC genie_a68_argc;
141 extern GPROC genie_a68_argv;
142 extern GPROC genie_abend;
143 extern GPROC genie_abs_bits;
144 extern GPROC genie_abs_bool;
145 extern GPROC genie_abs_char;
146 extern GPROC genie_abs_complex;
147 extern GPROC genie_abs_int;
148 extern GPROC genie_abs_real;
149 extern GPROC genie_acos_complex;
150 extern GPROC genie_acosdg_real;
151 extern GPROC genie_acosh_complex;
152 extern GPROC genie_acosh_real;
153 extern GPROC genie_acos_real;
154 extern GPROC genie_acotdg_real;
155 extern GPROC genie_acot_real;
156 extern GPROC genie_acsc_real;
157 extern GPROC genie_add_bits;
158 extern GPROC genie_add_bytes;
159 extern GPROC genie_add_char;
160 extern GPROC genie_add_complex;
161 extern GPROC genie_add_int;
162 extern GPROC genie_add_long_bytes;
163 extern GPROC genie_add_mp_int;
164 extern GPROC genie_add_real;
165 extern GPROC genie_add_string;
166 extern GPROC genie_and_bits;
167 extern GPROC genie_and_bool;
168 extern GPROC genie_argc;
169 extern GPROC genie_arg_complex;
170 extern GPROC genie_argv;
171 extern GPROC genie_asec_real;
172 extern GPROC genie_asin_complex;
173 extern GPROC genie_asindg_real;
174 extern GPROC genie_asinh_complex;
175 extern GPROC genie_asinh_real;
176 extern GPROC genie_asin_real;
177 extern GPROC genie_associate;
178 extern GPROC genie_atan2dg_real;
179 extern GPROC genie_atan2_real;
180 extern GPROC genie_atan_complex;
181 extern GPROC genie_atandg_real;
182 extern GPROC genie_atanh_complex;
183 extern GPROC genie_atanh_real;
184 extern GPROC genie_atan_real;
185 extern GPROC genie_backspace;
186 extern GPROC genie_backtrace;
187 extern GPROC genie_beta_inc_cf_real;
188 extern GPROC genie_beta_real;
189 extern GPROC genie_bin_int;
190 extern GPROC genie_bin_possible;
191 extern GPROC genie_bits;
192 extern GPROC genie_bits_lengths;
193 extern GPROC genie_bits_pack;
194 extern GPROC genie_bits_shorths;
195 extern GPROC genie_bits_width;
196 extern GPROC genie_blank_char;
197 extern GPROC genie_block;
198 extern GPROC genie_break;
199 extern GPROC genie_bytes_lengths;
200 extern GPROC genie_bytespack;
201 extern GPROC genie_bytes_shorths;
202 extern GPROC genie_bytes_width;
203 extern GPROC genie_cd;
204 extern GPROC genie_char_in_string;
205 extern GPROC genie_choose_real;
206 extern GPROC genie_clear_bits;
207 extern GPROC genie_clear_long_bits;
208 extern GPROC genie_close;
209 extern GPROC genie_columns;
210 extern GPROC genie_complex_lengths;
211 extern GPROC genie_complex_shorths;
212 extern GPROC genie_compressible;
213 extern GPROC genie_conj_complex;
214 extern GPROC genie_cos_complex;
215 extern GPROC genie_cosdg_real;
216 extern GPROC genie_cosh_complex;
217 extern GPROC genie_cosh_real;
218 extern GPROC genie_cospi_real;
219 extern GPROC genie_cos_real;
220 extern GPROC genie_cotdg_real;
221 extern GPROC genie_cotpi_real;
222 extern GPROC genie_cot_real;
223 extern GPROC genie_cputime;
224 extern GPROC genie_create;
225 extern GPROC genie_create_pipe;
226 extern GPROC genie_csc_real;
227 extern GPROC genie_curt_real;
228 extern GPROC genie_debug;
229 extern GPROC genie_declaration;
230 extern GPROC genie_directory;
231 extern GPROC genie_divab_complex;
232 extern GPROC genie_divab_real;
233 extern GPROC genie_div_complex;
234 extern GPROC genie_div_int;
235 extern GPROC genie_div_real;
236 extern GPROC genie_draw_possible;
237 extern GPROC genie_dyad_elems;
238 extern GPROC genie_dyad_lwb;
239 extern GPROC genie_dyad_upb;
240 extern GPROC genie_elem_bits;
241 extern GPROC genie_elem_bytes;
242 extern GPROC genie_elem_long_bits;
243 extern GPROC genie_elem_long_bits;
244 extern GPROC genie_elem_long_bytes;
245 extern GPROC genie_elem_string;
246 extern GPROC genie_enquiry_clause;
247 extern GPROC genie_entier_real;
248 extern GPROC genie_eof;
249 extern GPROC genie_eoln;
250 extern GPROC genie_eq_bits;
251 extern GPROC genie_eq_bool;
252 extern GPROC genie_eq_bytes;
253 extern GPROC genie_eq_char;
254 extern GPROC genie_eq_complex;
255 extern GPROC genie_eq_int;
256 extern GPROC genie_eq_long_bytes;
257 extern GPROC genie_eq_real;
258 extern GPROC genie_eq_string;
259 extern GPROC genie_erase;
260 extern GPROC genie_erfc_real;
261 extern GPROC genie_erf_real;
262 extern GPROC genie_errno;
263 extern GPROC genie_error_char;
264 extern GPROC genie_establish;
265 extern GPROC genie_evaluate;
266 extern GPROC genie_exec;
267 extern GPROC genie_exec_sub;
268 extern GPROC genie_exec_sub_output;
269 extern GPROC genie_exec_sub_pipeline;
270 extern GPROC genie_exp_char;
271 extern GPROC genie_exp_complex;
272 extern GPROC genie_exp_real;
273 extern GPROC genie_exp_width;
274 extern GPROC genie_fact_real;
275 extern GPROC genie_file_is_block_device;
276 extern GPROC genie_file_is_char_device;
277 extern GPROC genie_file_is_directory;
278 extern GPROC genie_file_is_regular;
279 extern GPROC genie_file_mode;
280 extern GPROC genie_first_random;
281 extern GPROC genie_flip_char;
282 extern GPROC genie_flop_char;
283 extern GPROC genie_fork;
284 extern GPROC genie_formfeed_char;
285 extern GPROC genie_gamma_inc_f_real;
286 extern GPROC genie_gamma_inc_gf_real;
287 extern GPROC genie_gamma_inc_g_real;
288 extern GPROC genie_gamma_inc_h_real;
289 extern GPROC genie_gamma_real;
290 extern GPROC genie_garbage_collections;
291 extern GPROC genie_garbage_freed;
292 extern GPROC genie_garbage_refused;
293 extern GPROC genie_garbage_seconds;
294 extern GPROC genie_gc_heap;
295 extern GPROC genie_ge_bits;
296 extern GPROC genie_ge_bytes;
297 extern GPROC genie_ge_char;
298 extern GPROC genie_ge_int;
299 extern GPROC genie_ge_long_bits;
300 extern GPROC genie_ge_long_bytes;
301 extern GPROC genie_generator_bounds;
302 extern GPROC genie_ge_real;
303 extern GPROC genie_ge_string;
304 extern GPROC genie_get_bits;
305 extern GPROC genie_get_bool;
306 extern GPROC genie_get_char;
307 extern GPROC genie_get_complex;
308 extern GPROC genie_getenv;
309 extern GPROC genie_get_int;
310 extern GPROC genie_get_long_bits;
311 extern GPROC genie_get_long_int;
312 extern GPROC genie_get_long_real;
313 extern GPROC genie_get_possible;
314 extern GPROC genie_get_real;
315 extern GPROC genie_get_sound;
316 extern GPROC genie_get_string;
317 extern GPROC genie_grep_in_string;
318 extern GPROC genie_grep_in_substring;
319 extern GPROC genie_gt_bytes;
320 extern GPROC genie_gt_char;
321 extern GPROC genie_gt_int;
322 extern GPROC genie_gt_long_bytes;
323 extern GPROC genie_gt_real;
324 extern GPROC genie_gt_string;
325 extern GPROC genie_i_complex;
326 extern GPROC genie_identity_dec;
327 extern GPROC genie_idf;
328 extern GPROC genie_idle;
329 extern GPROC genie_i_int_complex;
330 extern GPROC genie_im_complex;
331 extern GPROC genie_infinity_real;
332 extern GPROC genie_init_heap;
333 extern GPROC genie_init_transput;
334 extern GPROC genie_int_lengths;
335 extern GPROC genie_int_shorths;
336 extern GPROC genie_int_width;
337 extern GPROC genie_inverfc_real;
338 extern GPROC genie_inverf_real;
339 extern GPROC genie_is_alnum;
340 extern GPROC genie_is_alpha;
341 extern GPROC genie_is_cntrl;
342 extern GPROC genie_is_digit;
343 extern GPROC genie_is_graph;
344 extern GPROC genie_is_lower;
345 extern GPROC genie_is_print;
346 extern GPROC genie_is_punct;
347 extern GPROC genie_is_space;
348 extern GPROC genie_is_upper;
349 extern GPROC genie_is_xdigit;
350 extern GPROC genie_last_char_in_string;
351 extern GPROC genie_le_bits;
352 extern GPROC genie_le_bytes;
353 extern GPROC genie_le_char;
354 extern GPROC genie_le_int;
355 extern GPROC genie_le_long_bits;
356 extern GPROC genie_le_long_bytes;
357 extern GPROC genie_leng_bytes;
358 extern GPROC genie_lengthen_long_bits_to_row_bool;
359 extern GPROC genie_le_real;
360 extern GPROC genie_le_string;
361 extern GPROC genie_lj_e_12_6;
362 extern GPROC genie_lj_f_12_6;
363 extern GPROC genie_ln1p_real;
364 extern GPROC genie_ln_beta_real;
365 extern GPROC genie_ln_choose_real;
366 extern GPROC genie_ln_complex;
367 extern GPROC genie_ln_fact_real;
368 extern GPROC genie_ln_gamma_real;
369 extern GPROC genie_ln_real;
370 extern GPROC genie_localtime;
371 extern GPROC genie_lock;
372 extern GPROC genie_log_real;
373 extern GPROC genie_long_bits_pack;
374 extern GPROC genie_long_bits_width;
375 extern GPROC genie_long_bytespack;
376 extern GPROC genie_long_bytes_width;
377 extern GPROC genie_long_exp_width;
378 extern GPROC genie_long_int_width;
379 extern GPROC genie_long_max_bits;
380 extern GPROC genie_long_max_int;
381 extern GPROC genie_long_max_real;
382 extern GPROC genie_long_min_real;
383 extern GPROC genie_long_next_random;
384 extern GPROC genie_long_real_width;
385 extern GPROC genie_long_small_real;
386 extern GPROC genie_lt_bytes;
387 extern GPROC genie_lt_char;
388 extern GPROC genie_lt_int;
389 extern GPROC genie_lt_long_bytes;
390 extern GPROC genie_lt_real;
391 extern GPROC genie_lt_string;
392 extern GPROC genie_make_term;
393 extern GPROC genie_max_abs_char;
394 extern GPROC genie_max_bits;
395 extern GPROC genie_max_int;
396 extern GPROC genie_max_real;
397 extern GPROC genie_min_real;
398 extern GPROC genie_minusab_complex;
399 extern GPROC genie_minusab_int;
400 extern GPROC genie_minusab_mp_int;
401 extern GPROC genie_minusab_real;
402 extern GPROC genie_minus_complex;
403 extern GPROC genie_minus_infinity_real;
404 extern GPROC genie_minus_int;
405 extern GPROC genie_minus_real;
406 extern GPROC genie_modab_int;
407 extern GPROC genie_mod_bits;
408 extern GPROC genie_mod_int;
409 extern GPROC genie_monad_elems;
410 extern GPROC genie_monad_lwb;
411 extern GPROC genie_monad_upb;
412 extern GPROC genie_mp_radix;
413 extern GPROC genie_mul_complex;
414 extern GPROC genie_mul_int;
415 extern GPROC genie_mul_mp_int;
416 extern GPROC genie_mul_real;
417 extern GPROC genie_ne_bits;
418 extern GPROC genie_ne_bool;
419 extern GPROC genie_ne_bytes;
420 extern GPROC genie_ne_char;
421 extern GPROC genie_ne_complex;
422 extern GPROC genie_ne_int;
423 extern GPROC genie_ne_long_bytes;
424 extern GPROC genie_ne_real;
425 extern GPROC genie_ne_string;
426 extern GPROC genie_new_line;
427 extern GPROC genie_newline_char;
428 extern GPROC genie_new_page;
429 extern GPROC genie_new_sound;
430 extern GPROC genie_next_random;
431 extern GPROC genie_next_rnd;
432 extern GPROC genie_not_bits;
433 extern GPROC genie_not_bool;
434 extern GPROC genie_null_char;
435 extern GPROC genie_odd_int;
436 extern GPROC genie_on_file_end;
437 extern GPROC genie_on_format_end;
438 extern GPROC genie_on_format_error;
439 extern GPROC genie_on_gc_event;
440 extern GPROC genie_on_line_end;
441 extern GPROC genie_on_open_error;
442 extern GPROC genie_on_page_end;
443 extern GPROC genie_on_transput_error;
444 extern GPROC genie_on_value_error;
445 extern GPROC genie_open;
446 extern GPROC genie_operator_dec;
447 extern GPROC genie_or_bits;
448 extern GPROC genie_or_bool;
449 extern GPROC genie_overab_int;
450 extern GPROC genie_over_bits;
451 extern GPROC genie_over_int;
452 extern GPROC genie_pi;
453 extern GPROC genie_plusab_bytes;
454 extern GPROC genie_plusab_complex;
455 extern GPROC genie_plusab_int;
456 extern GPROC genie_plusab_long_bytes;
457 extern GPROC genie_plusab_mp_int;
458 extern GPROC genie_plusab_real;
459 extern GPROC genie_plusab_string;
460 extern GPROC genie_plusto_bytes;
461 extern GPROC genie_plusto_long_bytes;
462 extern GPROC genie_plusto_string;
463 extern GPROC genie_pow_complex_int;
464 extern GPROC genie_pow_int;
465 extern GPROC genie_pow_real;
466 extern GPROC genie_pow_real_int;
467 extern GPROC genie_preemptive_gc_heap;
468 extern GPROC genie_print_bits;
469 extern GPROC genie_print_bool;
470 extern GPROC genie_print_char;
471 extern GPROC genie_print_complex;
472 extern GPROC genie_print_int;
473 extern GPROC genie_print_long_bits;
474 extern GPROC genie_print_long_int;
475 extern GPROC genie_print_long_real;
476 extern GPROC genie_print_real;
477 extern GPROC genie_print_string;
478 extern GPROC genie_print_string;
479 extern GPROC genie_proc_variable_dec;
480 extern GPROC genie_program_idf;
481 extern GPROC genie_put_bits;
482 extern GPROC genie_put_bool;
483 extern GPROC genie_put_char;
484 extern GPROC genie_put_complex;
485 extern GPROC genie_put_int;
486 extern GPROC genie_put_long_bits;
487 extern GPROC genie_put_long_int;
488 extern GPROC genie_put_long_real;
489 extern GPROC genie_put_possible;
490 extern GPROC genie_put_real;
491 extern GPROC genie_put_string;
492 extern GPROC genie_pwd;
493 extern GPROC genie_read;
494 extern GPROC genie_read_bin;
495 extern GPROC genie_read_bin_file;
496 extern GPROC genie_read_bits;
497 extern GPROC genie_read_bool;
498 extern GPROC genie_read_char;
499 extern GPROC genie_read_complex;
500 extern GPROC genie_read_file;
501 extern GPROC genie_read_file_format;
502 extern GPROC genie_read_format;
503 extern GPROC genie_read_int;
504 extern GPROC genie_read_line;
505 extern GPROC genie_read_long_bits;
506 extern GPROC genie_read_long_int;
507 extern GPROC genie_read_long_real;
508 extern GPROC genie_read_real;
509 extern GPROC genie_read_string;
510 extern GPROC genie_real_lengths;
511 extern GPROC genie_realpath;
512 extern GPROC genie_real_shorths;
513 extern GPROC genie_real_width;
514 extern GPROC genie_re_complex;
515 extern GPROC genie_reidf_possible;
516 extern GPROC genie_repr_char;
517 extern GPROC genie_reset;
518 extern GPROC genie_reset_errno;
519 extern GPROC genie_reset_possible;
520 extern GPROC genie_rol_bits;
521 extern GPROC genie_ror_bits;
522 extern GPROC genie_round_real;
523 extern GPROC genie_rows;
524 extern GPROC genie_sec_real;
525 extern GPROC genie_set;
526 extern GPROC genie_set_bits;
527 extern GPROC genie_set_long_bits;
528 extern GPROC genie_set_possible;
529 extern GPROC genie_set_return_code;
530 extern GPROC genie_set_sound;
531 extern GPROC genie_shl_bits;
532 extern GPROC genie_shorten_bytes;
533 extern GPROC genie_shr_bits;
534 extern GPROC genie_sign_int;
535 extern GPROC genie_sign_real;
536 extern GPROC genie_sin_complex;
537 extern GPROC genie_sindg_real;
538 extern GPROC genie_sinh_complex;
539 extern GPROC genie_sinh_real;
540 extern GPROC genie_sinpi_real;
541 extern GPROC genie_sin_real;
542 extern GPROC genie_sleep;
543 extern GPROC genie_small_real;
544 extern GPROC genie_sort_row_string;
545 extern GPROC genie_sound_channels;
546 extern GPROC genie_sound_rate;
547 extern GPROC genie_sound_resolution;
548 extern GPROC genie_sound_samples;
549 extern GPROC genie_space;
550 extern GPROC genie_sqrt_complex;
551 extern GPROC genie_sqrt_real;
552 extern GPROC genie_stack_pointer;
553 extern GPROC genie_stand_back;
554 extern GPROC genie_stand_back_channel;
555 extern GPROC genie_stand_draw_channel;
556 extern GPROC genie_stand_error;
557 extern GPROC genie_stand_error_channel;
558 extern GPROC genie_stand_in;
559 extern GPROC genie_stand_in_channel;
560 extern GPROC genie_stand_out;
561 extern GPROC genie_stand_out_channel;
562 extern GPROC genie_strerror;
563 extern GPROC genie_string_in_string;
564 extern GPROC genie_sub_bits;
565 extern GPROC genie_sub_complex;
566 extern GPROC genie_sub_in_string;
567 extern GPROC genie_sub_int;
568 extern GPROC genie_sub_mp_int;
569 extern GPROC genie_sub_real;
570 extern GPROC genie_system;
571 extern GPROC genie_system_heap_pointer;
572 extern GPROC genie_system_stack_pointer;
573 extern GPROC genie_system_stack_size;
574 extern GPROC genie_tab_char;
575 extern GPROC genie_tan_complex;
576 extern GPROC genie_tandg_real;
577 extern GPROC genie_tanh_complex;
578 extern GPROC genie_tanh_real;
579 extern GPROC genie_tanpi_real;
580 extern GPROC genie_tan_real;
581 extern GPROC genie_term;
582 extern GPROC genie_timesab_complex;
583 extern GPROC genie_timesab_int;
584 extern GPROC genie_timesab_mp_int;
585 extern GPROC genie_timesab_real;
586 extern GPROC genie_timesab_string;
587 extern GPROC genie_times_bits;
588 extern GPROC genie_times_char_int;
589 extern GPROC genie_times_int_char;
590 extern GPROC genie_times_int_string;
591 extern GPROC genie_times_string_int;
592 extern GPROC genie_to_lower;
593 extern GPROC genie_to_upper;
594 extern GPROC genie_unimplemented;
595 extern GPROC genie_utctime;
596 extern GPROC genie_waitpid;
597 extern GPROC genie_whole;
598 extern GPROC genie_write;
599 extern GPROC genie_write_bin;
600 extern GPROC genie_write_bin_file;
601 extern GPROC genie_write_file;
602 extern GPROC genie_write_file_format;
603 extern GPROC genie_write_format;
604 extern GPROC genie_xor_bits;
605 extern GPROC genie_xor_bool;
606
607 #if defined (S_ISFIFO)
608 extern GPROC genie_file_is_fifo;
609 #endif
610
611 #if defined (S_ISLNK)
612 extern GPROC genie_file_is_link;
613 #endif
614
615 #if defined (BUILD_PARALLEL_CLAUSE)
616 extern GPROC genie_down_sema;
617 extern GPROC genie_level_int_sema;
618 extern GPROC genie_level_sema_int;
619 extern GPROC genie_up_sema;
620 #endif
621
622 #if defined (BUILD_HTTP)
623 extern GPROC genie_http_content;
624 extern GPROC genie_tcp_request;
625 #endif
626
627 #if defined (HAVE_CURSES)
628 extern GPROC genie_curses_clear;
629 extern GPROC genie_curses_del_char;
630 extern GPROC genie_curses_green;
631 extern GPROC genie_curses_cyan;
632 extern GPROC genie_curses_white;
633 extern GPROC genie_curses_red;
634 extern GPROC genie_curses_yellow;
635 extern GPROC genie_curses_magenta;
636 extern GPROC genie_curses_blue;
637 extern GPROC genie_curses_green_inverse;
638 extern GPROC genie_curses_cyan_inverse;
639 extern GPROC genie_curses_white_inverse;
640 extern GPROC genie_curses_red_inverse;
641 extern GPROC genie_curses_yellow_inverse;
642 extern GPROC genie_curses_magenta_inverse;
643 extern GPROC genie_curses_blue_inverse;
644 extern GPROC genie_curses_columns;
645 extern GPROC genie_curses_end;
646 extern GPROC genie_curses_getchar;
647 extern GPROC genie_curses_lines;
648 extern GPROC genie_curses_move;
649 extern GPROC genie_curses_putchar;
650 extern GPROC genie_curses_refresh;
651 extern GPROC genie_curses_start;
652 #endif
653
654 #if defined (HAVE_POSTGRESQL)
655 extern GPROC genie_pq_backendpid;
656 extern GPROC genie_pq_cmdstatus;
657 extern GPROC genie_pq_cmdtuples;
658 extern GPROC genie_pq_connectdb;
659 extern GPROC genie_pq_db;
660 extern GPROC genie_pq_errormessage;
661 extern GPROC genie_pq_exec;
662 extern GPROC genie_pq_fformat;
663 extern GPROC genie_pq_finish;
664 extern GPROC genie_pq_fname;
665 extern GPROC genie_pq_fnumber;
666 extern GPROC genie_pq_getisnull;
667 extern GPROC genie_pq_getvalue;
668 extern GPROC genie_pq_host;
669 extern GPROC genie_pq_nfields;
670 extern GPROC genie_pq_ntuples;
671 extern GPROC genie_pq_options;
672 extern GPROC genie_pq_parameterstatus;
673 extern GPROC genie_pq_pass;
674 extern GPROC genie_pq_port;
675 extern GPROC genie_pq_protocolversion;
676 extern GPROC genie_pq_reset;
677 extern GPROC genie_pq_resulterrormessage;
678 extern GPROC genie_pq_serverversion;
679 extern GPROC genie_pq_socket;
680 extern GPROC genie_pq_tty;
681 extern GPROC genie_pq_user;
682 #endif
683
684 #if defined (HAVE_GNU_PLOTUTILS)
685 extern GPROC genie_draw_aspect;
686 extern GPROC genie_draw_atom;
687 extern GPROC genie_draw_background_colour;
688 extern GPROC genie_draw_background_colour_name;
689 extern GPROC genie_draw_circle;
690 extern GPROC genie_draw_clear;
691 extern GPROC genie_draw_colour;
692 extern GPROC genie_draw_colour_name;
693 extern GPROC genie_draw_fillstyle;
694 extern GPROC genie_draw_fontname;
695 extern GPROC genie_draw_fontsize;
696 extern GPROC genie_draw_get_colour_name;
697 extern GPROC genie_draw_line;
698 extern GPROC genie_draw_linestyle;
699 extern GPROC genie_draw_linewidth;
700 extern GPROC genie_draw_move;
701 extern GPROC genie_draw_point;
702 extern GPROC genie_draw_rect;
703 extern GPROC genie_draw_show;
704 extern GPROC genie_draw_star;
705 extern GPROC genie_draw_text;
706 extern GPROC genie_draw_textangle;
707 extern GPROC genie_make_device;
708 #endif
709
710 #if defined (BUILD_PARALLEL_CLAUSE)
711 extern PROP_T genie_parallel (NODE_T *);
712 extern BOOL_T is_main_thread (void);
713 extern void genie_abend_all_threads (NODE_T *, jmp_buf *, NODE_T *);
714 extern void genie_set_exit_from_threads (int);
715 #define SAME_THREAD(p, q) (pthread_equal((p), (q)) != 0)
716 #define OTHER_THREAD(p, q) (pthread_equal((p), (q)) == 0)
717 #endif
718
719 #if defined (BUILD_LINUX)
720 extern GPROC genie_sigsegv;
721 #endif
722
723 #endif