This is the mail archive of the kawa@sourceware.cygnus.com mailing list for the Kawa project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

workaround for compiling gnu.expr.PrimProcedure literals?


When I try to compile the function below, I get ten errors like this:

(compiling httpfun.scm)
<unknown>:0: unimplemented support for compiling gnu.expr.PrimProcedure literals
[...]

Will it work if I rewrite it to use (primitive-interface-method ...)
only as an argument to a procedure and don't try to assign it to a
variable?  Or can I only use (primitive-interface-method ...) directly
in procedure application?

The procedure works fine if I just load it.

; For getting strings out of an HttpServletRequest object
'(define (brl-sv-req-string-retriever cgi-variable)
  (let ((method
	 (cond ((eq? cgi-variable 'SERVER_NAME)
		(primitive-interface-method <javax.servlet.ServletRequest>
					  "getServerName" <String> ()))
	       ((eq? cgi-variable 'SERVER_PORT)
		(primitive-interface-method <javax.servlet.ServletRequest>
					  "getServerPort" <String> ()))
	       ((eq? cgi-variable 'REMOTE_ADDR)
		(primitive-interface-method <javax.servlet.ServletRequest>
					  "getRemoteAddr" <String> ()))
	       ((eq? cgi-variable 'REMOTE_HOST)
		(primitive-interface-method <javax.servlet.ServletRequest>
					  "getRemoteHost" <String> ()))
	       ((eq? cgi-variable 'REQUEST_METHOD)
		(primitive-interface-method
		 <javax.servlet.http.HttpServletRequest>
		 "getMethod" <String> ()))
	       ((eq? cgi-variable 'PATH_INFO)
		(primitive-interface-method
		 <javax.servlet.http.HttpServletRequest>
		 "getPathInfo" <String> ()))
	       ((eq? cgi-variable 'PATH_TRANSLATED)
		(primitive-interface-method
		 <javax.servlet.http.HttpServletRequest>
		 "getPathTranslated" <String> ()))
	       ((eq? cgi-variable 'REMOTE_USER)
		(primitive-interface-method
		 <javax.servlet.http.HttpServletRequest>
		 "getRemoteUser" <String> ()))
	       ((eq? cgi-variable 'AUTH_TYPE)
		(primitive-interface-method
		 <javax.servlet.http.HttpServletRequest>
		 "getAuthType" <String> ()))
	       (else #f))))
    (if method
	(lambda (req) (kawa-convert (method req)))
	(let* ((cgi-str (brl-string cgi-variable))
	       (header-sym (and (> (string-length cgi-str) 5)
				(string-ci=? "HTTP_"
					     (substring
					      (brl-string cgi-variable)
					      0 5))
				(invoke (string->symbol
					 (substring cgi-str 5
						    (string-length cgi-str)))
					'replace #\_ #\-))))
	  (if header-sym
	      (let ((method2 
		     (primitive-interface-method
		      <javax.servlet.http.HttpServletRequest>
		      "getHeader" <String> (<String>))))
		(lambda (req)
		  (kawa-convert
		   (method2 req header-sym))))
	      (lambda (req) '()))))))

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]