+(define-syntax define-glut-states
+ (syntax-rules ()
+ ((_ (name param) ...)
+ (begin
+ (define-glut-state name param) ...))))
+
+(define-syntax define-glut-window-state
+ (syntax-rules ()
+ ((_ name param)
+ (define name
+ (lambda (window)
+ (maybe-with-window window
+ (%glutGet (glut-state param))))))))
+
+(define-syntax define-glut-window-states
+ (syntax-rules ()
+ ((_ (name param) ...)
+ (begin
+ (define-glut-window-state name param) ...))))
+
+(define-glut-window-states
+ (window-x window-x)
+ (window-y window-y)
+ (window-width window-width)
+ (window-height window-height)
+ (window-color-buffer-size window-buffer-size)
+ (window-stencil-buffer-size window-stencil-size)
+ (window-depth-buffer-size window-depth-size)
+ (window-color-buffer-red-size window-red-size)
+ (window-color-buffer-green-size window-green-size)
+ (window-color-buffer-blue-size window-blue-size)
+ (window-color-buffer-alpha-size window-alpha-size)
+ (window-accumulation-buffer-red-size window-accum-red-size)
+ (window-accumulation-buffer-green-size window-accum-green-size)
+ (window-accumulation-buffer-blue-size window-accum-blue-size)
+ (window-accumulation-buffer-alpha-size window-accum-alpha-size)
+ (window-number-of-children window-num-children)
+ (window-colormap-size window-colormap-size)
+ (window-number-of-samples window-num-samples))