X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;ds=sidebyside;f=examples%2Fstrtol.cl;h=8f52638bf0d744e51909b10dd4bc656b9217568e;hb=02d03aeb9bb5adf1cf5b1d6ea598d6446a631aea;hp=850542223cd606a6659aeb943603c740a43d549d;hpb=192193db6e4fbda90a840474d4aa2e8762597927;p=uffi.git diff --git a/examples/strtol.cl b/examples/strtol.cl index 8505422..8f52638 100644 --- a/examples/strtol.cl +++ b/examples/strtol.cl @@ -2,40 +2,29 @@ ;;;; ************************************************************************* ;;;; FILE IDENTIFICATION ;;;; -;;;; Name: getenv.cl -;;;; Purpose: UFFI Example file to strtol +;;;; Name: strtol.cl +;;;; Purpose: UFFI Example file to strtol, uses pointer arithmetic ;;;; Programmer: Kevin M. Rosenberg -;;;; Date Started: Mar 2002 +;;;; Date Started: Feb 2002 ;;;; -;;;; Copyright (c) 2002 Kevin M. Rosenberg +;;;; $Id: strtol.cl,v 1.8 2002/03/14 21:03:12 kevin Exp $ ;;;; -;;;; $Id: strtol.cl,v 1.1 2002/03/09 19:55:33 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) -(uffi:def-type char-ptr (* :char)) +(uffi:def-foreign-type char-ptr (* :char)) -;; This example does not use :c-string to pass the input string since +;; This example does not use :cstring to pass the input string since ;; the routine needs to do pointer arithmetic to see how many characters ;; were parsed -(uffi:def-routine ("strtol" c-strtol) +(uffi:def-function ("strtol" c-strtol) ((nptr (* :char)) (endptr (* char-ptr)) (base :int)) @@ -63,3 +52,13 @@ of first non-valid character" (t (values value chars-parsed))))) + +#+test-uffi +(progn + (flet ((print-results (str) + (multiple-value-bind (result flag) (strtol str) + (format t "~&(strtol ~S) => ~S,~S" str result flag)))) + (print-results "55") + (print-results "55.3") + (print-results "a"))) +