~ubuntu-branches/ubuntu/quantal/gclcvs/quantal

« back to all changes in this revision

Viewing changes to h/compbas2.h

  • Committer: Bazaar Package Importer
  • Author(s): Camm Maguire
  • Date: 2004-06-24 15:13:46 UTC
  • Revision ID: james.westby@ubuntu.com-20040624151346-xh0xaaktyyp7aorc
Tags: 2.7.0-26
C_GC_OFFSET is 2 on m68k-linux

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* if already mp.h has been included skip */
 
2
#ifdef GMP
 
3
#define save_avma 
 
4
#define restore_avma 
 
5
#endif
 
6
 
 
7
#ifdef _MP_H
 
8
#ifdef GMP
 
9
 
 
10
#else /* no gmp */
 
11
 
 
12
typedef  plong *GEN1;
 
13
/* if genpari.h not loaded */
 
14
#ifndef MAXBLOC
 
15
typedef  plong *GEN;
 
16
GEN1 addii(),mulii(),mulsi(),powerii(),shifti(),stoi(),dvmdii(),subii();
 
17
int cmpii();
 
18
plong itos();
 
19
#define signe(x)          (((GEN1)(x))[1]>>24)
 
20
#define lg(x)             (((GEN1)(x))[0]&0xffff)
 
21
#define setlg(x,s)        (((GEN1)(x))[0]=(((GEN1)(x))[0]&0xffff0000)+s)
 
22
#define lgef(x)           (((GEN1)(x))[1]&0xffff)
 
23
#define setlgef(x,s)      (((GEN1)(x))[1]=(((GEN1)(x))[1]&0xffff0000)+s)
 
24
 
 
25
#define our_ulong unsigned plong
 
26
#endif /* end MAXBLOC */
 
27
 
 
28
 
 
29
EXTER int in_saved_avma ;
 
30
EXTER unsigned plong avma;
 
31
EXTER GEN1 gzero;
 
32
EXTER GEN1 icopy_x;
 
33
/* #define DEBUG_AVMA */
 
34
 
 
35
#ifdef DEBUG_AVMA
 
36
#define save_avma long lvma = (in_saved_avma = 1, avma)
 
37
#define restore_avma avma = (in_saved_avma = 0, lvma)
 
38
#else
 
39
#define save_avma long lvma = avma
 
40
#define restore_avma avma = lvma
 
41
#endif
 
42
 
 
43
#endif /* NO GMP */
 
44
#endif /*  _MP_H */
 
45
 
 
46
  /* copy x to y, increasing space by factor of 2  */
 
47
object make_integer();
 
48
 
 
49
#define Mcar(x) (x)->c.c_car
 
50
#define Mcdr(x) (x)->c.c_cdr
 
51
#define Mcaar(x)        (x)->c.c_car->c.c_car
 
52
#define Mcadr(x)        (x)->c.c_cdr->c.c_car
 
53
#define Mcdar(x)        (x)->c.c_car->c.c_cdr
 
54
#define Mcddr(x)        (x)->c.c_cdr->c.c_cdr
 
55
#define Mcaaar(x)       (x)->c.c_car->c.c_car->c.c_car
 
56
#define Mcaadr(x)       (x)->c.c_cdr->c.c_car->c.c_car
 
57
#define Mcadar(x)       (x)->c.c_car->c.c_cdr->c.c_car
 
58
#define Mcaddr(x)       (x)->c.c_cdr->c.c_cdr->c.c_car
 
59
#define Mcdaar(x)       (x)->c.c_car->c.c_car->c.c_cdr
 
60
#define Mcdadr(x)       (x)->c.c_cdr->c.c_car->c.c_cdr
 
61
#define Mcddar(x)       (x)->c.c_car->c.c_cdr->c.c_cdr
 
62
#define Mcdddr(x)       (x)->c.c_cdr->c.c_cdr->c.c_cdr
 
63
#define Mcaaaar(x)      (x)->c.c_car->c.c_car->c.c_car->c.c_car
 
64
#define Mcaaadr(x)      (x)->c.c_cdr->c.c_car->c.c_car->c.c_car
 
65
#define Mcaadar(x)      (x)->c.c_car->c.c_cdr->c.c_car->c.c_car
 
66
#define Mcaaddr(x)      (x)->c.c_cdr->c.c_cdr->c.c_car->c.c_car
 
67
#define Mcadaar(x)      (x)->c.c_car->c.c_car->c.c_cdr->c.c_car
 
68
#define Mcadadr(x)      (x)->c.c_cdr->c.c_car->c.c_cdr->c.c_car
 
69
#define Mcaddar(x)      (x)->c.c_car->c.c_cdr->c.c_cdr->c.c_car
 
70
#define Mcadddr(x)      (x)->c.c_cdr->c.c_cdr->c.c_cdr->c.c_car
 
71
#define Mcdaaar(x)      (x)->c.c_car->c.c_car->c.c_car->c.c_cdr
 
72
#define Mcdaadr(x)      (x)->c.c_cdr->c.c_car->c.c_car->c.c_cdr
 
73
#define Mcdadar(x)      (x)->c.c_car->c.c_cdr->c.c_car->c.c_cdr
 
74
#define Mcdaddr(x)      (x)->c.c_cdr->c.c_cdr->c.c_car->c.c_cdr
 
75
#define Mcddaar(x)      (x)->c.c_car->c.c_car->c.c_cdr->c.c_cdr
 
76
#define Mcddadr(x)      (x)->c.c_cdr->c.c_car->c.c_cdr->c.c_cdr
 
77
#define Mcdddar(x)      (x)->c.c_car->c.c_cdr->c.c_cdr->c.c_cdr
 
78
#define Mcddddr(x)      (x)->c.c_cdr->c.c_cdr->c.c_cdr->c.c_cdr
 
79
 
 
80
/* for cmp */
 
81
 
 
82
#define CMPcar(x)       (x)->c.c_car
 
83
#define CMPcdr(x)       (x)->c.c_cdr
 
84
#define CMPcaar(x)      (x)->c.c_car->c.c_car
 
85
#define CMPcadr(x)      (x)->c.c_cdr->c.c_car
 
86
#define CMPcdar(x)      (x)->c.c_car->c.c_cdr
 
87
#define CMPcddr(x)      (x)->c.c_cdr->c.c_cdr
 
88
#define CMPcaaar(x)     (x)->c.c_car->c.c_car->c.c_car
 
89
#define CMPcaadr(x)     (x)->c.c_cdr->c.c_car->c.c_car
 
90
#define CMPcadar(x)     (x)->c.c_car->c.c_cdr->c.c_car
 
91
#define CMPcaddr(x)     (x)->c.c_cdr->c.c_cdr->c.c_car
 
92
#define CMPcdaar(x)     (x)->c.c_car->c.c_car->c.c_cdr
 
93
#define CMPcdadr(x)     (x)->c.c_cdr->c.c_car->c.c_cdr
 
94
#define CMPcddar(x)     (x)->c.c_car->c.c_cdr->c.c_cdr
 
95
#define CMPcdddr(x)     (x)->c.c_cdr->c.c_cdr->c.c_cdr
 
96
#define CMPcaaaar(x)    (x)->c.c_car->c.c_car->c.c_car->c.c_car
 
97
#define CMPcaaadr(x)    (x)->c.c_cdr->c.c_car->c.c_car->c.c_car
 
98
#define CMPcaadar(x)    (x)->c.c_car->c.c_cdr->c.c_car->c.c_car
 
99
#define CMPcaaddr(x)    (x)->c.c_cdr->c.c_cdr->c.c_car->c.c_car
 
100
#define CMPcadaar(x)    (x)->c.c_car->c.c_car->c.c_cdr->c.c_car
 
101
#define CMPcadadr(x)    (x)->c.c_cdr->c.c_car->c.c_cdr->c.c_car
 
102
#define CMPcaddar(x)    (x)->c.c_car->c.c_cdr->c.c_cdr->c.c_car
 
103
#define CMPcadddr(x)    (x)->c.c_cdr->c.c_cdr->c.c_cdr->c.c_car
 
104
#define CMPcdaaar(x)    (x)->c.c_car->c.c_car->c.c_car->c.c_cdr
 
105
#define CMPcdaadr(x)    (x)->c.c_cdr->c.c_car->c.c_car->c.c_cdr
 
106
#define CMPcdadar(x)    (x)->c.c_car->c.c_cdr->c.c_car->c.c_cdr
 
107
#define CMPcdaddr(x)    (x)->c.c_cdr->c.c_cdr->c.c_car->c.c_cdr
 
108
#define CMPcddaar(x)    (x)->c.c_car->c.c_car->c.c_cdr->c.c_cdr
 
109
#define CMPcddadr(x)    (x)->c.c_cdr->c.c_car->c.c_cdr->c.c_cdr
 
110
#define CMPcdddar(x)    (x)->c.c_car->c.c_cdr->c.c_cdr->c.c_cdr
 
111
#define CMPcddddr(x)    (x)->c.c_cdr->c.c_cdr->c.c_cdr->c.c_cdr
 
112
#define CMPfuncall      funcall
 
113
#define Creturn(v) return((vs_top=vs,(v)))
 
114
/* end for cmp*/
 
115
 
 
116
/* 2^6 is the limit on the number of args */
 
117
#define F_NARG_WIDTH 6
 
118
#define F_START_TYPES_POS   (2* F_NARG_WIDTH + F_end )
 
119
enum F_arg_flags
 
120
{ F_requires_nargs, /* if set, then caller must store VFUN_NARGS with number
 
121
                       of args passed.   F_ARGD is used to set up the argd,
 
122
                       and it sets this if minargs < maxargs.   */
 
123
  F_caller_sets_one_val, /* If set, then the CALLER will look after setting the
 
124
                       fcall.nvalues to 1, if necessary (eg the call is at the
 
125
                       end of a function, or if multiple-values-list invokes
 
126
                       the function.)  If foo is proclaimed to return exactly
 
127
                       one value, then the CALLER might set this flag in the
 
128
                       link argd, or it might do it in the case we have (setq
 
129
                       x (foo)) or (values (foo)).   
 
130
                      
 
131
                       If this flag is not set, then the CALLED function is
 
132
                       responsible for setting the number of values in
 
133
                       fcall.nvalues, and also for always returning as C value
 
134
                       Cnil, in the case that it sets fcall.nvalues == 0.  */
 
135
  F_requires_fun_passed, /* if set, the caller must set VFUN_FUN to the
 
136
                            calling function.  This is used by closures, but
 
137
                            could be used by other things i suppose. */
 
138
  F_end               /* 1 bigger than the largest flag */
 
139
  };
 
140
enum F_arg_types
 
141
{ F_object,
 
142
  F_int,  
 
143
  F_double_ptr,
 
144
  F_shortfloat  
 
145
  };
 
146
 
 
147
/* Make a mask for bits i < j, masking j-i bits */
 
148
#define MASK_RANGE(i,j)  ((~(~0 << (j-i)))<< i)
 
149
 
 
150
#define F_PLAIN(x) (((x) & MASK_RANGE( F_START_TYPES_POS,31)) == 0)
 
151
#define ARG_LIMIT 63
 
152
 
 
153
EXTER object MVloc[10];
 
154
 
 
155
#define TYPEP(x,t) (type_of(x) == (t))
 
156
 
 
157
 
 
158
#ifdef HAVE_ALLOCA
 
159
/* #ifndef alloca */
 
160
/* char *alloca(); */
 
161
/* #endif */
 
162
#include <stdlib.h>
 
163
EXTER char *alloca_val;
 
164
#define OUR_ALLOCA(n) alloca(n)
 
165
#define ALLOCA_FREE(n) 
 
166
 
 
167
#define ALLOCA_CONS(n) (alloca_val=alloca((n)*sizeof(struct cons))) 
 
168
#define ON_STACK_CONS(x,y) (alloca_val=alloca(sizeof(struct cons)), on_stack_cons(x,y)) 
 
169
#define ON_STACK_LIST on_stack_list
 
170
#define ON_STACK_LIST_VECTOR on_stack_list_vector
 
171
#define ON_STACK_LIST_VECTOR_NEW on_stack_list_vector_new
 
172
#define ON_STACK_MAKE_LIST on_stack_make_list
 
173
object on_stack_cons();
 
174
object on_stack_list(int,...);
 
175
/* object on_stack_list_vector(int,va_list); */
 
176
object on_stack_list_vector_new(int,object,va_list);
 
177
object on_stack_make_list();
 
178
#else /* no HAVE_ALLOCA */
 
179
#define OUR_ALLOCA(n) malloc(n)
 
180
#define ALLOCA_FREE(n) free(n)
 
181
#define ALLOCA_CONS(n) 0
 
182
#define ON_STACK_CONS(x,y) MMcons(x,y)
 
183
#define ON_STACK_LIST list
 
184
#define ON_STACK_LIST_VECTOR list_vector
 
185
#define ON_STACK_MAKE_LIST make_list
 
186
#endif
 
187
#ifndef KEYTYPE
 
188
#define KEYTYPE void *
 
189
#endif
 
190
 
 
191