This is the mail archive of the
kawa@sourceware.cygnus.com
mailing list for the Kawa project.
workaround for compiling gnu.expr.PrimProcedure literals?
- To: kawa at sourceware dot cygnus dot com
- Subject: workaround for compiling gnu.expr.PrimProcedure literals?
- From: brlewis at alum dot mit dot edu
- Date: Fri, 26 May 2000 13:34:03 -0400
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) '()))))))