r1544: *** empty log message ***
[uffi.git] / examples / compress.cl
index cf3bec4e90f6fa66f323bf249a203eebd8a90d8b..3b41eb9b6b3efcf3f57163811501007d674c6eb0 100644 (file)
@@ -9,7 +9,7 @@
 ;;;;
 ;;;; Copyright (c) 2002 Kevin M. Rosenberg
 ;;;;
-;;;; $Id: compress.cl,v 1.1 2002/03/09 19:55:33 kevin Exp $
+;;;; $Id: compress.cl,v 1.6 2002/03/10 20:01:55 kevin Exp $
 ;;;;
 ;;;; This file is part of UFFI. 
 ;;;;
 
 (in-package :cl-user)
 
-(unless (uffi:load-foreign-library "/usr/lib/libz.so" "zlib" '("c"))
+(unless (uffi:load-foreign-library "/usr/lib/libz.so" 
+                                  :module "zlib" 
+                                  :supporting-libraries '("c"))
   (warn "Unable to load zlib"))
 
-(uffi:def-routine ("compress" c-compress)
+(uffi:def-function ("compress" c-compress)
     ((dest (* :unsigned-char))
      (destlen (* :long))
-     (source :c-string)
+     (source :cstring)
      (source-len :long))
   :returning :int
   :module "zlib")
  and the numbe of compressed bytes"
   (let* ((sourcelen (length source))
         (destsize (+ 12 (ceiling (* sourcelen 1.01))))
-        (dest (uffi:allocate-foreign-string destsize))
+        (dest (uffi:allocate-foreign-string destsize :unsigned t))
         (destlen (uffi:allocate-foreign-object :long)))
     (setf (uffi:deref-pointer destlen :long) destsize)
-    (uffi:with-c-string (source-native source)
+    (uffi:with-cstring (source-native source)
       (let ((result (c-compress dest destlen source-native sourcelen))
            (newdestlen (uffi:deref-pointer destlen :long)))
        (unwind-protect
            (uffi:free-foreign-object dest)))))))
 
 
+#+test-uffi
+(progn
+  (flet ((print-results (str)
+          (multiple-value-bind (compressed len) (compress str)
+              (format t "~&(compress ~S) => ~S,~D" str compressed len))))
+    (print-results "")
+    (print-results "test")
+    (print-results "test2")))