File: lu.h

package info (click to toggle)
gcl 2.6.14-21
  • links: PTS
  • area: main
  • in suites: forky, sid
  • size: 60,864 kB
  • sloc: ansic: 177,407; lisp: 151,509; asm: 128,169; sh: 22,510; cpp: 11,923; tcl: 3,181; perl: 2,930; makefile: 2,360; sed: 334; yacc: 226; lex: 95; awk: 30; fortran: 24; csh: 23
file content (439 lines) | stat: -rw-r--r-- 7,009 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
#include "pbits.h"

#undef bool
typedef int bool;

typedef long long lfixnum;
typedef unsigned long long ulfixnum;

typedef long fixnum;
typedef unsigned long ufixnum;

typedef float shortfloat;
typedef double longfloat;

typedef union lispunion *object;
typedef union typeunion *hobj;

#ifndef WORDS_BIGENDIAN

#define FIRSTWORD ufixnum    e:1,m:1,f:1,s:1,tt:4,t:5,st:3,w:LM(16)
#define FSTPWORD  ufixnum emfs:4,            tp:9,    st:3,w:LM(16)
#define MARKWORD  ufixnum    e:1,   mf:2,s:1,tt:4,t:5,x:LM(13)
#define SGCMWORD  ufixnum    e:1,mfs:3,      tt:4,t:5,x:LM(13)
#define TYPEWORD  ufixnum  emf:3,        s:1,tt:4,t:5,x:LM(13)
#define FUNWORD   ufixnum    e:1,m:1,f:1,s:1,tt:4,t:5,fun_minarg:6,fun_maxarg:6,fun_neval:5,fun_vv:1,y:LM(31)

#else

#define FIRSTWORD ufixnum w:LM(16),st:3,t:5,tt:4,s:1,f:1,m:1,e:1
#define FSTPWORD  ufixnum w:LM(16),st:3,tp:9,             emfs:4
#define MARKWORD  ufixnum x:LM(13),     t:5,tt:4,s:1,   mf:2,e:1
#define SGCMWORD  ufixnum x:LM(13),     t:5,tt:4,      mfs:3,e:1
#define TYPEWORD  ufixnum x:LM(13),     t:5,tt:4,s:1,      emf:3
#define FUNWORD   ufixnum y:LM(31),fun_vv:1,fun_neval:5,fun_maxarg:6,fun_minarg:6,t:5,tt:4,s:1,f:1,m:1,e:1

#endif

#if SIZEOF_LONG < 8
#define SPAD object pad
#else
#define SPAD
#endif

struct fixnum_struct {
  FIRSTWORD;
  fixnum FIXVAL;
};

struct shortfloat_struct {
  FIRSTWORD;
  shortfloat SFVAL;
};

struct longfloat_struct {
  FIRSTWORD;
  longfloat LFVAL;
  SPAD;
};

struct bignum {
  FIRSTWORD;
#ifdef GMP
  __mpz_struct big_mpz_t;
#else
  plong *big_self;
  int big_length;
#endif
};

struct ratio {
  FIRSTWORD;
  object rat_den;
  object rat_num;
  SPAD;

};

struct ocomplex {
  FIRSTWORD;
  object cmp_real;
  object cmp_imag;
  SPAD;
};

struct character {
  FIRSTWORD;
  unsigned short ch_code;
  unsigned char ch_font;
  unsigned char ch_bits;
};


struct symbol {
  FIRSTWORD;
  object s_dbind;
  void (*s_sfdef) ();
  char *s_self;
  short s_stype;
  short s_mflag;
  int s_fillp;
  object s_gfdef;
  object s_plist;
  object s_hpack;
  SPAD;

};

struct package {
  FIRSTWORD;
  object p_name;
  object p_nicknames;
  object p_shadowings;
  object p_uselist;
  object p_usedbylist;
  object *p_internal;
  object *p_external;
  int p_internal_size;
  int p_external_size;
  int p_internal_fp;
  int p_external_fp;
  struct package *p_link;
  SPAD;
};

struct cons {
#ifdef WIDE_CONS
  FIRSTWORD;
#endif
  object c_cdr;
  object c_car;
};

struct htent {
  object hte_key;
  object hte_value;
};

struct hashtable {
  FIRSTWORD;
  struct htent *ht_self;
  object ht_rhsize;
  object ht_rhthresh;
  int ht_nent;
  int ht_size;
  short ht_test;
  short ht_static;
  struct htent *ht_cache;

};

struct array {
  FIRSTWORD;
  object a_displaced;
  short a_rank;
  short a_elttype;
  object *a_self;
  int a_dim;
  int *a_dims;
  short a_adjustable;
  short a_offset;
  SPAD;

};



struct vector {
  FIRSTWORD;
  object v_displaced;
  short v_hasfillp;
  short v_elttype;
  object *v_self;
  int v_dim;
  int v_fillp;
  short v_adjustable;
  short v_offset;
  SPAD;
};

struct string {
  FIRSTWORD;
  object st_displaced;
  short st_hasfillp;
  short st_adjustable;
  char *st_self;
  int st_dim;
  int st_fillp;
};

struct ustring {
  FIRSTWORD;
  object ust_displaced;
  short ust_hasfillp;
  short ust_adjustable;
  unsigned char *ust_self;
  int ust_dim;
  int ust_fillp;
};

struct bitvector {
  FIRSTWORD;
  object bv_displaced;
  short bv_hasfillp;
  short bv_elttype;
  char *bv_self;
  int bv_dim;
  int bv_fillp;
  short bv_adjustable;
  short bv_offset;
  SPAD;
};

struct fixarray {
  FIRSTWORD;
  object fixa_displaced;
  short fixa_rank;
  short fixa_elttype;
  fixnum *fixa_self;
  int fixa_dim;
  int *fixa_dims;
  short fixa_adjustable;
  short fixa_offset;
  SPAD;
};

struct sfarray {
  FIRSTWORD;
  object sfa_displaced;
  short sfa_rank;
  short sfa_elttype;
  shortfloat *sfa_self;
  int sfa_dim;
  int *sfa_dims;
  short sfa_adjustable;
  short sfa_offset;
  SPAD;
};

struct lfarray {
  FIRSTWORD;
  object lfa_displaced;
  short lfa_rank;
  short lfa_elttype;
  longfloat *lfa_self;
  int lfa_dim;
  int *lfa_dims;
  short lfa_adjustable;
  short lfa_offset;
  SPAD;
};

struct s_data {
  object name;
  fixnum length;
  object raw;
  object included;
  object includes;
  object staticp;
  object print_function;
  object slot_descriptions;
  object slot_position;
  fixnum size;
  object has_holes;
};

struct structure {
  FIRSTWORD;
  object str_def;
  object *str_self;
  SPAD;
};

struct stream {
  FIRSTWORD;
  void   *sm_fp;
  object  sm_object0;
  object  sm_object1;
  char   *sm_buffer;
  ufixnum sm_mode:4;
  ufixnum sm_flags:6;
  ufixnum sm_fd:6;
  ufixnum sm_int:LM(16);
};

struct random {
  FIRSTWORD;
  __gmp_randstate_struct rnd_state;
};


struct readtable {
  FIRSTWORD;
  struct rtent *rt_self;
  object rt_case;
  SPAD;
};

struct pathname {
  FIRSTWORD;
  object pn_host;
  object pn_device;
  object pn_directory;
  object pn_name;
  object pn_type;
  object pn_version;
  object pn_namestring;
};

struct cfun {
  FIRSTWORD;
  object cf_name;
  void (*cf_self) ();
  object cf_data;
};

struct cclosure {
  FIRSTWORD;
  object cc_name;
  void (*cc_self) ();
  object cc_env;
  object cc_data;
  int cc_envdim;
  object *cc_turbo;
  SPAD;
};

struct closure {
  FIRSTWORD;
  object cl_name;
  object (*cl_self) ();
  object cl_data;
  int cl_argd;
  int cl_envdim;
  object *cl_env;
};

struct sfun {
  FIRSTWORD;
  object sfn_name;
  object (*sfn_self) ();
  object sfn_data;
  int sfn_argd;
  SPAD;
};

struct vfun {
  FIRSTWORD;
  object vfn_name;
  object (*vfn_self) ();
  object vfn_data;
  unsigned short vfn_minargs;
  unsigned short vfn_maxargs;
  SPAD;
};
struct cfdata {
  FIRSTWORD;
  char *cfd_start;
  int cfd_size;
  int cfd_fillp:31;
  int cfd_prof:1;
  object *cfd_self;
  SPAD;
};

struct spice {
  FIRSTWORD;
  int spc_dummy;
};

struct dummy {
  FIRSTWORD;
};
struct ff {
  ufixnum ff;
};
struct fstpw {
  FSTPWORD;
};
union fstp
{
  ufixnum ff;
  struct fstpw t;
};
struct mark {
  MARKWORD;
};
struct typew {
  TYPEWORD;
};
struct sgcm {
  SGCMWORD;
};

union lispunion {
  struct fixnum_struct FIX;
  struct bignum big;
  struct ratio rat;
  struct shortfloat_struct SF;
  struct longfloat_struct LF;
  struct ocomplex cmp;
  struct character ch;
  struct symbol s;
  struct package p;
  struct cons c;
  struct hashtable ht;
  struct array a;
  struct vector v;
  struct string st;
  struct ustring ust;
  struct bitvector bv;
  struct structure str;
  struct stream sm;
  struct random rnd;
  struct readtable rt;
  struct pathname pn;
  struct cfun cf;
  struct cclosure cc;
  struct closure cl;
  struct sfun sfn;
  struct vfun vfn;
  struct cfdata cfd;
  struct spice spc;
  struct dummy d;
  struct fstpw fstp;
  struct ff ff;
  struct mark md;
  struct sgcm smd;
  struct typew td;
  fixnum fw;
  void *vw;
  struct fixarray fixa;
  struct sfarray sfa;
  struct lfarray lfa;
};

union typeunion {
  struct dummy d;
  fixnum fw;
};