summaryrefslogtreecommitdiff
path: root/lang/qscheme/files/patch-s.scm
diff options
context:
space:
mode:
Diffstat (limited to 'lang/qscheme/files/patch-s.scm')
-rw-r--r--lang/qscheme/files/patch-s.scm30
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")
+