r1555: *** empty log message ***
[uffi.git] / examples / compress.cl
index 7787b69939d001a512ecc31684d69426eb93c3e7..e077e0ab242a627317bf18f46486894c5270e61e 100644 (file)
@@ -5,37 +5,28 @@
 ;;;; Name:          compress.cl
 ;;;; Purpose:       UFFI Example file for zlib compression
 ;;;; Programmer:    Kevin M. Rosenberg
-;;;; Date Started:  Mar 2002
+;;;; Date Started:  Feb 2002
 ;;;;
-;;;; Copyright (c) 2002 Kevin M. Rosenberg
+;;;; $Id: compress.cl,v 1.7 2002/03/14 21:03:12 kevin Exp $
 ;;;;
-;;;; $Id: compress.cl,v 1.2 2002/03/09 21:19:31 kevin Exp $
+;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg
 ;;;;
-;;;; This file is part of UFFI. 
-;;;;
-;;;; UFFI is free software; you can redistribute it and/or modify
-;;;; it under the terms of the GNU General Public License (version 2) as
-;;;; published by the Free Software Foundation.
-;;;;
-;;;; UFFI is distributed in the hope that it will be useful,
-;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;;;; GNU General Public License for more details.
-;;;;
-;;;; You should have received a copy of the GNU General Public License
-;;;; along with UFFI; if not, write to the Free Software Foundation, Inc.,
-;;;; 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+;;;; UFFI users are granted the rights to distribute and use this software
+;;;; as governed by the terms of the Lisp Lesser GNU Public License
+;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
 ;;;; *************************************************************************
 
 (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-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")))