jlambda sytax-rules pasted by mercora on Thu Jan 3 23:10:50 2013
(define-syntax jlambda (syntax-rules (boolean) ((jlambda class boolean name argtype ...) (lambda (object . args) (let ((m (method class name boolean argtype ...))) (call-boolean-method object m (jvalues (zip (list argtype ...) args)))))) ((jlambda class return-type name argtype ...) (lambda (object . args) (let ((m (method class return-type name argtype ...))) (call-object-method object m (jvalues (zip (list argtype ...) args)))))))) (ppexpand* '(jlambda java.lang.String boolean contains java.lang.CharSequence))
old jvalues added by mercora on Thu Jan 3 23:19:50 2013
(define (arg-map->jvalue-array arg-map)
(let ((args (make-jvalue-array (length arg-map))))
(fold (lambda (arg-mapping i)
(case (cadr arg-mapping)
((boolean)
(set-boolean-jvalue args i (car arg-mapping)))
((byte)
(set-byte-jvalue args i (car arg-mapping)))
((char)
(set-char-jvalue args i (car arg-mapping)))
((short)
(set-short-jvalue args i (car arg-mapping)))
((int)
(set-int-jvalue args i (car arg-mapping)))
((long)
(set-long-jvalue args i (car arg-mapping)))
((float)
(set-float-jvalue args i (car arg-mapping)))
((double)
(set-double-jvalue args i (car arg-mapping)))
((java.lang.String)
(set-object-jvalue args i (if (string? (car arg-mapping))
(jstring (car arg-mapping))
(car arg-mapping))))
(else
(set-object-jvalue args i (car arg-mapping))))
(+ i 1))
0
arg-map)
args))