oracle-sql quandry

james anderson <[email protected]> Mon, 27 Mar 2006 01:57:09 +0200
Newsgroups gmane.lisp.clsql.devel
Message-ID <[email protected]>
hello:

i am no somewhat more than idly considering whether clsql is viable  
in mcl.

there are numerous anomalous conditions. things like the using the  
field types :void-pointer and void-pointer, where only :pointer-void  
seems to make sense. more pronounced are two situations

1. the make step for the uffi library fails because there is no all  
step.

what purpose does the library serve?


2. a macro definition in oracle-sql

at least for mcl, the macro-expansion for deref-vp renders the field  
type inaccessible to the compiler.
that is, at least the digitool compiler, cannot follow the deref-vp  
macro definition.

#-digitool
(defmacro deref-vp (foreign-object)
   `(the vp-type (uffi:deref-pointer (the vpp-type ,foreign- 
object) :pointer-void)))
#+digitool
(defmacro deref-vp (foreign-object)
   `(uffi:deref-pointer (the vpp-type ,foreign-object) :pointer-void))

is necessary. otherwise, in database-connect

(setf (deref-vp envhp) +null-void-pointer+)

expands to

(LET* ((#:G2710 (THE VPP-TYPE ENVHP)) (#:G2711 :POINTER-VOID))
   (DECLARE (IGNORABLE #:G2710 #:G2711))
   (MULTIPLE-VALUE-BIND (#:G2712)
       +NULL-VOID-POINTER+
     (LET ((#:G2709 #:G2712)) (UFFI::DEREF-POINTER-SET #:G2710  
#:G2711 #:G2709))))

and the UFFI::DEREF-POINTER-SET expansion fails.
w/o the (the ..) the expansion is

(LET* ((#:G2717 (THE COMMON-LISP-USER::VPP-TYPE COMMON-LISP- 
USER::ENVHP)))
   (DECLARE (IGNORABLE #:G2717))
   (MULTIPLE-VALUE-BIND (#:G2718) COMMON-LISP-USER::+NULL-VOID-POINTER 
+ (SETF (CCL:%GET-PTR #:G2717 0) #:G2718)))

which is better. is this a known issue?


makes me wonder what other strange expansions are lurking.

thanks.
...