;;; -*- Mode: Scheme; scheme48-package: (config) -*- ;;;; C Stub Examples ;;;; Scheme48 Interface Definitions ;;; Copyright (c) 2009, Taylor R. Campbell ;;; ;;; Redistribution and use in source and binary forms, with or without ;;; modification, are permitted provided that the following conditions ;;; are met: ;;; ;;; * Redistributions of source code must retain the above copyright ;;; notice, this list of conditions and the following disclaimer. ;;; ;;; * Redistributions in binary form must reproduce the above copyright ;;; notice, this list of conditions and the following disclaimer in ;;; the documentation and/or other materials provided with the ;;; distribution. ;;; ;;; * Neither the names of the authors nor the names of contributors ;;; may be used to endorse or promote products derived from this ;;; software without specific prior written permission. ;;; ;;; THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS ;;; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ;;; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ;;; ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY ;;; DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ;;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE ;;; GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ;;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, ;;; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING ;;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ;;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (define-interface unix-file-descriptors-interface (export call-with-file-descriptor-number close-file-descriptor duplicate-file-descriptor duplicate-file-descriptor-to file-descriptor? integer->file-descriptor maybe-integer->file-descriptor open-pipe renumber-file-descriptor )) (define-interface unix-file-descriptor-stubs-interface (export call-with-file-descriptor-alien call-with-file-descriptor-alien&number open-file-descriptor (with-file-descriptor-aliens :syntax) )) (define-interface bsd-socket-addresses-interface (export internet-socket-address.address internet-socket-address.port internet-socket-address? internet6-socket-address.address internet6-socket-address.flow-info internet6-socket-address.port internet6-socket-address.scope-id internet6-socket-address? make-internet-socket-address make-internet6-socket-address make-unix-socket-address make-unknown-socket-address (socket-domain :syntax) unix-socket-address.pathname unix-socket-address? unknown-socket-address.byte-vector unknown-socket-address? )) (define-interface bsd-socket-address-stubs-interface (export byte-vector->socket-address (c-socket-domain :syntax) socket-address->byte-vector )) (define-interface bsd-sockets-interface (export bind-socket create-socket create-socket-pair default-socket-protocol listen-socket max-listen-backlog maybe-accept-connection maybe-connect-socket set-socket.broadcast?! set-socket.debug?! set-socket.dont-route?! set-socket.keep-alive?! set-socket.linger! set-socket.out-of-band-inline?! set-socket.receive-buffer-size! set-socket.receive-low-water! set-socket.receive-timeout! set-socket.reuse-address?! set-socket.send-buffer-size! set-socket.send-low-water! set-socket.send-timeout! (socket-shutdown-direction :syntax) shutdown-socket socket-receive socket-receive-from socket-send socket-send-to (socket-type :syntax) socket.accepting-connections? socket.address socket.broadcast? socket.debug? socket.dont-route? socket.error socket.keep-alive? socket.linger socket.out-of-band-inline? socket.peer-address socket.receive-buffer-size socket.receive-low-water socket.receive-timeout socket.reuse-address? socket.send-buffer-size socket.send-low-water socket.send-timeout socket.type )) (define-interface bsd-socket-stubs-interface (export (c-socket-shutdown-direction :syntax) (c-socket-protocol :syntax) (c-socket-type :syntax) )) (define-interface bsd-interface-addresses-interface (export get-interface-addresses interface-address.address interface-address.broadcast interface-address.destination interface-address.name interface-address.netmask interface-address? )) (define-interface sqlite3-interface (export sqlite3-close sqlite3-column-blob ;++ Not yet implemented. sqlite3-column-floating-point sqlite3-column-integer sqlite3-column-type sqlite3-database-error-code sqlite3-database-error-message sqlite3-database? sqlite3-exec sqlite3-finalize sqlite3-open sqlite3-prepare sqlite3-reset sqlite3-statement? (sqlite3-status-code :syntax) sqlite3-step )) (define-interface sqlite3-stubs-interface (export (c-sqlite3-column :syntax) (c-sqlite3-status-code :syntax) (c-sqlite3-type :syntax) call-with-sqlite3-database-alien call-with-sqlite3-statement-alien )) (define-interface recursive-mutices-interface (export make-recursive-mutex recursive-mutex/lock recursive-mutex/unlock recursive-mutex? with-recursive-mutex-locked )) (define-interface hash-maps-interface (export hash-map/delete! hash-map/insert! hash-map/intern! hash-map/lookup hash-map/search hash-map/update! make-tail-weak-integer-hash-map ))