r1555: *** empty log message ***
[uffi.git] / src / primitives.cl
index a0bcae74361768916e7d066a5478042d07e90830..ee7695f06fb95b6f0f011910246d1d77eaf9cba8 100644 (file)
@@ -7,24 +7,13 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Feb 2002
 ;;;;
-;;;; Copyright (c) 2002 Kevin M. Rosenberg
+;;;; $Id: primitives.cl,v 1.4 2002/03/14 21:03:12 kevin Exp $
 ;;;;
-;;;; $Id: primitives.cl,v 1.2 2002/03/10 22:29:47 kevin Exp $
+;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg
 ;;;;
-;;;; This file is part of the 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.
 ;;;; *************************************************************************
 
 (declaim (optimize (debug 3) (speed 3) (safety 1) (compilation-speed 0)))
      (defconstant ,name ,value)
      (export ',name)))
 
-(defmacro uffi-declare (type name)
-  "Generates a declare statement for CL. Currently, only CMUCL
-supports this."
+(defmacro def-type (name type)
+  "Generates a (deftype) statement for CL. Currently, only CMUCL
+supports takes advantage of this optimization."
   #+(or lispworks allegro)
-  (declare (ignore type name))
+  `(deftype ,name () t)
   #+cmu
-  `(declare (type (alien:alien ,type)) ,name)
+  `(deftype ,name () '(alien:alien ,(convert-from-uffi-type type :declare)))
   )
 
-(defmacro slot-type (type)
-  #+(or lispworks allegro)
-  (declare (ignore type))
-  #+(or lispworks allegro)
-  t
-  #+cmu `'(alien:alien ,type))
-
 (defmacro null-char-p (val)
   `(if (or (eql ,val 0)
           (eq ,val #\Null))
@@ -59,7 +41,7 @@ supports this."
     nil))
 
       
-(defmacro def-type (name type)
+(defmacro def-foreign-type (name type)
   #+lispworks `(fli:define-c-typedef ,name ,(convert-from-uffi-type type :type))
   #+allegro `(ff:def-foreign-type ,name ,(convert-from-uffi-type type :type))
   #+cmu `(alien:def-alien-type ,name ,(convert-from-uffi-type type :type))
@@ -131,7 +113,7 @@ supports this."
 (dolist (type +cmu-def-type-list+)
   (setf (gethash (car type) +cmu-def-type-hash+) (cdr type)))
 
-(defun ph (&optional (os *standard-output*))
+(defmethod ph (&optional (os *standard-output*))
   (maphash #'(lambda (k v) (format os "~&~S => ~S" k v)) +type-conversion-hash+))
 
 (defun convert-from-uffi-type (type context)