;;;;
;;;; 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.4 2002/03/10 05:09:00 kevin Exp $
;;;;
;;;; This file is part of UFFI.
;;;;
(unless (uffi:load-foreign-library "/usr/lib/libz.so" "zlib" '("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)
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: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")))