diff options
author | Thomas White <taw@physics.org> | 2020-08-21 22:08:46 +0200 |
---|---|---|
committer | Thomas White <taw@physics.org> | 2020-08-21 22:08:46 +0200 |
commit | 7057172ad190ae0fc718a93a7adb07b826dee323 (patch) | |
tree | ec56d2a659162795636526b94633f196f71aad9d /guile | |
parent | e6905bb5192eb0a3dd14b713b3229fe2847d276a (diff) |
Add current-state parameter and define-state macro
Diffstat (limited to 'guile')
-rw-r--r-- | guile/starlet/base.scm | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/guile/starlet/base.scm b/guile/starlet/base.scm index eba21c9..4e16642 100644 --- a/guile/starlet/base.scm +++ b/guile/starlet/base.scm @@ -16,7 +16,8 @@ merge-states-htp value->number get-attr-name get-state-hash-table scanout-fixture get-fixture-universe get-fixture-addr - attr-continuous attr-boolean attr-list)) + attr-continuous attr-boolean attr-list + current-state define-state)) (define-class <fixture-attribute> (<object>) (name @@ -381,3 +382,17 @@ #:range attr-allowed-values #:type 'list #:home-value attr-home-value)))) + + +(define current-state (make-parameter (make-empty-state))) +(register-state! (current-state)) + + +(define-syntax define-state + (syntax-rules () + ((_ state-name body ...) + (define state-name + (lambda () + (parameterize ((current-state (make-empty-state))) + body ... + (current-state))))))) |