thin-provisioning-tools/functional-tests/utils.scm

38 lines
807 B
Scheme
Raw Normal View History

2017-08-21 14:29:45 +05:30
(library
(utils)
(export inc!
dec!
2017-08-23 15:40:53 +05:30
swap!
fluid-let)
2017-08-21 14:29:45 +05:30
(import (rnrs))
(define-syntax inc!
(syntax-rules ()
((_ v) (set! v (+ 1 v)))
((_ v n) (set! v (+ n v)))))
(define-syntax dec!
(syntax-rules ()
((_ v) (set! v (- v 1)))
((_ v n) (set! v (- v n)))))
(define-syntax swap!
(syntax-rules ()
((_ x y)
(let ((tmp x))
(set! x y)
(set! y tmp)))))
2017-08-23 15:40:53 +05:30
(define-syntax fluid-let
(syntax-rules ()
((_ ((x e)) b1 b2 ...)
(let ((y e))
(let ((swap (lambda ()
(let ((t x))
(set! x y)
(set! y t)))))
(dynamic-wind swap (lambda ()
b1 b2 ...)
swap))))))
2017-08-21 14:29:45 +05:30
)