diff options
Diffstat (limited to 'lang/qscheme/files/patch-s.scm')
-rw-r--r-- | lang/qscheme/files/patch-s.scm | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/lang/qscheme/files/patch-s.scm b/lang/qscheme/files/patch-s.scm new file mode 100644 index 000000000000..9d987fc3dcd0 --- /dev/null +++ b/lang/qscheme/files/patch-s.scm @@ -0,0 +1,30 @@ +--- s.scm.orig Thu Dec 6 04:56:07 2001 ++++ s.scm Thu Dec 6 04:56:26 2001 +@@ -252,7 +252,26 @@ + (define hset! hash-set!) + + ; General purpose functions +-(load "sgtk/defextern.scm") ++;(load "sgtk/defextern.scm") ++ ++(define *lib* "") ++ ++(define-macro (extern type name . args) ++ `(make-extfunc *lib* ,type ,(symbol->string name) (quote ,@args))) ++ ++; simplified exteral declarator: ++; ++; (define-extern :RETURN-TYPE CFUNC-NAME :ARG1 :ARG2... [. :ANY]) ++; ++(define (cname->scheme x) ++ (string->symbol (string-translate (symbol->string x) "_" "-"))) ++ ++(define-macro (define-extern t n . a) ++; (write ++ `(define ,(cname->scheme n) ++ (make-extfunc *lib* ,t ,(symbol->string n) (quote ,a)))) ++; ) ++ + + ;; (load "repl.scm") + |