unstable/syntax: added format-id
svn: r16629 original commit: daba183b087e841b4ad7d4e96b8383e784392b4b
This commit is contained in:
parent
85a8a99173
commit
d264ada81b
|
@ -1,6 +1,6 @@
|
||||||
|
|
||||||
#lang scheme/base
|
#lang scheme/base
|
||||||
(require (for-syntax scheme/base)
|
(require (for-syntax scheme/base unstable/syntax)
|
||||||
scheme/list
|
scheme/list
|
||||||
scheme/class
|
scheme/class
|
||||||
macro-debugger/util/class-iop
|
macro-debugger/util/class-iop
|
||||||
|
@ -18,30 +18,27 @@
|
||||||
check-box/notify-box
|
check-box/notify-box
|
||||||
choice/notify-box)
|
choice/notify-box)
|
||||||
|
|
||||||
(define-for-syntax (join . args)
|
|
||||||
(define (->string x)
|
|
||||||
(cond [(string? x) x]
|
|
||||||
[(symbol? x) (symbol->string x)]
|
|
||||||
[(identifier? x) (symbol->string (syntax-e x))]
|
|
||||||
[else (error '->string)]))
|
|
||||||
(string->symbol (apply string-append (map ->string args))))
|
|
||||||
|
|
||||||
(define-syntax override/return-false
|
(define-syntax override/return-false
|
||||||
(syntax-rules ()
|
(syntax-rules ()
|
||||||
[(override/return-false m ...)
|
[(override/return-false m ...)
|
||||||
(begin (define/override (m) #f) ...)]))
|
(begin (define/override (m) #f) ...)]))
|
||||||
|
|
||||||
|
(define-for-syntax (mk-init name)
|
||||||
|
(format-id name "init-~a" (syntax-e name)))
|
||||||
|
(define-for-syntax (mk-get name)
|
||||||
|
(format-id name "get-~a" (syntax-e name)))
|
||||||
|
(define-for-syntax (mk-set name)
|
||||||
|
(format-id name "set-~a" (syntax-e name)))
|
||||||
|
(define-for-syntax (mk-listen name)
|
||||||
|
(format-id name "listen-~a" (syntax-e name)))
|
||||||
|
|
||||||
(define-syntax (field/notify stx)
|
(define-syntax (field/notify stx)
|
||||||
(syntax-case stx ()
|
(syntax-case stx ()
|
||||||
[(field/notify name value)
|
[(field/notify name value)
|
||||||
(with-syntax ([init-name
|
(with-syntax ([init-name (mk-init #'name)]
|
||||||
(datum->syntax #'name (join "init-" #'name))]
|
[get-name (mk-get #'name)]
|
||||||
[get-name
|
[set-name (mk-set #'name)]
|
||||||
(datum->syntax #'name (join "get-" #'name))]
|
[listen-name (mk-listen #'name)])
|
||||||
[set-name
|
|
||||||
(datum->syntax #'name (join "set-" #'name))]
|
|
||||||
[listen-name
|
|
||||||
(datum->syntax #'name (join "listen-" #'name))])
|
|
||||||
#'(begin (field [name (init-name)])
|
#'(begin (field [name (init-name)])
|
||||||
(define/public (init-name) value)
|
(define/public (init-name) value)
|
||||||
(define/public-final (get-name)
|
(define/public-final (get-name)
|
||||||
|
@ -54,14 +51,10 @@
|
||||||
(define-syntax (notify-methods stx)
|
(define-syntax (notify-methods stx)
|
||||||
(syntax-case stx ()
|
(syntax-case stx ()
|
||||||
[(notify-methods name)
|
[(notify-methods name)
|
||||||
(with-syntax ([init-name
|
(with-syntax ([init-name (mk-init #'name)]
|
||||||
(datum->syntax #'name (join "init-" #'name))]
|
[get-name (mk-get #'name)]
|
||||||
[get-name
|
[set-name (mk-set #'name)]
|
||||||
(datum->syntax #'name (join "get-" #'name))]
|
[listen-name (mk-listen #'name)])
|
||||||
[set-name
|
|
||||||
(datum->syntax #'name (join "set-" #'name))]
|
|
||||||
[listen-name
|
|
||||||
(datum->syntax #'name (join "listen-" #'name))])
|
|
||||||
#'(begin (field [name (init-name)])
|
#'(begin (field [name (init-name)])
|
||||||
(define/public (init-name)
|
(define/public (init-name)
|
||||||
(new notify-box% (value #f)))
|
(new notify-box% (value #f)))
|
||||||
|
@ -75,15 +68,13 @@
|
||||||
(define-syntax (connect-to-pref stx)
|
(define-syntax (connect-to-pref stx)
|
||||||
(syntax-case stx ()
|
(syntax-case stx ()
|
||||||
[(connect-to-pref name pref)
|
[(connect-to-pref name pref)
|
||||||
(with-syntax ([init-name
|
(with-syntax ([init-name (mk-init #'name)])
|
||||||
(datum->syntax #'name (join "init-" #'name))])
|
|
||||||
#'(define/override (init-name) (notify-box/pref pref)))]))
|
#'(define/override (init-name) (notify-box/pref pref)))]))
|
||||||
|
|
||||||
(define-syntax (connect-to-pref/readonly stx)
|
(define-syntax (connect-to-pref/readonly stx)
|
||||||
(syntax-case stx ()
|
(syntax-case stx ()
|
||||||
[(connect-to-pref/readonly name pref)
|
[(connect-to-pref/readonly name pref)
|
||||||
(with-syntax ([init-name
|
(with-syntax ([init-name (mk-init #'name)])
|
||||||
(datum->syntax #'name (join "init-" #'name))])
|
|
||||||
#'(define/override (init-name) (notify-box/pref/readonly pref)))]))
|
#'(define/override (init-name) (notify-box/pref/readonly pref)))]))
|
||||||
|
|
||||||
(define-syntax (define/listen stx)
|
(define-syntax (define/listen stx)
|
||||||
|
@ -91,12 +82,9 @@
|
||||||
[(define/listen name value)
|
[(define/listen name value)
|
||||||
(unless (identifier? #'name)
|
(unless (identifier? #'name)
|
||||||
(raise-syntax-error 'define/listen "expected identifier" #'name))
|
(raise-syntax-error 'define/listen "expected identifier" #'name))
|
||||||
(with-syntax ([get-name
|
(with-syntax ([get-name (mk-get #'name)]
|
||||||
(datum->syntax #'name (join "get-" #'name))]
|
[set-name (mk-set #'name)]
|
||||||
[set-name
|
[listen-name (mk-listen #'name)])
|
||||||
(datum->syntax #'name (join "set-" #'name))]
|
|
||||||
[listen-name
|
|
||||||
(datum->syntax #'name (join "listen-" #'name))])
|
|
||||||
#'(begin
|
#'(begin
|
||||||
(define name value)
|
(define name value)
|
||||||
(define listeners null)
|
(define listeners null)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user