;;;;
;;;; Copyright (c) 2002 Kevin M. Rosenberg
;;;;
-;;;; $Id: compress.cl,v 1.2 2002/03/09 21:19:31 kevin Exp $
+;;;; $Id: compress.cl,v 1.5 2002/03/10 11:13:07 kevin Exp $
;;;;
;;;; This file is part of UFFI.
;;;;
(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")))