ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/microscheme/scheme.h
(Generate patch)

Comparing microscheme/scheme.h (file contents):
Revision 1.6 by root, Fri Nov 27 02:06:36 2015 UTC vs.
Revision 1.7 by root, Sat Nov 28 05:12:53 2015 UTC

131#endif 131#endif
132 132
133typedef struct scheme scheme; 133typedef struct scheme scheme;
134typedef struct cell *pointer; 134typedef struct cell *pointer;
135 135
136typedef void *(*func_alloc) (size_t);
137typedef void (*func_dealloc) (void *);
138
139typedef long IVALUE; /* this is not used consistently yet */ 136typedef long IVALUE; /* this is not used consistently yet */
140
141#if USE_REAL 137#if USE_REAL
142typedef double RVALUE; 138typedef double RVALUE;
143# define num_is_fixnum(n) (n).is_fixnum
144# define num_set_fixnum(n,f) (n).is_fixnum = (f)
145# define num_ivalue(n) (n).value.ivalue
146# define num_rvalue(n) (n).value.rvalue
147# define num_set_ivalue(n,i) (n).value.ivalue = (i)
148# define num_set_rvalue(n,r) (n).value.rvalue = (r)
149#else 139#else
150typedef long RVALUE; 140typedef long RVALUE;
151# define num_is_fixnum(n) 1
152# define num_set_fixnum(n,f) 0
153# define num_ivalue(n) (n).value.ivalue
154# define num_rvalue(n) (n).value.ivalue
155# define num_set_ivalue(n,i) (n).value.ivalue = (i)
156# define num_set_rvalue(n,r) (n).value.ivalue = (r)
157#endif 141#endif
158
159/* num, for generic arithmetic */
160typedef struct num
161{
162 union
163 {
164 IVALUE ivalue;
165#if USE_REAL
166 RVALUE rvalue;
167#endif
168 } value;
169#if USE_REAL
170 char is_fixnum;
171#endif
172} num;
173 142
174/* Used for documentation purposes, to signal functions in 'interface' */ 143/* Used for documentation purposes, to signal functions in 'interface' */
175#define INTERFACE static 144#define INTERFACE static
176 145
177SCHEME_EXPORT scheme *scheme_init_new (); 146SCHEME_EXPORT scheme *scheme_init_new ();
191SCHEME_EXPORT void scheme_define (SCHEME_P_ pointer env, pointer symbol, pointer value); 160SCHEME_EXPORT void scheme_define (SCHEME_P_ pointer env, pointer symbol, pointer value);
192 161
193typedef pointer (*foreign_func) (SCHEME_P_ pointer); 162typedef pointer (*foreign_func) (SCHEME_P_ pointer);
194 163
195pointer xcons (SCHEME_P_ pointer a, pointer b, int immutable); 164pointer xcons (SCHEME_P_ pointer a, pointer b, int immutable);
196INTERFACE pointer mk_integer (SCHEME_P_ long num); 165INTERFACE pointer mk_integer (SCHEME_P_ IVALUE n);
197INTERFACE pointer mk_real (SCHEME_P_ RVALUE num); 166INTERFACE pointer mk_real (SCHEME_P_ RVALUE n);
198INTERFACE pointer mk_symbol (SCHEME_P_ const char *name); 167INTERFACE pointer mk_symbol (SCHEME_P_ const char *name);
199INTERFACE pointer gensym (SCHEME_P); 168INTERFACE pointer gensym (SCHEME_P);
200INTERFACE pointer mk_string (SCHEME_P_ const char *str); 169INTERFACE pointer mk_string (SCHEME_P_ const char *str);
201INTERFACE pointer mk_counted_string (SCHEME_P_ const char *str, uint32_t len); 170INTERFACE pointer mk_counted_string (SCHEME_P_ const char *str, uint32_t len);
202INTERFACE pointer mk_empty_string (SCHEME_P_ uint32_t len, char fill); 171INTERFACE pointer mk_empty_string (SCHEME_P_ uint32_t len, char fill);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines