hboard/defs.scm

31 lines
1.4 KiB
Scheme

; (define (kbd/register cls name func) (display "defining func: ") (display cls) (display " ") (display name) (newline))
; (define (kbd/class-define name supers) (display "defining class: ") (display name) (display " ") (display supers) (newline))
; (define (kbd/call cls func-name . args) #f)
; (define (kbd/set-user-data key val) #f)
; (define (kbd/get-user-data key) #f)
; (define (kbd/make-text xy wh text font size) #f)
; (define (kbd/make-rect xy wh [:round-corners 1.0]) #f)
; (define (kbd/make-layout items) #f)
; (define (kbd/width) #f)
; (define (kbd/load-font font-path) #f)
(define-syntax self (syntax-rules () ((self func arg ...) (kbd/call kbd/this 'func arg ...))))
(define-syntax super (syntax-rules () ((super func arg ...) (kbd/call (kbd/super kbd/this 'func) 'func arg ...))))
(define-syntax kbd/defmember
(syntax-rules ()
((kbd/defmember cls ((input-func-name input-arg ...) input-body ...))
(begin (define (input-func-name kbd/this input-arg ...) (kbd/call kbd/this 'input-func-name input-arg ...))
(let ((name 'input-func-name)
(func (lambda (kbd/this input-arg ...)
input-body ...)))
(kbd/register cls name func))))))
(define-syntax kbd/defclass
(syntax-rules ()
((kbd/class input-name input-supers input-rest ...)
(begin (kbd/class-define 'input-name 'input-supers)
(kbd/defmember 'input-name input-rest) ...))))