r1603: *** empty log message ***
[uffi.git] / tests / c-test-fns.cl
1 ;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; Base: 10 -*-
2 ;;;; *************************************************************************
3 ;;;; FILE IDENTIFICATION
4 ;;;;
5 ;;;; Name:          c-test-fns.cl
6 ;;;; Purpose:       UFFI Example file for zlib compression
7 ;;;; Programmer:    Kevin M. Rosenberg
8 ;;;; Date Started:  Mar 2002
9 ;;;;
10 ;;;; $Id: c-test-fns.cl,v 1.1 2002/03/21 04:04:45 kevin Exp $
11 ;;;;
12 ;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg
13 ;;;;
14 ;;;; UFFI users are granted the rights to distribute and use this software
15 ;;;; as governed by the terms of the Lisp Lesser GNU Public License
16 ;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
17 ;;;; *************************************************************************
18
19 (in-package :cl-user)
20
21 (unless (uffi:load-foreign-library 
22          (make-pathname :name "c-test-fns" 
23                         :type #+(or linux unix)"so" #+(or win32 mswindows) "dll"
24                         :defaults *load-truename*)
25          :supporting-libraries '("c")
26          :force-load t)
27   (warn "Unable to load c-test-fns library"))
28
29 (uffi:def-function ("cs_to_upper" cs-to-upper)
30   ((input (* :unsigned-char)))
31   :returning :void
32   )
33
34 (defun string-to-upper (str)
35   (uffi:with-foreign-string (str-foreign str)
36     (cs-to-upper str-foreign)
37     (uffi:convert-from-foreign-string str-foreign)))
38
39 (uffi:def-function ("cs_count_upper" cs-count-upper)
40   ((input :cstring))
41   :returning :int
42   )
43
44 (defun string-count-upper (str)
45   (uffi:with-cstring (str-cstring str)
46     (cs-count-upper str-cstring)))
47
48 #+test-uffi
49 (format t "~&(string-to-upper \"this is a test\") => ~A" 
50         (string-to-upper "this is a test"))
51
52 #+test-uffi
53 (format t "~&(string-to-upper nil) => ~A" 
54         (string-to-upper nil))
55
56 #+test-uffi
57 (format t "~&(string-count-upper \"This is a Test\") => ~A" 
58         (string-count-upper "This is a Test"))
59
60 #+test-uffi
61 (format t "~&(string-count-upper nil) => ~A" 
62         (string-count-upper nil))
63
64
65
66