Edinburgh Speech Tools 2.4-release
 
Loading...
Searching...
No Matches
siodp.h
1/* Scheme In One Defun, but in C this time.
2
3 * COPYRIGHT (c) 1988-1992 BY *
4 * PARADIGM ASSOCIATES INCORPORATED, CAMBRIDGE, MASSACHUSETTS. *
5 * See the source file SLIB.C for more information. *
6
7Declarations which are private to SLIB.C internals.
8
9*/
10
11#ifndef __SIODP_H__
12#define __SIODP_H__
13
14#include "io.h"
15
16typedef int (*repl_getc_fn)(FILE *);
17typedef void (*repl_ungetc_fn)(int,FILE *);
18
19/* Will get to editline functions if supported */
20extern repl_getc_fn siod_fancy_getc;
21extern repl_ungetc_fn siod_fancy_ungetc;
22extern "C" const char *repl_prompt;
23
24extern char *tkbuffer;
25extern LISP heap,heap_end,heap_org;
26extern LISP oblistvar;
27extern LISP open_files;
28extern LISP eof_val;
29extern LISP siod_docstrings;
30extern int siod_interactive;
31void sock_acknowledge_error();
32extern FILE *fwarn;
33extern LISP unbound_marker;
34extern long gc_kind_copying;
35extern LISP freelist;
36extern long gc_cells_allocated;
37extern int siod_server_socket;
38extern "C" int rl_pos;
39
41{
42 char *name;
43 char gc_free_once;
44 LISP (*gc_relocate)(LISP);
45 void (*gc_scan)(LISP);
46 LISP (*gc_mark)(LISP);
47 void (*gc_free)(LISP);
48 void (*gc_clear)(LISP);
49 void (*prin1)(LISP, FILE *);
50 void (*print_string)(LISP, char *);
51 LISP (*leval)(LISP, LISP *, LISP *);
52 long (*c_sxhash)(LISP,long);
53 LISP (*fast_print)(LISP,LISP);
54 LISP (*fast_read)(int,LISP);
55 LISP (*equal)(LISP,LISP);};
56
58{LISP tag;
59 LISP retval;
60 jmp_buf cframe;
61 struct catch_frame *next;};
62
64{LISP *location;
65 long length;
66 struct gc_protected *next;};
67
68#define NEWCELL(_into,_type) \
69{if (gc_kind_copying == 1) \
70 {if ((_into = heap) >= heap_end) \
71 gc_fatal_error(); \
72 heap = _into+1;} \
73 else \
74 {if NULLP(freelist) \
75 gc_for_newcell(); \
76 _into = freelist; \
77 freelist = CDR(freelist); \
78 ++gc_cells_allocated;} \
79 (*_into).gc_mark = 0; \
80 (*_into).type = (short) _type;}
81#if 0
82#define NEWCELL(_into,_type) NNEWCELL(&_into,_type)
83void NNEWCELL (LISP *_into,long _type);
84#endif
85
86#ifdef THINK_C
87extern int ipoll_counter;
89#define INTERRUPT_CHECK() if (--ipoll_counter < 0) full_interrupt_poll(&ipoll_counter)
90#else
91#define INTERRUPT_CHECK()
92#endif
93
94extern char *stack_limit_ptr;
95
96#define STACK_LIMIT(_ptr,_amt) (((char *)_ptr) - (_amt))
97
98/* This is wrong if stack grows in different direction */
99#define STACK_CHECK(_ptr) \
100 if (((char *) (_ptr)) < stack_limit_ptr) err_stack((char *) _ptr);
101
102#define TKBUFFERN 256
103
104void err_stack(char *);
105
106#if defined(VMS) && defined(VAX)
107#define SIG_restargs ,...
108#else
109#define SIG_restargs
110#endif
111
112void init_storage(int init_heap_size);
113void init_subrs_base(void);
114void init_subrs_core(void);
115void init_subrs_doc(void);
116void init_subrs_file(void);
117void init_subrs_format(void);
118void init_subrs_list(void);
119void init_subrs_math(void);
120void init_subrs_sys(void);
121void init_subrs_srv(void);
122void init_subrs_str(void);
123void init_subrs_xtr(void);
124
125void need_n_cells(int n);
126
127char *must_malloc(unsigned long size);
128
129LISP gc_relocate(LISP x);
130void gc_fatal_error(void);
131void gc_for_newcell(void);
132struct user_type_hooks *get_user_type_hooks(long type);
133void gc_mark(LISP ptr);
134LISP newcell(long type);
135
136void put_st(const char *st);
137int f_getc(FILE *f);
138void f_ungetc(int c, FILE *f);
139long no_interrupt(long n);
140LISP readtl(struct gen_readio *f);
141long repl_driver(long want_sigint,long want_init,struct repl_hooks *);
142
143LISP leval_args(LISP l,LISP env);
144LISP extend_env(LISP actuals,LISP formals,LISP env);
145LISP envlookup(LISP var,LISP env);
146LISP closure(LISP env,LISP code);
147extern struct catch_frame *catch_framep;
148void close_open_files(void);
149void close_open_files_upto(LISP end);
150void pprintf(FILE *fd,LISP exp,int indent,int width, int depth,int length);
151
152#if 0
153void handle_sigfpe(int sig SIG_restargs);
154void handle_sigint(int sig SIG_restargs);
155void err_ctrl_c(void);
156double myruntime(void);
157void grepl_puts(char *,void (*)(char *));
158LISP gen_intern(char *name,int freeable);
159void scan_registers(void);
160void init_storage_1(int heap_size);
161LISP get_newspace(void);
162void scan_newspace(LISP newspace);
163void free_oldspace(LISP space,LISP end);
164void gc_stop_and_copy(void);
165void gc_mark_and_sweep(void);
166void gc_ms_stats_start(void);
167void gc_ms_stats_end(void);
168void mark_protected_registers(void);
169void mark_locations(LISP *start,LISP *end);
170void mark_locations_array(LISP *x,long n);
171void gc_sweep(void);
172LISP leval_setq(LISP args,LISP env);
173LISP syntax_define(LISP args);
174LISP leval_define(LISP args,LISP env);
175LISP leval_if(LISP *pform,LISP *penv);
176LISP leval_lambda(LISP args,LISP env);
177LISP leval_progn(LISP *pform,LISP *penv);
178LISP leval_or(LISP *pform,LISP *penv);
179LISP leval_and(LISP *pform,LISP *penv);
180LISP leval_catch(LISP args,LISP env);
181LISP lthrow(LISP tag,LISP value);
182LISP leval_let(LISP *pform,LISP *penv);
183LISP reverse(LISP l);
184LISP let_macro(LISP form);
185LISP leval_quote(LISP args,LISP env);
186LISP leval_tenv(LISP args,LISP env);
187int flush_ws(struct gen_readio *f,const char *eoferr);
188LISP lreadr(struct gen_readio *f);
189LISP lreadparen(struct gen_readio *f);
190LISP arglchk(LISP x);
191
192int rfs_getc(unsigned char **p);
193void rfs_ungetc(unsigned char c,unsigned char **p);
194LISP lreadstring(struct gen_readio *f);
195
196void file_gc_free(LISP ptr);
197void file_prin1(LISP ptr,FILE *f);
198LISP fd_to_scheme_file(int fd,
199 const char *name, const char *how,
200 int close_on_error);
201LISP lgetc(LISP p);
202LISP lputc(LISP c,LISP p);
203LISP lputs(LISP str,LISP p);
204
205LISP lftell(LISP file);
206LISP lfseek(LISP file,LISP offset,LISP direction);
207LISP lfread(LISP size,LISP file);
208LISP lfwrite(LISP string,LISP file);
209
210
211LISP leval_while(LISP args,LISP env);
212
213void init_subrs_a(void);
214void init_subrs_1(void);
215
216LISP stack_limit(LISP,LISP);
217
218void err0(void);
219void pr(LISP);
220void prp(LISP *);
221
222LISP closure_code(LISP exp);
223LISP closure_env(LISP exp);
225
226LISP siod_send_lisp_to_client(LISP x);
227#endif
228
229
230#endif