with- helpers return values from their body
authorDaniel Hartwig <mandyke@gmail.com>
Thu, 18 Jul 2013 09:44:01 +0000 (17:44 +0800)
committerDaniel Hartwig <mandyke@gmail.com>
Thu, 18 Jul 2013 09:45:52 +0000 (17:45 +0800)
* figl/gl.scm (with-gl-push-matrix, with-gl-push-attrib): Return the
  value(s) of the last expression in BODY.

figl/gl.scm

index 148ba90..a579fd6 100644 (file)
 (define-syntax with-gl-push-matrix
   (syntax-rules ()
     ((_ body ...)
-     (begin
-       (%glPushMatrix)
-       body ...
-       (%glPopMatrix)))))
+     (call-with-values
+         (lambda ()
+           (%glPushmatrix)
+           body ...)
+       (lambda vals
+         (%glPopMatrix)
+         (apply values vals))))))
 
 (export-syntax with-gl-push-matrix)
 
 
 ;; emacs: (put 'with-gl-push-attrib 'scheme-indent-function 1)
 (define-syntax-rule (with-gl-push-attrib bits body ...)
-  (begin
-    (%glPushAttrib bits)
-    body
-    ...
-    (%glPopAttrib)))
+  (call-with-values
+      (lambda ()
+        (%glPushAttrib bits)
+        body ...)
+    (lambda vals
+      (%glPopAttrib)
+      (apply values vals))))
 
 (export with-gl-push-attrib)