/* [<][>][^][v][top][bottom][index][help] */
DEFINITIONS
This source file includes following definitions.
- check_endian
- binarylib_default_endian
- binarylib_read_binary_uint8
- binarylib_read_binary_uint16
- binarylib_read_binary_uint32
- binarylib_read_binary_uint64
- binarylib_read_binary_sint8
- binarylib_read_binary_sint16
- binarylib_read_binary_sint32
- binarylib_read_binary_sint64
- binarylib_write_binary_uint8
- binarylib_write_binary_uint16
- binarylib_write_binary_uint32
- binarylib_write_binary_uint64
- binarylib_write_binary_sint8
- binarylib_write_binary_sint16
- binarylib_write_binary_sint32
- binarylib_write_binary_sint64
- binarylib_read_binary_float
- binarylib_read_binary_double
- binarylib_write_binary_float
- binarylib_write_binary_double
- Scm_Init_binarylib
1 /* Generated by genstub. Do not edit. */
2 #include <gauche.h>
3 #if defined(__CYGWIN__) || defined(__MINGW32__)
4 #define SCM_CGEN_CONST /*empty*/
5 #else
6 #define SCM_CGEN_CONST const
7 #endif
8 #include "binary.h"
9
10 #ifdef WORDS_BIGENDIAN
11 #define DEFAULT_ENDIAN SCM_SYM_BIG_ENDIAN
12 #else
13 #define DEFAULT_ENDIAN SCM_SYM_LITTLE_ENDIAN
14 #endif
15
16 static Endian check_endian(ScmObj sym)
17 {
18 if (SCM_EQ(sym, SCM_SYM_BIG_ENDIAN)) return SCM_BE;
19 if (SCM_EQ(sym, SCM_SYM_LITTLE_ENDIAN)) return SCM_LE;
20 Scm_Error("endian must be big-endian or little-endian, but got %S", sym);
21 return SCM_BE; /* dummy */
22 }
23
24 static ScmObj binarylib_default_endian(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
25 {
26 SCM_ENTER_SUBR("default-endian");
27 {
28 {
29 ScmObj SCM_RESULT;
30 SCM_RESULT = (DEFAULT_ENDIAN);
31 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
32 }
33 }
34 }
35
36 static SCM_DEFINE_STRING_CONST(binarylib_default_endian__NAME, "default-endian", 14, 14);
37 static SCM_DEFINE_SUBR(binarylib_default_endian__STUB, 0, 0, SCM_OBJ(&binarylib_default_endian__NAME), binarylib_default_endian, NULL, NULL);
38
39 static ScmObj binarylib_read_binary_uint8(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
40 {
41 ScmObj port_scm;
42 ScmObj port;
43 ScmObj endian_scm;
44 Endian endian;
45 ScmObj SCM_OPTARGS = SCM_ARGREF(SCM_ARGCNT-1);
46 SCM_ENTER_SUBR("read-binary-uint8");
47 if (Scm_Length(SCM_OPTARGS) > 2)
48 Scm_Error("too many arguments: up to 2 is expected, %d given.", Scm_Length(SCM_OPTARGS));
49 if (SCM_NULLP(SCM_OPTARGS)) port_scm = SCM_FALSE;
50 else {
51 port_scm = SCM_CAR(SCM_OPTARGS);
52 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
53 }
54 port = (port_scm);
55 if (SCM_NULLP(SCM_OPTARGS)) endian_scm = DEFAULT_ENDIAN;
56 else {
57 endian_scm = SCM_CAR(SCM_OPTARGS);
58 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
59 }
60 endian = check_endian(endian_scm);
61 {
62 {
63 ScmObj SCM_RESULT;
64 SCM_RESULT = Scm_ReadBinaryUint8(port, endian);
65 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
66 }
67 }
68 }
69
70 static SCM_DEFINE_STRING_CONST(binarylib_read_binary_uint8__NAME, "read-binary-uint8", 17, 17);
71 static SCM_DEFINE_SUBR(binarylib_read_binary_uint8__STUB, 0, 1, SCM_OBJ(&binarylib_read_binary_uint8__NAME), binarylib_read_binary_uint8, NULL, NULL);
72
73 static ScmObj binarylib_read_binary_uint16(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
74 {
75 ScmObj port_scm;
76 ScmObj port;
77 ScmObj endian_scm;
78 Endian endian;
79 ScmObj SCM_OPTARGS = SCM_ARGREF(SCM_ARGCNT-1);
80 SCM_ENTER_SUBR("read-binary-uint16");
81 if (Scm_Length(SCM_OPTARGS) > 2)
82 Scm_Error("too many arguments: up to 2 is expected, %d given.", Scm_Length(SCM_OPTARGS));
83 if (SCM_NULLP(SCM_OPTARGS)) port_scm = SCM_FALSE;
84 else {
85 port_scm = SCM_CAR(SCM_OPTARGS);
86 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
87 }
88 port = (port_scm);
89 if (SCM_NULLP(SCM_OPTARGS)) endian_scm = DEFAULT_ENDIAN;
90 else {
91 endian_scm = SCM_CAR(SCM_OPTARGS);
92 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
93 }
94 endian = check_endian(endian_scm);
95 {
96 {
97 ScmObj SCM_RESULT;
98 SCM_RESULT = Scm_ReadBinaryUint16(port, endian);
99 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
100 }
101 }
102 }
103
104 static SCM_DEFINE_STRING_CONST(binarylib_read_binary_uint16__NAME, "read-binary-uint16", 18, 18);
105 static SCM_DEFINE_SUBR(binarylib_read_binary_uint16__STUB, 0, 1, SCM_OBJ(&binarylib_read_binary_uint16__NAME), binarylib_read_binary_uint16, NULL, NULL);
106
107 static ScmObj binarylib_read_binary_uint32(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
108 {
109 ScmObj port_scm;
110 ScmObj port;
111 ScmObj endian_scm;
112 Endian endian;
113 ScmObj SCM_OPTARGS = SCM_ARGREF(SCM_ARGCNT-1);
114 SCM_ENTER_SUBR("read-binary-uint32");
115 if (Scm_Length(SCM_OPTARGS) > 2)
116 Scm_Error("too many arguments: up to 2 is expected, %d given.", Scm_Length(SCM_OPTARGS));
117 if (SCM_NULLP(SCM_OPTARGS)) port_scm = SCM_FALSE;
118 else {
119 port_scm = SCM_CAR(SCM_OPTARGS);
120 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
121 }
122 port = (port_scm);
123 if (SCM_NULLP(SCM_OPTARGS)) endian_scm = DEFAULT_ENDIAN;
124 else {
125 endian_scm = SCM_CAR(SCM_OPTARGS);
126 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
127 }
128 endian = check_endian(endian_scm);
129 {
130 {
131 ScmObj SCM_RESULT;
132 SCM_RESULT = Scm_ReadBinaryUint32(port, endian);
133 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
134 }
135 }
136 }
137
138 static SCM_DEFINE_STRING_CONST(binarylib_read_binary_uint32__NAME, "read-binary-uint32", 18, 18);
139 static SCM_DEFINE_SUBR(binarylib_read_binary_uint32__STUB, 0, 1, SCM_OBJ(&binarylib_read_binary_uint32__NAME), binarylib_read_binary_uint32, NULL, NULL);
140
141 static ScmObj binarylib_read_binary_uint64(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
142 {
143 ScmObj port_scm;
144 ScmObj port;
145 ScmObj endian_scm;
146 Endian endian;
147 ScmObj SCM_OPTARGS = SCM_ARGREF(SCM_ARGCNT-1);
148 SCM_ENTER_SUBR("read-binary-uint64");
149 if (Scm_Length(SCM_OPTARGS) > 2)
150 Scm_Error("too many arguments: up to 2 is expected, %d given.", Scm_Length(SCM_OPTARGS));
151 if (SCM_NULLP(SCM_OPTARGS)) port_scm = SCM_FALSE;
152 else {
153 port_scm = SCM_CAR(SCM_OPTARGS);
154 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
155 }
156 port = (port_scm);
157 if (SCM_NULLP(SCM_OPTARGS)) endian_scm = DEFAULT_ENDIAN;
158 else {
159 endian_scm = SCM_CAR(SCM_OPTARGS);
160 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
161 }
162 endian = check_endian(endian_scm);
163 {
164 {
165 ScmObj SCM_RESULT;
166 SCM_RESULT = Scm_ReadBinaryUint64(port, endian);
167 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
168 }
169 }
170 }
171
172 static SCM_DEFINE_STRING_CONST(binarylib_read_binary_uint64__NAME, "read-binary-uint64", 18, 18);
173 static SCM_DEFINE_SUBR(binarylib_read_binary_uint64__STUB, 0, 1, SCM_OBJ(&binarylib_read_binary_uint64__NAME), binarylib_read_binary_uint64, NULL, NULL);
174
175 static ScmObj binarylib_read_binary_sint8(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
176 {
177 ScmObj port_scm;
178 ScmObj port;
179 ScmObj endian_scm;
180 Endian endian;
181 ScmObj SCM_OPTARGS = SCM_ARGREF(SCM_ARGCNT-1);
182 SCM_ENTER_SUBR("read-binary-sint8");
183 if (Scm_Length(SCM_OPTARGS) > 2)
184 Scm_Error("too many arguments: up to 2 is expected, %d given.", Scm_Length(SCM_OPTARGS));
185 if (SCM_NULLP(SCM_OPTARGS)) port_scm = SCM_FALSE;
186 else {
187 port_scm = SCM_CAR(SCM_OPTARGS);
188 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
189 }
190 port = (port_scm);
191 if (SCM_NULLP(SCM_OPTARGS)) endian_scm = DEFAULT_ENDIAN;
192 else {
193 endian_scm = SCM_CAR(SCM_OPTARGS);
194 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
195 }
196 endian = check_endian(endian_scm);
197 {
198 {
199 ScmObj SCM_RESULT;
200 SCM_RESULT = Scm_ReadBinarySint8(port, endian);
201 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
202 }
203 }
204 }
205
206 static SCM_DEFINE_STRING_CONST(binarylib_read_binary_sint8__NAME, "read-binary-sint8", 17, 17);
207 static SCM_DEFINE_SUBR(binarylib_read_binary_sint8__STUB, 0, 1, SCM_OBJ(&binarylib_read_binary_sint8__NAME), binarylib_read_binary_sint8, NULL, NULL);
208
209 static ScmObj binarylib_read_binary_sint16(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
210 {
211 ScmObj port_scm;
212 ScmObj port;
213 ScmObj endian_scm;
214 Endian endian;
215 ScmObj SCM_OPTARGS = SCM_ARGREF(SCM_ARGCNT-1);
216 SCM_ENTER_SUBR("read-binary-sint16");
217 if (Scm_Length(SCM_OPTARGS) > 2)
218 Scm_Error("too many arguments: up to 2 is expected, %d given.", Scm_Length(SCM_OPTARGS));
219 if (SCM_NULLP(SCM_OPTARGS)) port_scm = SCM_FALSE;
220 else {
221 port_scm = SCM_CAR(SCM_OPTARGS);
222 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
223 }
224 port = (port_scm);
225 if (SCM_NULLP(SCM_OPTARGS)) endian_scm = DEFAULT_ENDIAN;
226 else {
227 endian_scm = SCM_CAR(SCM_OPTARGS);
228 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
229 }
230 endian = check_endian(endian_scm);
231 {
232 {
233 ScmObj SCM_RESULT;
234 SCM_RESULT = Scm_ReadBinarySint16(port, endian);
235 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
236 }
237 }
238 }
239
240 static SCM_DEFINE_STRING_CONST(binarylib_read_binary_sint16__NAME, "read-binary-sint16", 18, 18);
241 static SCM_DEFINE_SUBR(binarylib_read_binary_sint16__STUB, 0, 1, SCM_OBJ(&binarylib_read_binary_sint16__NAME), binarylib_read_binary_sint16, NULL, NULL);
242
243 static ScmObj binarylib_read_binary_sint32(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
244 {
245 ScmObj port_scm;
246 ScmObj port;
247 ScmObj endian_scm;
248 Endian endian;
249 ScmObj SCM_OPTARGS = SCM_ARGREF(SCM_ARGCNT-1);
250 SCM_ENTER_SUBR("read-binary-sint32");
251 if (Scm_Length(SCM_OPTARGS) > 2)
252 Scm_Error("too many arguments: up to 2 is expected, %d given.", Scm_Length(SCM_OPTARGS));
253 if (SCM_NULLP(SCM_OPTARGS)) port_scm = SCM_FALSE;
254 else {
255 port_scm = SCM_CAR(SCM_OPTARGS);
256 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
257 }
258 port = (port_scm);
259 if (SCM_NULLP(SCM_OPTARGS)) endian_scm = DEFAULT_ENDIAN;
260 else {
261 endian_scm = SCM_CAR(SCM_OPTARGS);
262 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
263 }
264 endian = check_endian(endian_scm);
265 {
266 {
267 ScmObj SCM_RESULT;
268 SCM_RESULT = Scm_ReadBinarySint32(port, endian);
269 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
270 }
271 }
272 }
273
274 static SCM_DEFINE_STRING_CONST(binarylib_read_binary_sint32__NAME, "read-binary-sint32", 18, 18);
275 static SCM_DEFINE_SUBR(binarylib_read_binary_sint32__STUB, 0, 1, SCM_OBJ(&binarylib_read_binary_sint32__NAME), binarylib_read_binary_sint32, NULL, NULL);
276
277 static ScmObj binarylib_read_binary_sint64(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
278 {
279 ScmObj port_scm;
280 ScmObj port;
281 ScmObj endian_scm;
282 Endian endian;
283 ScmObj SCM_OPTARGS = SCM_ARGREF(SCM_ARGCNT-1);
284 SCM_ENTER_SUBR("read-binary-sint64");
285 if (Scm_Length(SCM_OPTARGS) > 2)
286 Scm_Error("too many arguments: up to 2 is expected, %d given.", Scm_Length(SCM_OPTARGS));
287 if (SCM_NULLP(SCM_OPTARGS)) port_scm = SCM_FALSE;
288 else {
289 port_scm = SCM_CAR(SCM_OPTARGS);
290 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
291 }
292 port = (port_scm);
293 if (SCM_NULLP(SCM_OPTARGS)) endian_scm = DEFAULT_ENDIAN;
294 else {
295 endian_scm = SCM_CAR(SCM_OPTARGS);
296 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
297 }
298 endian = check_endian(endian_scm);
299 {
300 {
301 ScmObj SCM_RESULT;
302 SCM_RESULT = Scm_ReadBinarySint64(port, endian);
303 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
304 }
305 }
306 }
307
308 static SCM_DEFINE_STRING_CONST(binarylib_read_binary_sint64__NAME, "read-binary-sint64", 18, 18);
309 static SCM_DEFINE_SUBR(binarylib_read_binary_sint64__STUB, 0, 1, SCM_OBJ(&binarylib_read_binary_sint64__NAME), binarylib_read_binary_sint64, NULL, NULL);
310
311 static ScmObj binarylib_write_binary_uint8(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
312 {
313 ScmObj intval_scm;
314 ScmObj intval;
315 ScmObj port_scm;
316 ScmObj port;
317 ScmObj endian_scm;
318 Endian endian;
319 ScmObj SCM_OPTARGS = SCM_ARGREF(SCM_ARGCNT-1);
320 SCM_ENTER_SUBR("write-binary-uint8");
321 if (Scm_Length(SCM_OPTARGS) > 2)
322 Scm_Error("too many arguments: up to 2 is expected, %d given.", Scm_Length(SCM_OPTARGS));
323 intval_scm = SCM_ARGREF(0);
324 if (!SCM_EXACTP(intval_scm)) Scm_Error("exact integer required, but got %S", intval_scm);
325 intval = (intval_scm);
326 if (SCM_NULLP(SCM_OPTARGS)) port_scm = SCM_FALSE;
327 else {
328 port_scm = SCM_CAR(SCM_OPTARGS);
329 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
330 }
331 port = (port_scm);
332 if (SCM_NULLP(SCM_OPTARGS)) endian_scm = DEFAULT_ENDIAN;
333 else {
334 endian_scm = SCM_CAR(SCM_OPTARGS);
335 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
336 }
337 endian = check_endian(endian_scm);
338 {
339 Scm_WriteBinaryUint8(intval, port, endian);
340 SCM_RETURN(SCM_UNDEFINED);
341 }
342 }
343
344 static SCM_DEFINE_STRING_CONST(binarylib_write_binary_uint8__NAME, "write-binary-uint8", 18, 18);
345 static SCM_DEFINE_SUBR(binarylib_write_binary_uint8__STUB, 1, 1, SCM_OBJ(&binarylib_write_binary_uint8__NAME), binarylib_write_binary_uint8, NULL, NULL);
346
347 static ScmObj binarylib_write_binary_uint16(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
348 {
349 ScmObj intval_scm;
350 ScmObj intval;
351 ScmObj port_scm;
352 ScmObj port;
353 ScmObj endian_scm;
354 Endian endian;
355 ScmObj SCM_OPTARGS = SCM_ARGREF(SCM_ARGCNT-1);
356 SCM_ENTER_SUBR("write-binary-uint16");
357 if (Scm_Length(SCM_OPTARGS) > 2)
358 Scm_Error("too many arguments: up to 2 is expected, %d given.", Scm_Length(SCM_OPTARGS));
359 intval_scm = SCM_ARGREF(0);
360 if (!SCM_EXACTP(intval_scm)) Scm_Error("exact integer required, but got %S", intval_scm);
361 intval = (intval_scm);
362 if (SCM_NULLP(SCM_OPTARGS)) port_scm = SCM_FALSE;
363 else {
364 port_scm = SCM_CAR(SCM_OPTARGS);
365 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
366 }
367 port = (port_scm);
368 if (SCM_NULLP(SCM_OPTARGS)) endian_scm = DEFAULT_ENDIAN;
369 else {
370 endian_scm = SCM_CAR(SCM_OPTARGS);
371 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
372 }
373 endian = check_endian(endian_scm);
374 {
375 Scm_WriteBinaryUint16(intval, port, endian);
376 SCM_RETURN(SCM_UNDEFINED);
377 }
378 }
379
380 static SCM_DEFINE_STRING_CONST(binarylib_write_binary_uint16__NAME, "write-binary-uint16", 19, 19);
381 static SCM_DEFINE_SUBR(binarylib_write_binary_uint16__STUB, 1, 1, SCM_OBJ(&binarylib_write_binary_uint16__NAME), binarylib_write_binary_uint16, NULL, NULL);
382
383 static ScmObj binarylib_write_binary_uint32(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
384 {
385 ScmObj intval_scm;
386 ScmObj intval;
387 ScmObj port_scm;
388 ScmObj port;
389 ScmObj endian_scm;
390 Endian endian;
391 ScmObj SCM_OPTARGS = SCM_ARGREF(SCM_ARGCNT-1);
392 SCM_ENTER_SUBR("write-binary-uint32");
393 if (Scm_Length(SCM_OPTARGS) > 2)
394 Scm_Error("too many arguments: up to 2 is expected, %d given.", Scm_Length(SCM_OPTARGS));
395 intval_scm = SCM_ARGREF(0);
396 if (!SCM_EXACTP(intval_scm)) Scm_Error("exact integer required, but got %S", intval_scm);
397 intval = (intval_scm);
398 if (SCM_NULLP(SCM_OPTARGS)) port_scm = SCM_FALSE;
399 else {
400 port_scm = SCM_CAR(SCM_OPTARGS);
401 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
402 }
403 port = (port_scm);
404 if (SCM_NULLP(SCM_OPTARGS)) endian_scm = DEFAULT_ENDIAN;
405 else {
406 endian_scm = SCM_CAR(SCM_OPTARGS);
407 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
408 }
409 endian = check_endian(endian_scm);
410 {
411 Scm_WriteBinaryUint32(intval, port, endian);
412 SCM_RETURN(SCM_UNDEFINED);
413 }
414 }
415
416 static SCM_DEFINE_STRING_CONST(binarylib_write_binary_uint32__NAME, "write-binary-uint32", 19, 19);
417 static SCM_DEFINE_SUBR(binarylib_write_binary_uint32__STUB, 1, 1, SCM_OBJ(&binarylib_write_binary_uint32__NAME), binarylib_write_binary_uint32, NULL, NULL);
418
419 static ScmObj binarylib_write_binary_uint64(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
420 {
421 ScmObj intval_scm;
422 ScmObj intval;
423 ScmObj port_scm;
424 ScmObj port;
425 ScmObj endian_scm;
426 Endian endian;
427 ScmObj SCM_OPTARGS = SCM_ARGREF(SCM_ARGCNT-1);
428 SCM_ENTER_SUBR("write-binary-uint64");
429 if (Scm_Length(SCM_OPTARGS) > 2)
430 Scm_Error("too many arguments: up to 2 is expected, %d given.", Scm_Length(SCM_OPTARGS));
431 intval_scm = SCM_ARGREF(0);
432 if (!SCM_EXACTP(intval_scm)) Scm_Error("exact integer required, but got %S", intval_scm);
433 intval = (intval_scm);
434 if (SCM_NULLP(SCM_OPTARGS)) port_scm = SCM_FALSE;
435 else {
436 port_scm = SCM_CAR(SCM_OPTARGS);
437 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
438 }
439 port = (port_scm);
440 if (SCM_NULLP(SCM_OPTARGS)) endian_scm = DEFAULT_ENDIAN;
441 else {
442 endian_scm = SCM_CAR(SCM_OPTARGS);
443 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
444 }
445 endian = check_endian(endian_scm);
446 {
447 Scm_WriteBinaryUint64(intval, port, endian);
448 SCM_RETURN(SCM_UNDEFINED);
449 }
450 }
451
452 static SCM_DEFINE_STRING_CONST(binarylib_write_binary_uint64__NAME, "write-binary-uint64", 19, 19);
453 static SCM_DEFINE_SUBR(binarylib_write_binary_uint64__STUB, 1, 1, SCM_OBJ(&binarylib_write_binary_uint64__NAME), binarylib_write_binary_uint64, NULL, NULL);
454
455 static ScmObj binarylib_write_binary_sint8(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
456 {
457 ScmObj intval_scm;
458 ScmObj intval;
459 ScmObj port_scm;
460 ScmObj port;
461 ScmObj endian_scm;
462 Endian endian;
463 ScmObj SCM_OPTARGS = SCM_ARGREF(SCM_ARGCNT-1);
464 SCM_ENTER_SUBR("write-binary-sint8");
465 if (Scm_Length(SCM_OPTARGS) > 2)
466 Scm_Error("too many arguments: up to 2 is expected, %d given.", Scm_Length(SCM_OPTARGS));
467 intval_scm = SCM_ARGREF(0);
468 if (!SCM_EXACTP(intval_scm)) Scm_Error("exact integer required, but got %S", intval_scm);
469 intval = (intval_scm);
470 if (SCM_NULLP(SCM_OPTARGS)) port_scm = SCM_FALSE;
471 else {
472 port_scm = SCM_CAR(SCM_OPTARGS);
473 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
474 }
475 port = (port_scm);
476 if (SCM_NULLP(SCM_OPTARGS)) endian_scm = DEFAULT_ENDIAN;
477 else {
478 endian_scm = SCM_CAR(SCM_OPTARGS);
479 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
480 }
481 endian = check_endian(endian_scm);
482 {
483 Scm_WriteBinarySint8(intval, port, endian);
484 SCM_RETURN(SCM_UNDEFINED);
485 }
486 }
487
488 static SCM_DEFINE_STRING_CONST(binarylib_write_binary_sint8__NAME, "write-binary-sint8", 18, 18);
489 static SCM_DEFINE_SUBR(binarylib_write_binary_sint8__STUB, 1, 1, SCM_OBJ(&binarylib_write_binary_sint8__NAME), binarylib_write_binary_sint8, NULL, NULL);
490
491 static ScmObj binarylib_write_binary_sint16(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
492 {
493 ScmObj intval_scm;
494 ScmObj intval;
495 ScmObj port_scm;
496 ScmObj port;
497 ScmObj endian_scm;
498 Endian endian;
499 ScmObj SCM_OPTARGS = SCM_ARGREF(SCM_ARGCNT-1);
500 SCM_ENTER_SUBR("write-binary-sint16");
501 if (Scm_Length(SCM_OPTARGS) > 2)
502 Scm_Error("too many arguments: up to 2 is expected, %d given.", Scm_Length(SCM_OPTARGS));
503 intval_scm = SCM_ARGREF(0);
504 if (!SCM_EXACTP(intval_scm)) Scm_Error("exact integer required, but got %S", intval_scm);
505 intval = (intval_scm);
506 if (SCM_NULLP(SCM_OPTARGS)) port_scm = SCM_FALSE;
507 else {
508 port_scm = SCM_CAR(SCM_OPTARGS);
509 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
510 }
511 port = (port_scm);
512 if (SCM_NULLP(SCM_OPTARGS)) endian_scm = DEFAULT_ENDIAN;
513 else {
514 endian_scm = SCM_CAR(SCM_OPTARGS);
515 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
516 }
517 endian = check_endian(endian_scm);
518 {
519 Scm_WriteBinarySint16(intval, port, endian);
520 SCM_RETURN(SCM_UNDEFINED);
521 }
522 }
523
524 static SCM_DEFINE_STRING_CONST(binarylib_write_binary_sint16__NAME, "write-binary-sint16", 19, 19);
525 static SCM_DEFINE_SUBR(binarylib_write_binary_sint16__STUB, 1, 1, SCM_OBJ(&binarylib_write_binary_sint16__NAME), binarylib_write_binary_sint16, NULL, NULL);
526
527 static ScmObj binarylib_write_binary_sint32(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
528 {
529 ScmObj intval_scm;
530 ScmObj intval;
531 ScmObj port_scm;
532 ScmObj port;
533 ScmObj endian_scm;
534 Endian endian;
535 ScmObj SCM_OPTARGS = SCM_ARGREF(SCM_ARGCNT-1);
536 SCM_ENTER_SUBR("write-binary-sint32");
537 if (Scm_Length(SCM_OPTARGS) > 2)
538 Scm_Error("too many arguments: up to 2 is expected, %d given.", Scm_Length(SCM_OPTARGS));
539 intval_scm = SCM_ARGREF(0);
540 if (!SCM_EXACTP(intval_scm)) Scm_Error("exact integer required, but got %S", intval_scm);
541 intval = (intval_scm);
542 if (SCM_NULLP(SCM_OPTARGS)) port_scm = SCM_FALSE;
543 else {
544 port_scm = SCM_CAR(SCM_OPTARGS);
545 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
546 }
547 port = (port_scm);
548 if (SCM_NULLP(SCM_OPTARGS)) endian_scm = DEFAULT_ENDIAN;
549 else {
550 endian_scm = SCM_CAR(SCM_OPTARGS);
551 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
552 }
553 endian = check_endian(endian_scm);
554 {
555 Scm_WriteBinarySint32(intval, port, endian);
556 SCM_RETURN(SCM_UNDEFINED);
557 }
558 }
559
560 static SCM_DEFINE_STRING_CONST(binarylib_write_binary_sint32__NAME, "write-binary-sint32", 19, 19);
561 static SCM_DEFINE_SUBR(binarylib_write_binary_sint32__STUB, 1, 1, SCM_OBJ(&binarylib_write_binary_sint32__NAME), binarylib_write_binary_sint32, NULL, NULL);
562
563 static ScmObj binarylib_write_binary_sint64(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
564 {
565 ScmObj intval_scm;
566 ScmObj intval;
567 ScmObj port_scm;
568 ScmObj port;
569 ScmObj endian_scm;
570 Endian endian;
571 ScmObj SCM_OPTARGS = SCM_ARGREF(SCM_ARGCNT-1);
572 SCM_ENTER_SUBR("write-binary-sint64");
573 if (Scm_Length(SCM_OPTARGS) > 2)
574 Scm_Error("too many arguments: up to 2 is expected, %d given.", Scm_Length(SCM_OPTARGS));
575 intval_scm = SCM_ARGREF(0);
576 if (!SCM_EXACTP(intval_scm)) Scm_Error("exact integer required, but got %S", intval_scm);
577 intval = (intval_scm);
578 if (SCM_NULLP(SCM_OPTARGS)) port_scm = SCM_FALSE;
579 else {
580 port_scm = SCM_CAR(SCM_OPTARGS);
581 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
582 }
583 port = (port_scm);
584 if (SCM_NULLP(SCM_OPTARGS)) endian_scm = DEFAULT_ENDIAN;
585 else {
586 endian_scm = SCM_CAR(SCM_OPTARGS);
587 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
588 }
589 endian = check_endian(endian_scm);
590 {
591 Scm_WriteBinarySint64(intval, port, endian);
592 SCM_RETURN(SCM_UNDEFINED);
593 }
594 }
595
596 static SCM_DEFINE_STRING_CONST(binarylib_write_binary_sint64__NAME, "write-binary-sint64", 19, 19);
597 static SCM_DEFINE_SUBR(binarylib_write_binary_sint64__STUB, 1, 1, SCM_OBJ(&binarylib_write_binary_sint64__NAME), binarylib_write_binary_sint64, NULL, NULL);
598
599 static ScmObj binarylib_read_binary_float(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
600 {
601 ScmObj port_scm;
602 ScmObj port;
603 ScmObj endian_scm;
604 Endian endian;
605 ScmObj SCM_OPTARGS = SCM_ARGREF(SCM_ARGCNT-1);
606 SCM_ENTER_SUBR("read-binary-float");
607 if (Scm_Length(SCM_OPTARGS) > 2)
608 Scm_Error("too many arguments: up to 2 is expected, %d given.", Scm_Length(SCM_OPTARGS));
609 if (SCM_NULLP(SCM_OPTARGS)) port_scm = SCM_FALSE;
610 else {
611 port_scm = SCM_CAR(SCM_OPTARGS);
612 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
613 }
614 port = (port_scm);
615 if (SCM_NULLP(SCM_OPTARGS)) endian_scm = DEFAULT_ENDIAN;
616 else {
617 endian_scm = SCM_CAR(SCM_OPTARGS);
618 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
619 }
620 endian = check_endian(endian_scm);
621 {
622 {
623 ScmObj SCM_RESULT;
624 SCM_RESULT = Scm_ReadBinaryFloat(port, endian);
625 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
626 }
627 }
628 }
629
630 static SCM_DEFINE_STRING_CONST(binarylib_read_binary_float__NAME, "read-binary-float", 17, 17);
631 static SCM_DEFINE_SUBR(binarylib_read_binary_float__STUB, 0, 1, SCM_OBJ(&binarylib_read_binary_float__NAME), binarylib_read_binary_float, NULL, NULL);
632
633 static ScmObj binarylib_read_binary_double(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
634 {
635 ScmObj port_scm;
636 ScmObj port;
637 ScmObj endian_scm;
638 Endian endian;
639 ScmObj SCM_OPTARGS = SCM_ARGREF(SCM_ARGCNT-1);
640 SCM_ENTER_SUBR("read-binary-double");
641 if (Scm_Length(SCM_OPTARGS) > 2)
642 Scm_Error("too many arguments: up to 2 is expected, %d given.", Scm_Length(SCM_OPTARGS));
643 if (SCM_NULLP(SCM_OPTARGS)) port_scm = SCM_FALSE;
644 else {
645 port_scm = SCM_CAR(SCM_OPTARGS);
646 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
647 }
648 port = (port_scm);
649 if (SCM_NULLP(SCM_OPTARGS)) endian_scm = DEFAULT_ENDIAN;
650 else {
651 endian_scm = SCM_CAR(SCM_OPTARGS);
652 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
653 }
654 endian = check_endian(endian_scm);
655 {
656 {
657 ScmObj SCM_RESULT;
658 SCM_RESULT = Scm_ReadBinaryDouble(port, endian);
659 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
660 }
661 }
662 }
663
664 static SCM_DEFINE_STRING_CONST(binarylib_read_binary_double__NAME, "read-binary-double", 18, 18);
665 static SCM_DEFINE_SUBR(binarylib_read_binary_double__STUB, 0, 1, SCM_OBJ(&binarylib_read_binary_double__NAME), binarylib_read_binary_double, NULL, NULL);
666
667 static ScmObj binarylib_write_binary_float(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
668 {
669 ScmObj val_scm;
670 ScmObj val;
671 ScmObj port_scm;
672 ScmObj port;
673 ScmObj endian_scm;
674 Endian endian;
675 ScmObj SCM_OPTARGS = SCM_ARGREF(SCM_ARGCNT-1);
676 SCM_ENTER_SUBR("write-binary-float");
677 if (Scm_Length(SCM_OPTARGS) > 2)
678 Scm_Error("too many arguments: up to 2 is expected, %d given.", Scm_Length(SCM_OPTARGS));
679 val_scm = SCM_ARGREF(0);
680 if (!SCM_NUMBERP(val_scm)) Scm_Error("number required, but got %S", val_scm);
681 val = (val_scm);
682 if (SCM_NULLP(SCM_OPTARGS)) port_scm = SCM_FALSE;
683 else {
684 port_scm = SCM_CAR(SCM_OPTARGS);
685 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
686 }
687 port = (port_scm);
688 if (SCM_NULLP(SCM_OPTARGS)) endian_scm = DEFAULT_ENDIAN;
689 else {
690 endian_scm = SCM_CAR(SCM_OPTARGS);
691 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
692 }
693 endian = check_endian(endian_scm);
694 {
695 Scm_WriteBinaryFloat(val, port, endian);
696 SCM_RETURN(SCM_UNDEFINED);
697 }
698 }
699
700 static SCM_DEFINE_STRING_CONST(binarylib_write_binary_float__NAME, "write-binary-float", 18, 18);
701 static SCM_DEFINE_SUBR(binarylib_write_binary_float__STUB, 1, 1, SCM_OBJ(&binarylib_write_binary_float__NAME), binarylib_write_binary_float, NULL, NULL);
702
703 static ScmObj binarylib_write_binary_double(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
704 {
705 ScmObj val_scm;
706 ScmObj val;
707 ScmObj port_scm;
708 ScmObj port;
709 ScmObj endian_scm;
710 Endian endian;
711 ScmObj SCM_OPTARGS = SCM_ARGREF(SCM_ARGCNT-1);
712 SCM_ENTER_SUBR("write-binary-double");
713 if (Scm_Length(SCM_OPTARGS) > 2)
714 Scm_Error("too many arguments: up to 2 is expected, %d given.", Scm_Length(SCM_OPTARGS));
715 val_scm = SCM_ARGREF(0);
716 if (!SCM_NUMBERP(val_scm)) Scm_Error("number required, but got %S", val_scm);
717 val = (val_scm);
718 if (SCM_NULLP(SCM_OPTARGS)) port_scm = SCM_FALSE;
719 else {
720 port_scm = SCM_CAR(SCM_OPTARGS);
721 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
722 }
723 port = (port_scm);
724 if (SCM_NULLP(SCM_OPTARGS)) endian_scm = DEFAULT_ENDIAN;
725 else {
726 endian_scm = SCM_CAR(SCM_OPTARGS);
727 SCM_OPTARGS = SCM_CDR(SCM_OPTARGS);
728 }
729 endian = check_endian(endian_scm);
730 {
731 Scm_WriteBinaryDouble(val, port, endian);
732 SCM_RETURN(SCM_UNDEFINED);
733 }
734 }
735
736 static SCM_DEFINE_STRING_CONST(binarylib_write_binary_double__NAME, "write-binary-double", 19, 19);
737 static SCM_DEFINE_SUBR(binarylib_write_binary_double__STUB, 1, 1, SCM_OBJ(&binarylib_write_binary_double__NAME), binarylib_write_binary_double, NULL, NULL);
738
739 void Scm_Init_binarylib(ScmModule *module)
740 {
741
742 SCM_DEFINE(module, "write-binary-double", SCM_OBJ(&binarylib_write_binary_double__STUB));
743 SCM_DEFINE(module, "write-binary-float", SCM_OBJ(&binarylib_write_binary_float__STUB));
744 SCM_DEFINE(module, "read-binary-double", SCM_OBJ(&binarylib_read_binary_double__STUB));
745 SCM_DEFINE(module, "read-binary-float", SCM_OBJ(&binarylib_read_binary_float__STUB));
746 SCM_DEFINE(module, "write-binary-sint64", SCM_OBJ(&binarylib_write_binary_sint64__STUB));
747 SCM_DEFINE(module, "write-binary-sint32", SCM_OBJ(&binarylib_write_binary_sint32__STUB));
748 SCM_DEFINE(module, "write-binary-sint16", SCM_OBJ(&binarylib_write_binary_sint16__STUB));
749 SCM_DEFINE(module, "write-binary-sint8", SCM_OBJ(&binarylib_write_binary_sint8__STUB));
750 SCM_DEFINE(module, "write-binary-uint64", SCM_OBJ(&binarylib_write_binary_uint64__STUB));
751 SCM_DEFINE(module, "write-binary-uint32", SCM_OBJ(&binarylib_write_binary_uint32__STUB));
752 SCM_DEFINE(module, "write-binary-uint16", SCM_OBJ(&binarylib_write_binary_uint16__STUB));
753 SCM_DEFINE(module, "write-binary-uint8", SCM_OBJ(&binarylib_write_binary_uint8__STUB));
754 SCM_DEFINE(module, "read-binary-sint64", SCM_OBJ(&binarylib_read_binary_sint64__STUB));
755 SCM_DEFINE(module, "read-binary-sint32", SCM_OBJ(&binarylib_read_binary_sint32__STUB));
756 SCM_DEFINE(module, "read-binary-sint16", SCM_OBJ(&binarylib_read_binary_sint16__STUB));
757 SCM_DEFINE(module, "read-binary-sint8", SCM_OBJ(&binarylib_read_binary_sint8__STUB));
758 SCM_DEFINE(module, "read-binary-uint64", SCM_OBJ(&binarylib_read_binary_uint64__STUB));
759 SCM_DEFINE(module, "read-binary-uint32", SCM_OBJ(&binarylib_read_binary_uint32__STUB));
760 SCM_DEFINE(module, "read-binary-uint16", SCM_OBJ(&binarylib_read_binary_uint16__STUB));
761 SCM_DEFINE(module, "read-binary-uint8", SCM_OBJ(&binarylib_read_binary_uint8__STUB));
762 SCM_DEFINE(module, "default-endian", SCM_OBJ(&binarylib_default_endian__STUB));
763 }