139 lines
4.0 KiB
Scheme
139 lines
4.0 KiB
Scheme
(define-library
|
|
(foreign c)
|
|
(import (scheme base)
|
|
(scheme write)
|
|
(scheme char)
|
|
(scheme file)
|
|
(scheme process-context)
|
|
(scheme inexact))
|
|
(cond-expand
|
|
(chibi (import (foreign c chibi-primitives)))
|
|
(chicken (import (foreign c chicken-primitives)))
|
|
;(cyclone (import (foreign c cyclone-primitives)))
|
|
;(gambit (import (foreign c gambit-primitives)))
|
|
;(gauche (import (foreign c gauche-primitives)))
|
|
(guile (import (foreign c guile-primitives)))
|
|
(kawa (import (foreign c kawa-primitives)))
|
|
;(mit-scheme (import (foreign c mit-scheme-primitives)))
|
|
;(larceny (import (foreign c larceny-primitives)))
|
|
(mosh (import (foreign c mosh-primitives)))
|
|
(racket (import (foreign c racket-primitives)))
|
|
(sagittarius (import (foreign c sagittarius-primitives)))
|
|
(stklos (import (foreign c stklos-primitives))
|
|
(export foreign-c:string-split))
|
|
(ypsilon (import (foreign c ypsilon-primitives))
|
|
(export c-function
|
|
c-callback
|
|
bytevector-c-int8-set!
|
|
bytevector-c-uint8-ref)))
|
|
(export ;;;; Primitives 1
|
|
c-type-size
|
|
c-type-align
|
|
define-c-library
|
|
define-c-procedure
|
|
c-bytevector?
|
|
c-bytevector-u8-set!
|
|
c-bytevector-u8-ref
|
|
c-bytevector-pointer-set!
|
|
c-bytevector-pointer-ref
|
|
|
|
;;;; Primitives 2
|
|
define-c-callback
|
|
|
|
;;;; c-bytevector
|
|
make-c-null
|
|
c-null?
|
|
c-free
|
|
call-with-address-of
|
|
|
|
bytevector->c-bytevector
|
|
c-bytevector->bytevector
|
|
|
|
;;;; Utilities
|
|
libc-name
|
|
c-type-signed?
|
|
c-type-unsigned?
|
|
|
|
;; TODO endianness
|
|
native-endianness
|
|
make-c-bytevector
|
|
c-bytevector->address
|
|
;; TODO c-bytevector=?
|
|
;; TODO c-bytevector-fill!
|
|
;; TODO c-bytevector-copy!
|
|
;; TODO c-bytevector-copy
|
|
c-bytevector-s8-set!
|
|
c-bytevector-s8-ref
|
|
;; TODO c-bytevector->u8-list
|
|
;; TODO u8-list->c-bytevector
|
|
|
|
c-bytevector-uchar-ref
|
|
c-bytevector-char-ref
|
|
c-bytevector-char-set!
|
|
c-bytevector-uchar-set!
|
|
|
|
c-bytevector-uint-ref
|
|
c-bytevector-sint-ref
|
|
c-bytevector-sint-set!
|
|
c-bytevector-uint-set!
|
|
;; TODO bytevector->uint-list
|
|
;; TODO bytevector->sint-list
|
|
;; TODO uint-list->bytevector
|
|
;; TODO sint-list->bytevector
|
|
|
|
c-bytevector-u16-ref
|
|
c-bytevector-s16-ref
|
|
c-bytevector-u16-native-ref
|
|
c-bytevector-s16-native-ref
|
|
c-bytevector-u16-set!
|
|
c-bytevector-s16-set!
|
|
c-bytevector-u16-native-set!
|
|
c-bytevector-s16-native-set!
|
|
|
|
c-bytevector-u32-ref
|
|
c-bytevector-s32-ref
|
|
c-bytevector-u32-native-ref
|
|
c-bytevector-s32-native-ref
|
|
c-bytevector-u32-set!
|
|
c-bytevector-s32-set!
|
|
c-bytevector-u32-native-set!
|
|
c-bytevector-s32-native-set!
|
|
|
|
c-bytevector-u64-ref
|
|
c-bytevector-s64-ref
|
|
c-bytevector-s64-native-ref
|
|
c-bytevector-u64-native-ref
|
|
c-bytevector-u64-set!
|
|
c-bytevector-s64-set!
|
|
c-bytevector-u64-native-set!
|
|
c-bytevector-s64-native-set!
|
|
|
|
c-bytevector-ieee-single-native-ref
|
|
c-bytevector-ieee-single-ref
|
|
|
|
c-bytevector-ieee-double-native-ref
|
|
c-bytevector-ieee-double-ref
|
|
|
|
c-bytevector-ieee-single-native-set!
|
|
c-bytevector-ieee-single-set!
|
|
|
|
c-bytevector-ieee-double-native-set!
|
|
c-bytevector-ieee-double-set!
|
|
|
|
string->c-utf8
|
|
;; TODO string->c-utf16
|
|
;; TODO string->c-utf32
|
|
|
|
c-utf8->string
|
|
;; TODO c-utf16->string
|
|
;; TODO c-utf32->string
|
|
|
|
|
|
;c-utf8-length ;; TODO ??
|
|
|
|
;; c-variable
|
|
;define-c-variable (?)
|
|
)
|
|
(include "c/c-bytevectors.scm")
|
|
(include "c.scm"))
|