;;; -*- Mode: Scheme; scheme48-package: (config) -*- ;;;; Scheme48 Stubber ;;;; Interfaces ;;; This code is written by Taylor R. Campbell and placed in the Public ;;; Domain. All warranties are disclaimed. (define-interface usual-stubber-interface (export usual-stub-file make-usual-stub-environment usual-c-stub-name usual-c-variable-name )) (define-interface stubber-interface (export stub-file read-stub-from-file read-stub write-stub-c-to-file write-stub-c write-stub-scheme-to-file write-stub-scheme run-stub losing-stub empty-stub combine-stub stub/c-declarations stub/c-initializations stub/scheme-forms process-form process-parameter process-expression symbol->binding-name symbol->c-stub-name symbol->c-variable-name generate-c-temporary generate-scheme-temporary make-stub-environment copy-stub-environment stub-environment? stub-environment-c-prelude set-stub-environment-c-prelude! stub-environment-c-initializer set-stub-environment-c-initializer! stub-environment-scheme-prelude set-stub-environment-scheme-prelude! stub-environment-scheme-writer set-stub-environment-scheme-writer! stub-environment-binding-namer set-stub-environment-binding-namer! stub-environment-c-stub-namer set-stub-environment-c-stub-namer! stub-environment-c-variable-namer set-stub-environment-c-variable-namer! stub-environment-form-handlers set-stub-environment-form-handlers! stub-environment-parameter-handlers set-stub-environment-parameter-handlers! stub-environment-expression-handlers set-stub-environment-expression-handlers! stub-environment-form-handler stub-environment-parameter-handler stub-environment-expression-handler *define-form-handler *define-parameter-handler *define-expression-handler (define-form-handler :syntax) (define-parameter-handler :syntax) (define-simple-parameter-handler :syntax) (define-expression-handler :syntax) (define-simple-expression-handler :syntax) (define-constant-expression-handler :syntax) *define-form-expander *define-parameter-wrapper *define-expression-expander (define-form-expander :syntax) (define-parameter-wrapper :syntax) (define-expression-expander :syntax) )) (define-interface stubber-descriptors-interface (export (define-stub-descriptor :syntax) (binding-descriptor :syntax) binding/scheme-name binding/c-body binding/binding-name (function-descriptor :syntax) function/binding-name function/scheme-name function/parameters function/c-name function/c-declarations function/c-body (constant-enumeration-descriptor :syntax) constant-enumeration/scheme-name constant-enumeration/scheme-rtd constant-enumeration/scheme-type-predicate constant-enumeration/scheme-instance-vector constant-enumeration/scheme-name-accessor constant-enumeration/scheme-index-accessor constant-enumeration/scheme-available-predicate constant-enumeration/scheme-enumerand-names constant-enumeration/instance-vector-binding constant-enumeration/available-predicate-binding constant-enumeration/c-type constant-enumeration/c-mapper constant-enumeration/c-unmapper constant-enumeration/c-enumerands )) (define-interface stubber-code-generation-interface (export stub-header stub-initializer-function stub-scheme-prelude stub/binding stub/function stub/constant-enumeration make-stub-parameter stub-parameter? stub-parameter-scheme-name stub-parameter-scheme-expression stub-parameter-c-name stub-parameter-c-type stub-parameter-c-declaration stub-parameter-c-conversion simple-stub-parameter stub-parameter/alien stub-parameter/alien-pointer stub-parameter/boolean stub-parameter/byte-pointer stub-parameter/channel->fd stub-parameter/char stub-parameter/copied-byte-vector stub-parameter/copied-string stub-parameter/false->null stub-parameter/floating-point stub-parameter/integral stub-parameter/scheme stub-parameter/shared-byte-vector stub-parameter/shared-string simple-stub-result sequence-stub-result stub-result/alien stub-result/alien-pointer stub-result/boolean stub-result/byte-vector stub-result/char stub-result/conditional stub-result/cons stub-result/expression stub-result/false stub-result/fd->channel stub-result/floating-point stub-result/freed-byte-vector stub-result/freed-string stub-result/integral stub-result/null stub-result/out-of-memory-error stub-result/sequence stub-result/string stub-result/substring stub-result/syscall-error stub-result/true stub-result/unspecific stub-result/vector )) (define-interface stubber-c-output-interface (export c-address-of c-address-type c-and c-and* c-array-ref c-assign c-block c-call c-cast c-comment c-declaration c-declare c-dereference c-expression c-field c-function c-goto c-if c-if1 c-indentation c-initialize c-not c-label c-line c-or c-or* c-pointer-field c-pointer-type c-return c-sizeof c-statement c-struct-type c-struct-pointer-type with-c-indentation with-c-alignment )) (define-interface stubber-cpp-output-interface (export cpp-and cpp-call cpp-comment cpp-concatenate cpp-condition cpp-define cpp-defined? cpp-error cpp-elif cpp-else cpp-eq? cpp-ifdef cpp-if cpp-include cpp-item cpp-not cpp-or cpp-prefix cpp-stringify cpp-system-include with-cpp-indentation )) (define-interface output-combinators-interface (export output-decorated-list output-escaped-string output-item output-line output-lines output-list output-nothing output-sequence output-written with-output-left-padded with-output-right-padded with-output-truncated )) (define-interface pattern-matching-interface (export ((match match-lambda match-lambda* match-let match-let* match-letrec ) :syntax) ))