;;;; *************************************************************************
;;;; FILE IDENTIFICATION
;;;;
-;;;; Name: union.cl
+;;;; Name: union.lisp
;;;; Purpose: UFFI Example file to test unions
;;;; Programmer: Kevin M. Rosenberg
;;;; Date Started: Mar 2002
;;;;
-;;;; $Id: union.lisp,v 1.4 2003/04/29 14:08:02 kevin Exp $
+;;;; $Id$
;;;;
-;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg
+;;;; This file, part of UFFI, is Copyright (c) 2002-2003 by Kevin M. Rosenberg
;;;;
-;;;; 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 :uffi-tests)
+(in-package #:uffi-tests)
(uffi:def-union tunion1
(char :char)
(* 256 (char-code #\C))
(* 1 128)))
-(deftest union.1 (uffi:ensure-char-character
- (uffi:get-slot-value *u* 'tunion1 'char)) #\A)
+(deftest union.1
+ (uffi:ensure-char-character
+ (uffi:get-slot-value *u* 'tunion1 'char))
+ #\A)
+
+(deftest union.2
+ (uffi:ensure-char-integer
+ (uffi:get-slot-value *u* 'tunion1 'char))
+ 65)
#-(or sparc sparc-v9 mcl)
-(deftest union.2 (plusp (uffi:get-slot-value *u* 'tunion1 'uint)) t)
+(deftest union.3 (plusp (uffi:get-slot-value *u* 'tunion1 'uint)) t)
+
+
+(uffi:def-union foo-u
+ (bar :pointer-self))
+
+(uffi:def-foreign-type foo-u-ptr (* foo-u))
+
+;; tests that compilation worked
+(deftest unions.4
+ (with-foreign-object (p 'foo-u)
+ t)
+ t)
+
+(deftest unions.5
+ (progn
+ (uffi:def-foreign-type foo-union (:union foo-u))
+ t)
+ t)
+
-;; (uffi:free-foreign-object u))