a68g-prelude.h

You can download the current version of Algol 68 Genie and its documentation here.

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