;;;; Cyclone Scheme ;;;; https://github.com/justinethier/cyclone ;;;; ;;;; Copyright (c) 2014-2016, Justin Ethier ;;;; All rights reserved. ;;;; ;;;; This module automatically generates the following files: ;;;; ;;;; - dispatch.c => Used by apply to call native C functions. ;;;; (import (scheme base) (scheme file) (scheme write)) (with-output-to-file "dispatch.c" (lambda () (display " #include \"cyclone/types.h\" #include \"cyclone/runtime.h\" void do_dispatch(void *data, int argc, function_type func, object clo, object *b) { switch(argc) {" ) (define bs "") (let loop ((i 0)) (display "case " ) (display i ) (display ":func(" ) (display "data,") (display i ) (display ",clo" ) (display bs ) (display ");" ) (set! bs (string-append bs ",*(b+" (number->string i) ")")) (if (< i 149) (loop (+ i 1)))) (display " default: { char buf[1024]; snprintf(buf, 1023, \"Unhandled number of function arguments: %d\\n\", argc); Cyc_rt_raise_msg(data, buf); } } }" )))