1
/* rep_subrs.h -- mostly LISP subr declarations
2
Copyright (C) 1993, 1994 John Harper <john@dcs.warwick.ac.uk>
3
$Id: rep_subrs.h,v 1.72 2001/09/14 14:37:33 jsh Exp $
5
This file is part of Jade.
7
Jade is free software; you can redistribute it and/or modify it
8
under the terms of the GNU General Public License as published by
9
the Free Software Foundation; either version 2, or (at your option)
12
Jade is distributed in the hope that it will be useful, but
13
WITHOUT ANY WARRANTY; without even the implied warranty of
14
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
GNU General Public License for more details.
17
You should have received a copy of the GNU General Public License
18
along with Jade; see the file COPYING. If not, write to
19
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
26
/* from continuations.c */
27
extern int rep_thread_lock;
28
extern rep_bool rep_pending_thread_yield;
29
extern repv rep_call_with_barrier (repv (*callback)(repv), repv arg,
30
rep_bool closed, void (*in)(void *),
31
void (*out)(void *), void *data);
32
extern repv Fcall_cc (repv thunk);
33
extern repv Fcontinuation_callable_p (repv cont);
34
extern repv Fcall_with_object (repv arg, repv thunk);
35
extern repv Fcall_with_dynamic_root (repv thunk);
36
extern repv Fcall_with_barrier (repv thunk, repv closed, repv in, repv out);
37
extern repv Fmake_thread (repv thunk, repv name);
38
extern repv Fthread_yield (void);
39
extern repv Fthread_delete (repv thread);
40
extern repv Fthread_suspend (repv thread, repv msecs);
41
extern repv Fthread_wake (repv thread);
42
extern repv Ftheadp (repv arg);
43
extern repv Fthread_suspended_p (repv thread);
44
extern repv Fthread_exited_p (repv thread);
45
extern repv Fcurrent_thread (repv depth);
46
extern repv Fall_threads (repv depth);
47
extern repv Fthread_forbid (void);
48
extern repv Fthread_permit (void);
49
extern repv Fthread_name (repv th);
50
extern u_long rep_max_sleep_for (void);
53
extern repv Fmake_datum (repv, repv);
54
extern repv Fdefine_datum_printer (repv, repv);
55
extern repv Fdatum_ref (repv, repv);
56
extern repv Fdatum_set (repv, repv, repv);
57
extern repv Fhas_type_p (repv, repv);
59
/* from debug-buffer.c */
60
extern void *rep_db_alloc(char *name, int size);
61
extern void rep_db_free(void *db);
62
extern void rep_db_vprintf(void *_db, char *fmt, va_list args);
63
extern void rep_db_printf(void *db, char *fmt, ...);
64
extern void rep_db_print_backtrace(void *_db, char *fun);
65
extern void *rep_db_return_address(void);
66
extern void rep_db_spew(void *_db);
67
extern void rep_db_spew_all(void);
68
extern void rep_db_kill(void);
71
extern repv Qdefault_directory;
72
extern repv Qstart, Qend;
73
extern repv Qread, Qwrite, Qappend;
74
extern repv rep_fh_env;
75
extern int rep_file_type;
76
extern int rep_op_write_buffer_contents;
77
extern int rep_op_read_file_contents;
78
extern int rep_op_insert_file_contents;
79
extern repv rep_signal_file_error(repv cdr);
80
extern repv rep_unbound_file_error(repv file);
81
extern repv rep_get_file_handler(repv file_name, int op);
82
extern repv rep_call_file_handler(repv handler, int op,
83
repv sym, int nargs, ...);
84
extern repv rep_get_handler_from_file_or_name(repv *filep, int op);
85
extern repv rep_expand_and_get_handler(repv *file_namep, int op);
86
extern repv rep_localise_and_get_handler(repv *file_namep, int op);
87
extern rep_bool rep_file_newer_than(repv name1, repv name2);
88
extern repv Ffile_name_absolute_p(repv file);
89
extern repv Fexpand_file_name(repv, repv);
90
extern repv Flocal_file_name(repv);
91
extern repv Fcanonical_file_name(repv);
92
extern repv Ffile_name_nondirectory(repv);
93
extern repv Ffile_name_directory(repv);
94
extern repv Ffile_name_as_directory(repv);
95
extern repv Fdirectory_file_name(repv);
96
extern repv Ffilep(repv arg);
97
extern repv Ffile_binding(repv file);
98
extern repv Ffile_bound_stream(repv file);
99
extern repv Ffile_handler_data(repv);
100
extern repv Fset_file_handler_data(repv, repv);
101
extern repv Fopen_file(repv, repv);
102
extern repv Fmake_file_from_stream(repv, repv, repv);
103
extern repv Fclose_file(repv);
104
extern repv Fflush_file(repv file);
105
extern repv Fseek_file(repv file, repv offset, repv where);
106
extern repv Fdelete_file(repv);
107
extern repv Frename_file(repv, repv);
108
extern repv Fmake_directory(repv);
109
extern repv Fdelete_directory(repv);
110
extern repv Fcopy_file(repv, repv);
111
extern repv Ffile_readable_p(repv file);
112
extern repv Ffile_writable_p(repv file);
113
extern repv Ffile_exists_p(repv file);
114
extern repv Ffile_regular_p(repv file);
115
extern repv Ffile_directory_p(repv file);
116
extern repv Ffile_symlink_p(repv file);
117
extern repv Ffile_owner_p(repv file);
118
extern repv Ffile_nlinks(repv file);
119
extern repv Ffile_size(repv file);
120
extern repv Ffile_modes(repv file);
121
extern repv Fset_file_modes(repv file, repv modes);
122
extern repv Ffile_modes_as_string(repv file);
123
extern repv Ffile_modtime(repv file);
124
extern repv Fdirectory_files(repv dir);
125
extern repv Fread_symlink(repv file);
126
extern repv Fmake_symlink(repv file, repv contents);
127
extern repv Fstdin_file(void);
128
extern repv Fstdout_file(void);
129
extern repv Fstderr_file(void);
130
extern repv Fmake_temp_name(void);
131
extern repv rep_file_fdopen (int fd, char *mode);
134
extern rep_regexp *rep_compile_regexp(repv re);
135
extern void rep_push_regexp_data(struct rep_saved_regexp_data *sd);
136
extern void rep_pop_regexp_data(void);
137
extern void rep_update_last_match(repv data, rep_regexp *prog);
138
extern void rep_set_string_match(repv obj, repv start, repv end);
139
extern void (*rep_regsub_fun)(int, rep_regsubs *, char *, char *, void *);
140
extern int (*rep_regsublen_fun)(int, rep_regsubs *, char *, void *);
141
extern repv Qregexp_error;
142
extern repv Fstring_match(repv re, repv str, repv start, repv nocasep);
143
extern repv Fstring_looking_at(repv re, repv string,
144
repv start, repv nocasep);
145
extern repv Fexpand_last_match(repv template_);
146
extern repv Fmatch_start(repv exp);
147
extern repv Fmatch_end(repv exp);
148
extern repv Fquote_regexp(repv str);
149
extern repv Fregexp_cache_control(repv limit);
150
extern void rep_regerror(char *err);
153
extern repv Fmake_fluid (repv);
154
extern repv Ffluid_ref (repv);
155
extern repv Ffluid_set (repv, repv);
156
extern repv Fwith_fluids (repv, repv, repv);
159
extern repv rep_load_autoload(repv);
160
extern repv rep_funcall(repv fun, repv arglist, rep_bool eval_args);
161
extern repv rep_apply (repv, repv);
162
extern repv rep_call_lisp0(repv);
163
extern repv rep_call_lisp1(repv, repv);
164
extern repv rep_call_lisp2(repv, repv, repv);
165
extern repv rep_call_lisp3(repv, repv, repv, repv);
166
extern repv rep_call_lisp4(repv, repv, repv, repv, repv);
167
extern repv rep_call_lispn (repv fun, int argc, repv *argv);
168
extern repv rep_handle_var_int(repv, int *);
169
extern repv rep_handle_var_long_int(repv, long *);
170
extern void rep_handle_error(repv, repv);
171
extern repv rep_signal_arg_error(repv, int);
172
extern repv rep_signal_missing_arg(int argnum);
173
extern repv rep_mem_error(void);
174
extern repv Qdebug_entry, Qdebug_exit, Qdebug_error_entry;
175
extern repv Qquote, Qlambda, Qmacro, Qautoload, Qfunction;
176
extern repv Qstandard_input, Qstandard_output;
177
extern repv Qamp_optional, Qamp_rest, Qamp_aux;
178
extern volatile repv rep_throw_value;
179
extern repv rep_int_cell, rep_term_cell;
180
extern repv Qerror, Qerror_message, Qinvalid_function;
181
extern repv Qvoid_value, Qbad_arg, Qinvalid_read_syntax;
182
extern repv Qend_of_stream, Qinvalid_lambda_list, Qmissing_arg;
183
extern repv Qinvalid_macro, Qinvalid_autoload, Qno_catcher;
184
extern repv Qfile_error;
185
extern repv Qinvalid_stream, Qsetting_constant, Qprocess_error;
186
extern repv Qno_memory, Quser_interrupt, Qarith_error;
187
extern repv Qterm_interrupt;
188
extern repv Qstack_error;
189
extern repv Qprint_escape, Qprint_length, Qprint_level, Qnewlines;
190
extern repv rep_env, rep_fenv, rep_special_bindings;
191
extern struct rep_Call *rep_call_stack;
192
extern int rep_lisp_depth, rep_max_lisp_depth;
193
extern int rep_test_int_counter;
194
extern int rep_test_int_period;
195
extern void (*rep_test_int_fun)(void);
196
extern repv Ffuncall(repv);
197
extern repv Feval(repv);
198
extern repv Fprogn(repv, repv);
199
extern repv Fbreak(void);
200
extern repv Fstep(repv);
201
extern repv Fsignal(repv error, repv data);
202
extern repv Fbacktrace(repv strm);
203
extern repv Vmax_lisp_depth(repv val);
204
extern int rep_list_length(repv);
205
extern rep_bool rep_assign_args (repv list, int required, int total, ...);
207
/* from lispcmds.c */
208
extern repv Qor, Qand;
209
extern repv Qload_path, Qafter_load_alist, Qlisp_lib_directory;
210
extern repv Qdl_load_path, Qdl_load_reloc_now, Qprovide, Qfeatures;
211
extern repv Qsite_lisp_directory, Qdocumentation_file, Qdocumentation_files;
212
extern repv Fquote(repv, repv);
213
extern repv Fcar(repv);
214
extern repv Fcdr(repv);
215
extern repv Flist(repv);
216
extern repv Flist_star(repv);
217
extern repv Fmake_list(repv, repv);
218
extern repv Fappend(repv);
219
extern repv Fnconc(repv);
220
extern repv Frplaca(repv, repv);
221
extern repv Frplacd(repv, repv);
222
extern repv Freverse(repv);
223
extern repv Fnreverse(repv);
224
extern repv Fassoc(repv, repv);
225
extern repv Fassq(repv, repv);
226
extern repv Frassoc(repv, repv);
227
extern repv Frassq(repv, repv);
228
extern repv Fnth(repv, repv);
229
extern repv Fnthcdr(repv index, repv list);
230
extern repv Flast(repv);
231
extern repv Fmapcar(repv, repv);
232
extern repv Fmapc(repv, repv);
233
extern repv Ffilter(repv pred, repv list);
234
extern repv Fmember(repv, repv);
235
extern repv Fmemq(repv, repv);
236
extern repv Fmemql(repv, repv);
237
extern repv Fdelete(repv, repv);
238
extern repv Fdelq(repv, repv);
239
extern repv Fdelete_if(repv, repv);
240
extern repv Fdelete_if_not(repv, repv);
241
extern repv Fvector(repv);
242
extern repv Fmake_vector(repv, repv);
243
extern repv Farrayp(repv);
244
extern repv Faset(repv, repv, repv);
245
extern repv Faref(repv, repv);
246
extern repv Fmake_string(repv, repv);
247
extern repv Fsubstring(repv string, repv start, repv end);
248
extern repv Fconcat(repv);
249
extern repv Flength(repv);
250
extern repv Fcopy_sequence(repv);
251
extern repv Felt(repv, repv);
252
extern repv Fcond(repv, repv);
253
extern repv Fapply(repv);
254
extern repv Fload(repv file, repv noerr_p, repv nopath_p,
255
repv nosuf_p, repv in_env);
256
extern repv Fequal(repv, repv);
257
extern repv Feq(repv, repv);
258
extern repv Fstring_head_eq(repv, repv);
259
extern repv Fnum_eq(repv args);
260
extern repv Fnum_noteq(repv args);
261
extern repv Fgtthan(repv);
262
extern repv Fgethan(repv);
263
extern repv Fltthan(repv);
264
extern repv Flethan(repv);
265
extern repv Fmax(repv);
266
extern repv Fmin(repv);
267
extern repv Fnull(repv);
268
extern repv Fatom(repv);
269
extern repv Fconsp(repv);
270
extern repv Flistp(repv);
271
extern repv Fstringp(repv);
272
extern repv Fvectorp(repv);
273
extern repv Fbytecodep(repv);
274
extern repv Ffunctionp(repv);
275
extern repv Fmacrop(repv);
276
extern repv Fspecial_form_p(repv);
277
extern repv Fsubrp(repv arg);
278
extern repv Fsequencep(repv arg);
279
extern repv FSdocumentation(repv subr, repv useVar);
280
extern repv FSname(repv subr, repv useVar);
281
extern repv Fcall_hook(repv hook, repv arg_list, repv type);
282
extern repv Fthrow(repv, repv);
284
/* from lispmach.c */
285
extern repv Qbytecode_error;
286
extern repv Fvalidate_byte_code(repv bc_major, repv bc_minor);
287
extern repv Fmake_byte_code_subr(repv args);
290
extern repv Fmacroexpand(repv, repv);
293
extern void rep_init(char *prog_name, int *argc, char ***argv,
294
void (*sys_symbols)(void), void (*sys_usage)(void));
295
extern void rep_init_from_dump(char *prog_name, int *argc, char ***argv,
296
void (*sys_symbols)(void),
297
void (*sys_usage)(void),
299
extern repv rep_load_environment (repv file);
300
extern void rep_kill(void);
301
extern rep_bool rep_get_option (char *option, repv *argp);
302
extern rep_bool rep_on_idle(long since_last_event);
303
extern rep_bool rep_handle_input_exception(repv *result_p);
304
extern int rep_top_level_exit (void);
305
extern void *rep_common_db;
306
extern int rep_recurse_depth;
307
extern rep_bool (*rep_on_idle_fun)(int since_last);
308
extern repv (*rep_event_loop_fun)(void);
309
extern repv Qidle_hook;
310
extern void (*rep_on_termination_fun)(void);
311
extern repv Qexit, Qquit, Qtop_level, Qcommand_line_args;
312
extern repv Qbatch_mode, Qinterpreted_mode, Qprogram_name;
313
extern repv Qerror_mode, Qinterrupt_mode;
314
extern repv Frecursive_edit(void);
315
extern repv rep_top_level_recursive_edit (void);
316
extern repv Frecursion_depth(void);
317
extern repv Fget_command_line_option (repv, repv);
328
rep_redisplay_message
330
extern void (*rep_message_fun)(enum rep_message fn, ...);
333
extern u_char *rep_str_dupn(const u_char *old, int len);
334
extern void (*rep_beep_fun)(void);
335
extern repv Qoperating_system, Qwindow_system, Qprocess_environment;
336
extern repv Qbuild_id_string;
337
extern repv Qupcase_table, Qdowncase_table, Qflatten_table;
338
extern repv Fbeep(void);
339
extern repv Fcomplete_string(repv existing, repv arg_list, repv fold);
340
extern repv Fcurrent_time(void);
341
extern repv Ffix_time(repv time);
342
extern repv Fcurrent_time_string(repv time, repv format);
343
extern repv Ftime_later_p(repv t1, repv t2);
344
extern repv Fsleep_for(repv secs, repv msecs);
345
extern repv Fsit_for(repv secs, repv msecs);
346
extern repv Fuser_login_name(void);
347
extern repv Fuser_full_name(repv arg);
348
extern repv Fuser_home_directory(repv user);
349
extern repv Fsystem_name(void);
350
extern repv Fmessage(repv string, repv now);
351
extern repv Frandom(repv arg);
352
extern repv Ftranslate_string(repv string, repv table);
353
extern repv Falpha_char_p(repv);
354
extern repv Fupper_case_p(repv);
355
extern repv Flower_case_p(repv);
356
extern repv Fdigit_char_p(repv);
357
extern repv Falphanumericp(repv);
358
extern repv Fspace_char_p(repv);
359
extern repv Fchar_upcase(repv);
360
extern repv Fchar_downcase(repv);
363
extern repv rep_make_long_uint (u_long in);
364
extern repv rep_make_long_int (long in);
365
extern u_long rep_get_long_uint (repv in);
366
extern long rep_get_long_int (repv in);
367
extern repv rep_make_longlong_int (rep_long_long in);
368
extern rep_long_long rep_get_longlong_int (repv in);
369
extern repv rep_make_float (double in, rep_bool force);
370
extern double rep_get_float (repv in);
371
extern int rep_compare_numbers (repv n1, repv n2);
372
extern char *rep_print_number_to_string (repv obj, int radix, int prec);
373
extern repv rep_number_foldl (repv args, repv (*op)(repv, repv));
374
extern repv rep_integer_foldl (repv args, repv (*op)(repv, repv));
375
extern repv rep_foldl (repv args, repv (*op)(repv, repv));
376
extern repv rep_number_add (repv x, repv y);
377
extern repv rep_number_neg (repv x);
378
extern repv rep_number_sub (repv x, repv y);
379
extern repv rep_number_mul (repv x, repv y);
380
extern repv rep_number_div (repv x, repv y);
381
extern repv rep_number_lognot (repv x);
382
extern repv rep_number_logior (repv x, repv y);
383
extern repv rep_number_logxor (repv x, repv y);
384
extern repv rep_number_logand (repv x, repv y);
385
extern repv rep_number_max (repv x, repv y);
386
extern repv rep_number_min (repv x, repv y);
387
extern repv rep_integer_gcd (repv x, repv y);
388
extern repv Feql(repv arg1, repv arg2);
389
extern repv Fplus(repv);
390
extern repv Fminus(repv);
391
extern repv Fproduct(repv);
392
extern repv Fdivide(repv);
393
extern repv Fremainder(repv n1, repv n2);
394
extern repv Fmod(repv n1, repv n2);
395
extern repv Fquotient(repv n1, repv n2);
396
extern repv Flognot(repv);
397
extern repv Fnot(repv);
398
extern repv Flogior(repv);
399
extern repv Flogxor(repv);
400
extern repv Flogand(repv);
401
extern repv Fplus1(repv);
402
extern repv Fsub1(repv);
403
extern repv Fash(repv, repv);
404
extern repv Ffloor (repv);
405
extern repv Fceiling (repv);
406
extern repv Ftruncate (repv);
407
extern repv Fround (repv);
408
extern repv Fexp (repv);
409
extern repv Flog (repv);
410
extern repv Fsin (repv);
411
extern repv Fcos (repv);
412
extern repv Ftan (repv);
413
extern repv Fasin (repv);
414
extern repv Facos (repv);
415
extern repv Fatan (repv, repv);
416
extern repv Fsqrt (repv);
417
extern repv Fexpt (repv, repv);
418
extern repv Fgcd (repv);
419
extern repv Fzerop(repv);
420
extern repv Fnumberp(repv);
421
extern repv Fintegerp(repv);
422
extern repv Frationalp(repv);
423
extern repv Frealp(repv);
424
extern repv Fexactp(repv);
425
extern repv Finexactp(repv);
426
extern repv Fexact_to_inexact(repv);
427
extern repv Finexact_to_exact(repv);
428
extern repv Fnumerator(repv);
429
extern repv Fdenominator(repv);
432
extern repv Qformat_hooks_alist;
433
extern int rep_stream_getc(repv);
434
extern int rep_stream_ungetc(repv, int);
435
extern int rep_stream_putc(repv, int);
436
extern int rep_stream_puts(repv, void *, int, rep_bool);
437
extern int rep_stream_read_esc(repv, int *);
438
extern repv Fwrite(repv stream, repv data, repv len);
439
extern repv Fread_char(repv stream);
440
extern repv Fpeek_char(repv stream);
441
extern repv Fread_chars(repv stream, repv count);
442
extern repv Fread_line(repv stream);
443
extern repv Fcopy_stream(repv source, repv dest);
444
extern repv Fread(repv);
445
extern repv Fprint(repv, repv);
446
extern repv Fprin1(repv, repv);
447
extern repv Fprinc(repv, repv);
448
extern repv Fformat(repv);
449
extern repv Fmake_string_input_stream(repv string, repv start);
450
extern repv Fmake_string_output_stream(void);
451
extern repv Fget_output_stream_string(repv strm);
452
extern repv Finput_stream_p(repv arg);
453
extern repv Foutput_stream_p(repv arg);
456
extern repv rep_undefined_value;
457
extern repv (*rep_deref_local_symbol_fun)(repv sym);
458
extern repv (*rep_set_local_symbol_fun)(repv sym, repv val);
459
extern void rep_intern_static(repv *, repv);
460
extern repv rep_call_with_closure (repv closure,
461
repv (*fun)(repv arg), repv arg);
462
extern repv rep_bind_symbol(repv, repv, repv);
463
extern int rep_unbind_symbols(repv);
464
extern repv rep_add_binding_to_env (repv env, repv sym, repv value);
465
extern repv rep_obarray;
467
extern repv Qvariable_documentation, Qpermanent_local;
468
extern repv rep_void_value;
469
extern rep_bool rep_warn_shadowing;
470
extern repv Fmake_symbol(repv);
471
extern repv Fmake_obarray(repv);
472
extern repv Ffind_symbol(repv, repv);
473
extern repv Fintern_symbol(repv, repv);
474
extern repv Fintern(repv, repv);
475
extern repv Funintern(repv, repv);
476
extern repv Fmake_closure (repv function, repv name);
477
extern repv Fclosure_function (repv funarg);
478
extern repv Fset_closure_function (repv funarg, repv fun);
479
extern repv Fclosurep (repv arg);
480
extern repv Fsymbol_value(repv, repv);
481
extern repv Fdefvar(repv, repv);
482
extern repv Fset(repv, repv);
483
extern repv Fsetplist(repv, repv);
484
extern repv Fsymbol_name(repv);
485
extern repv Fdefault_value(repv, repv);
486
extern repv Fdefault_boundp(repv);
487
extern repv Fset_default(repv, repv);
488
extern repv Fboundp(repv);
489
extern repv Fsymbol_plist(repv);
490
extern repv Fgensym(void);
491
extern repv Fsymbolp(repv);
492
extern repv Fsetq(repv, repv);
493
extern repv Fmakunbound(repv);
494
extern repv Fget(repv, repv);
495
extern repv Fput(repv, repv, repv);
496
extern repv Fapropos(repv, repv, repv);
497
extern repv Fmake_variable_special (repv sym);
498
extern repv Fspecial_variable_p(repv sym);
499
extern repv Ftrace(repv sym);
500
extern repv Funtrace(repv sym);
501
extern repv Vobarray(repv val);
502
extern repv Fmake_keyword (repv in);
503
extern repv Fkeywordp (repv arg);
505
/* from structures.c */
506
extern repv rep_structure;
507
extern repv Fmake_binding_immutable (repv);
508
extern repv Fbinding_immutable_p (repv, repv);
509
extern repv Fexport_bindings (repv list);
510
extern repv Ffeaturep(repv);
511
extern repv Fprovide(repv);
512
extern repv Frequire(repv);
513
extern repv rep_push_structure_name (repv name);
514
extern repv rep_push_structure (const char *name);
515
extern repv rep_pop_structure (repv old);
516
extern void rep_alias_structure (const char *name);
517
extern repv rep_bootstrap_structure (const char *s);
518
extern repv rep_add_subr(rep_xsubr *, rep_bool);
519
extern void rep_structure_exports_all (repv s, rep_bool status);
520
extern void rep_structure_set_binds (repv s, rep_bool status);
523
extern repv rep_make_tuple (repv car, repv a, repv b);
524
extern void rep_mark_tuple (repv t);
527
extern repv Qafter_gc_hook;
528
extern rep_cons *rep_dumped_cons_start, *rep_dumped_cons_end;
529
extern rep_symbol *rep_dumped_symbols_start, *rep_dumped_symbols_end;
530
extern repv rep_dumped_non_constants;
531
extern int rep_guardian_type;
532
extern repv rep_box_pointer (void *p);
533
void *rep_unbox_pointer (repv v);
534
extern void rep_register_type(u_int code, char *name,
535
int (*compare)(repv, repv),
536
void (*princ)(repv, repv),
537
void (*print)(repv, repv),
540
void (*mark_type)(void),
541
int (*getc)(repv), int (*ungetc)(repv, int),
542
int (*putc)(repv, int),
543
int (*puts)(repv, void *, int, rep_bool),
544
repv (*bind)(repv), void (*unbind)(repv));
545
extern u_int rep_register_new_type(char *name,
546
int (*compare)(repv, repv),
547
void (*princ)(repv, repv),
548
void (*print)(repv, repv),
551
void (*mark_type)(void),
553
int (*ungetc)(repv, int),
554
int (*putc)(repv, int),
555
int (*puts)(repv, void *, int, rep_bool),
557
void (*unbind)(repv));
558
extern rep_type *rep_get_data_type(u_int code);
559
extern int rep_value_cmp(repv, repv);
560
extern void rep_princ_val(repv, repv);
561
extern void rep_print_val(repv, repv);
562
extern repv rep_null_string(void);
563
extern repv rep_box_string (char *ptr, long len);
564
extern repv rep_make_string(long);
565
extern repv rep_string_dupn(const u_char *, long);
566
extern repv rep_string_dup(const u_char *);
567
extern repv rep_concat2(u_char *, u_char *);
568
extern repv rep_concat3(u_char *, u_char *, u_char *);
569
extern repv rep_concat4(u_char *s1, u_char *s2, u_char *s3, u_char *s4);
570
extern rep_bool rep_set_string_len(repv, long);
571
extern repv rep_list_1(repv);
572
extern repv rep_list_2(repv, repv);
573
extern repv rep_list_3(repv, repv, repv);
574
extern repv rep_list_4(repv, repv, repv, repv);
575
extern repv rep_list_5(repv, repv, repv, repv, repv);
576
extern repv rep_make_vector(int);
577
extern repv Fmake_primitive_guardian (void);
578
extern repv Fprimitive_guardian_push (repv g, repv obj);
579
extern repv Fprimitive_guardian_pop (repv g);
580
extern void rep_mark_static(repv *);
581
extern void rep_mark_value(repv);
582
extern repv Fcons(repv, repv);
583
extern rep_GC_root *rep_gc_root_stack;
584
extern rep_GC_n_roots *rep_gc_n_roots_stack;
585
extern repv Vgarbage_threshold(repv val);
586
extern repv Vidle_garbage_threshold(repv val);
587
extern repv Fgarbage_collect(repv noStats);
588
extern int rep_data_after_gc, rep_gc_threshold, rep_idle_gc_threshold;
589
extern rep_bool rep_in_gc;
594
extern rep_bool rep_find_c_symbol(void *, char **, void **);
595
extern void *rep_find_dl_symbol (repv feature, char *symbol);
597
/* from unix_files.c */
598
extern repv rep_lookup_errno(void);
599
extern u_long rep_file_length(repv file);
601
/* from unix_main.c */
602
extern u_long rep_time(void);
603
extern rep_long_long rep_utime (void);
604
extern void (*rep_register_input_fd_fun)(int fd, void (*callback)(int fd));
605
extern void (*rep_deregister_input_fd_fun)(int fd);
606
extern void rep_add_event_loop_callback (rep_bool (*callback)(void));
607
extern void rep_sleep_for(long secs, long msecs);
608
extern void rep_register_input_fd(int fd, void (*callback)(int fd));
609
extern void rep_deregister_input_fd(int fd);
610
extern void rep_map_inputs (void (*fun)(int fd, void (*callback)(int)));
611
extern void rep_mark_input_pending(int fd);
612
extern void rep_unix_set_fd_nonblocking(int fd);
613
extern void rep_unix_set_fd_blocking(int fd);
614
extern void rep_unix_set_fd_cloexec(int fd);
615
extern void rep_sig_restart(int sig, rep_bool flag);
616
extern repv rep_event_loop(void);
617
extern repv rep_sit_for(u_long timeout_msecs);
618
extern repv rep_accept_input_for_callbacks (u_long timeout_msecs,
620
void (**callbacks)(int));
621
extern repv rep_accept_input_for_fds (u_long timeout_msecs,
623
extern repv rep_accept_input(u_long timeout_msecs, void (*callback)(int));
624
extern rep_bool rep_poll_input(int fd);
626
#ifdef DEBUG_SYS_ALLOC
627
extern void *rep_alloc(u_int length);
628
extern void *rep_realloc(void *ptr, u_int length);
629
extern void rep_free(void *ptr);
630
extern void rep_print_allocations(void);
633
# define rep_alloc(n) malloc(n)
634
# define rep_realloc(p,n) realloc(p,n)
635
# define rep_free(p) free(p)
638
extern void (*rep_redisplay_fun)(void);
639
extern int rep_input_timeout_secs;
640
extern repv Funix_print_allocations(void);
642
/* from unix_processes.c */
643
extern repv Qpipe, Qpty;
644
extern void (*rep_sigchld_fun) (void);
645
extern rep_bool rep_proc_periodically(void);
646
extern repv Fmake_process(repv stream, repv fun, repv dir,
647
repv prog, repv args);
648
extern repv Fstart_process(repv arg_list);
649
extern repv Fcall_process(repv arg_list);
650
extern repv Finterrupt_process(repv proc, repv grp);
651
extern repv Fkill_process(repv proc, repv grp);
652
extern repv Fstop_process(repv proc, repv grp);
653
extern repv Fcontinue_process(repv proc, repv grp);
654
extern repv Fprocess_exit_status(repv proc);
655
extern repv Fprocess_exit_value(repv proc);
656
extern repv Fprocess_id(repv proc);
657
extern repv Fprocess_running_p(repv proc);
658
extern repv Fprocess_stopped_p(repv proc);
659
extern repv Fprocess_in_use_p(repv proc);
660
extern repv Fprocessp(repv arg);
661
extern repv Fprocess_prog(repv proc);
662
extern repv Fset_process_prog(repv proc, repv prog);
663
extern repv Fprocess_args(repv proc);
664
extern repv Fset_process_args(repv proc, repv args);
665
extern repv Fprocess_output_stream(repv proc);
666
extern repv Fset_process_output_stream(repv proc, repv stream);
667
extern repv Fprocess_error_stream(repv proc);
668
extern repv Fset_process_error_stream(repv proc, repv stream);
669
extern repv Fprocess_function(repv proc);
670
extern repv Fset_process_function(repv proc, repv fn);
671
extern repv Fprocess_dir(repv proc);
672
extern repv Fset_process_dir(repv proc, repv dir);
673
extern repv Fprocess_connection_type(repv proc);
674
extern repv Fset_process_connection_type(repv proc, repv type);
675
extern repv Factive_processes(void);
676
extern repv Faccept_process_output(repv secs, repv msecs);
677
void rep_register_process_input_handler (void (*handler)(int));
679
#endif /* rep_HAVE_UNIX */
682
extern repv rep_dl_init (void);
683
extern void rep_dl_kill (void);
685
#endif /* REP_SUBRS_H */