<refentry id="get-slot-value">
<refnamediv>
- <refname>def-slot-value</refname>
+ <refname>get-slot-value</refname>
<refpurpose>Retrieves a value from a slot of a structure.
</refpurpose>
<refclass>Macro</refclass>
<title>Examples</title>
<programlisting>
(def-struct ab (a :int) (b :double))
-(allocate-foreign-object 'ab)
+(allocate-foreign-object ab)
=> #<ptr>
</programlisting>
</refsect1>
<refsynopsisdiv>
<title>Syntax</title>
<synopsis>
- <function>def-pointer</function> <replaceable>ptr type</replaceable> => <returnvalue>value</returnvalue>
+ <function>deref-pointer</function> <replaceable>ptr type</replaceable> => <returnvalue>value</returnvalue>
</synopsis>
</refsynopsisdiv>
<refsect1>
--- /dev/null
+;;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Base: 10 -*-
+;;;; *************************************************************************
+;;;; FILE IDENTIFICATION
+;;;;
+;;;; Name: array-2d.cl
+;;;; Purpose: UFFI Example file use 2-dimensional arrays
+;;;; Programmer: Kevin M. Rosenberg
+;;;; Date Started: Mar 2002
+;;;;
+;;;; $Id: array-2d.cl,v 1.1 2002/03/18 02:27:32 kevin Exp $
+;;;;
+;;;; This file, part of UFFI, is Copyright (c) 2002 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 :cl-user)
+
+(uffi:def-constant +column-length+ 10)
+
+(uffi:def-array long-array (:long 10))
+
+(defun test-array-2d ()
+ "Tests 2d array"
+ (let ((a (uffi:allocate-foreign-object long-array)))
+ (dotimes (i +column-length+)
+ (setf (uffi:deref-array a :long i) (* i i)))
+ (dotimes (i +column-length+)
+ (format "~&~D => ~D" i (uffi:deref-array a 'long-array i)))
+ (uffi:free-foreign-object a)))
+
+#+test-uffi
+(test-array-2d)
+
+
;;;; Programmer: Kevin M. Rosenberg
;;;; Date Started: Feb 2002
;;;;
-;;;; $Id: objects.cl,v 1.6 2002/03/17 17:33:30 kevin Exp $
+;;;; $Id: objects.cl,v 1.7 2002/03/18 02:27:28 kevin Exp $
;;;;
;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg
;;;;
#+allegro
obj
)
+
+(defmacro allocate-byte-array (nsize)
+ #+cmu
+ `(alien:make-alien (alien:unsigned 8) ,nsize)
+ #+lispworks
+ `(fli:allocate-foreign-object :type :byte :nelems ,nsize)
+ #+allegro
+ `(ff:allocate-fobject (array :byte ,nsize))
+)
+
+(defmacro deref-byte-array (array position)
+ #+cmu `(alien:deref ,array ,position)
+ #+lispworks `(fli:dereference ,array :index ,position)
+ #+allegro `(ff:fslot-value-typed '(:array :byte) :c ,array ,position)
+)
+
+
+
+
+)
;;;; Programmer: Kevin M. Rosenberg
;;;; Date Started: Feb 2002
;;;;
-;;;; $Id: primitives.cl,v 1.8 2002/03/17 17:33:30 kevin Exp $
+;;;; $Id: primitives.cl,v 1.9 2002/03/18 02:27:28 kevin Exp $
;;;;
;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg
;;;;
(:char . c-call:char)
(:unsigned-char . (alien:unsigned 8))
(:byte . (alien:unsigned 8))
- (:short . c-call:unsigned-short) (:unsigned-short c-call:unsigned-short)
+ (:short . c-call:unsigned-short)
+ (:unsigned-short . c-call:unsigned-short)
(:int . alien:integer) (:unsigned-int . c-call:unsigned-int)
(:long . c-call:long) (:unsigned-long . c-call:unsigned-long)
(:float . c-call:float) (:double . c-call:double)
;;;; Programmer: Kevin M. Rosenberg
;;;; Date Started: Feb 2002
;;;;
-;;;; $Id: test-examples.cl,v 1.4 2002/03/17 17:33:30 kevin Exp $
+;;;; $Id: test-examples.cl,v 1.5 2002/03/18 02:27:32 kevin Exp $
;;;;
;;;; This file, part of UFFI, is Copyright (c) 2002 by Kevin M. Rosenberg
;;;;
:type "cl"
:directory '(:relative "examples"))
*load-truename*))))
-
+
+ (load-test "array-2d")
(load-test "strtol")
(load-test "gettime")
(load-test "getenv")
--- /dev/null
+;;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Base: 10 -*-
+;;;; *************************************************************************
+;;;; FILE IDENTIFICATION
+;;;;
+;;;; Name: array-2d.cl
+;;;; Purpose: UFFI Example file use 2-dimensional arrays
+;;;; Programmer: Kevin M. Rosenberg
+;;;; Date Started: Mar 2002
+;;;;
+;;;; $Id: array-2d.cl,v 1.1 2002/03/18 02:27:32 kevin Exp $
+;;;;
+;;;; This file, part of UFFI, is Copyright (c) 2002 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 :cl-user)
+
+(uffi:def-constant +column-length+ 10)
+
+(uffi:def-array long-array (:long 10))
+
+(defun test-array-2d ()
+ "Tests 2d array"
+ (let ((a (uffi:allocate-foreign-object long-array)))
+ (dotimes (i +column-length+)
+ (setf (uffi:deref-array a :long i) (* i i)))
+ (dotimes (i +column-length+)
+ (format "~&~D => ~D" i (uffi:deref-array a 'long-array i)))
+ (uffi:free-foreign-object a)))
+
+#+test-uffi
+(test-array-2d)
+
+