;;; -*- Mode: Scheme; scheme48-package: (config) -*- ;;;; Scheme48 Stubber ;;;; Packages ;;; This code is written by Taylor R. Campbell and placed in the Public ;;; Domain. All warranties are disclaimed. (define-structure stubber stubber-interface (open scheme receiving define-record-type* pattern-matching srfi-1 ;list-lib signals extended-ports i/o output-combinators ) (optimize auto-integrate) (files top)) (define-structure stubber-descriptors stubber-descriptors-interface (open scheme) (optimize auto-integrate) (files descriptor)) (define-module (make-usual-stubber stubber-code-generation) (define-structure usual-stubber usual-stubber-interface (open scheme receiving srfi-1 pp ascii ;randomness signals pattern-matching output-combinators stubber-c-output stubber-cpp-output stubber-code-generation stubber-descriptors stubber ) (optimize auto-integrate) (files usual)) usual-stubber) (define-structure stubber-s48-code-generation stubber-code-generation-interface (open scheme srfi-1 ;list-lib signals define-record-type* receiving pattern-matching output-combinators stubber-c-output stubber-cpp-output stubber-descriptors stubber ) (optimize auto-integrate) (files s48-codegen)) (def usual-s48-stubber (make-usual-stubber stubber-s48-code-generation)) (define usual-stubber usual-s48-stubber) (define-structure stubber-c-output stubber-c-output-interface (open scheme output-combinators fluids i/o extended-ports ) (optimize auto-integrate) (files c)) (define-structure stubber-cpp-output stubber-cpp-output-interface (open scheme output-combinators fluids i/o ) (optimize auto-integrate) (files cpp)) ;;;; Auxiliary Libraries (define-structure output-combinators output-combinators-interface (open scheme extended-ports i/o ) (optimize auto-integrate) (files (aux output))) (define-structure pattern-matching pattern-matching-interface (open scheme signals) (optimize auto-integrate) (files (aux match))) (define-structure define-record-type* (export (define-record-type* :syntax) define-record-discloser) (open scheme define-record-types) (for-syntax (open scheme define-record-type*-expander)) (begin (define-syntax define-record-type* (lambda (form rename compare) (expand-define-record-type* form rename compare)) (BEGIN DEFINE DEFINE-RECORD-TYPE)))) (define-structure define-record-type*-expander (export expand-define-record-type*) (open scheme destructuring fluids signals receiving) (files (aux defrectype)))