getting rid of the _uffi.dll
[clsql.git] / uffi / clsql-uffi.lisp
index 79d423f0d37b0c91043036fd6a071f34727af0b6..76dfd043c7aac23907eb9f530c745c94518cb4a7 100644 (file)
      (radix :int))
   :returning :unsigned-long)
 
+#-windows
+(uffi:def-function ("strtoull" c-strtoull)
+    ((str (* :unsigned-char))
+     (endptr (* :unsigned-char))
+     (radix :int))
+  :returning :unsigned-long-long)
+
+#+windows
+(uffi:def-function ("_strtoui64" c-strtoull)
+    ((str (* :unsigned-char))
+     (endptr (* :unsigned-char))
+     (radix :int))
+  :returning :unsigned-long-long)
+
 (uffi:def-function "atol"
     ((str (* :unsigned-char)))
   :returning :long)
            (type char-ptr-def char-ptr))
   (c-strtoul char-ptr uffi:+null-cstring-pointer+ 10))
 
+(defun strtoull (char-ptr)
+  (declare (optimize (speed 3) (safety 0) (space 0))
+           (type char-ptr-def char-ptr))
+  (c-strtoull char-ptr uffi:+null-cstring-pointer+ 10))
+
 (defun convert-raw-field (char-ptr type &key length encoding)
  (declare (optimize (speed 3) (safety 0) (space 0))
           (type char-ptr-def char-ptr))
       (:uint
        (strtoul char-ptr))
       ((:int64 :uint64)
-       (uffi:with-foreign-object (high32-ptr :unsigned-int)
+       (strtoull char-ptr)
+       #|(uffi:with-foreign-object (high32-ptr :unsigned-int)
          (let ((low32 (atol64 char-ptr high32-ptr))
                (high32 (uffi:deref-pointer high32-ptr :unsigned-int)))
            (if (zerop high32)
                low32
-               (make-64-bit-integer high32 low32)))))
+               (make-64-bit-integer high32 low32))))|#
+)
       (:blob
        (if length
            (uffi:convert-from-foreign-usb8 char-ptr length)