define-scalar-accessor macro added by sjamaan on Thu Apr 25 21:09:52 2013

(define-syntax define-scalar-accessor
  (ir-macro-transformer
   (lambda (e i c)
     (let ((accessor (cadr e))
           (return-type (caddr e))
           (attribute (cadddr e)))
       `(define ,accessor
          (foreign-lambda* ,return-type ((yaml_event_t event))
            ,(sprintf "C_return(event->data.scalar.~S);"
                      (strip-syntax attribute))))))))

;; Example:

(define-scalar-accessor scalar-len int length)

;; => (define scalar-len
;;      (foreign-lambda* int ((yaml_event_t event))
;;         "C_return(event->data.scalar.length);"))