bitstring-lowlevel.scm - bitstring - A fork of the CHICKEN bitstring egg for CHICKEN 5
(HTM) git clone git://vernunftzentrum.de/bitstring.git
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
---
bitstring-lowlevel.scm (727B)
---
1 (module bitstring-lowlevel
2 (u8vector-not float->uint32 double->uint64 uint32->float uint64->double)
3 (import scheme (chicken foreign))
4
5 (define u8vector-not
6 (foreign-primitive void ((u8vector data) (int size))
7 "int i; for(i=0;i<size;++i) data[i] = ~data[i];"))
8
9 (define float->uint32
10 (foreign-primitive void ((u8vector i) (float f))
11 "*(uint32_t*)i = *(uint32_t*)&f;"))
12
13 (define double->uint64
14 (foreign-primitive void ((u8vector i) (double d))
15 "*(uint64_t*)i = *(uint64_t*)&d;"))
16
17 (define uint32->float
18 (foreign-primitive float ((blob i))
19 "C_return(*(float*)i);"))
20
21 (define uint64->double
22 (foreign-primitive double ((blob i))
23 "C_return(*(double*)i);"))
24
25 )