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))