foreign-c/foreign/c.sld

138 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 ;(chicken memory) ;; FIXME
(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))
;; FIXME
(export foreign-c:string-split))
;(ypsilon (import (foreign c ypsilon-primitives)) (export int))
)
(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"))