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