diff --git a/data/both.lisp b/data/both.lisp index 9ad8b4d98649639605c85f4ef1ed872a7e9fa64b..5d884c109ac3847331cfd9001197e1306bd21c8e 100644 --- a/data/both.lisp +++ b/data/both.lisp @@ -1,6 +1,6 @@ ;; Functions for both vectors and matrices. ;; Liam Healy 2008-04-26 20:48:44EDT both.lisp -;; Time-stamp: <2010-07-06 22:37:34EDT both.lisp> +;; Time-stamp: <2010-07-11 18:37:28EDT both.lisp> ;; ;; Copyright 2008, 2009 Liam M. Healy ;; Distributed under the terms of the GNU General Public License @@ -78,9 +78,6 @@ "Exchange the elements of a and b by copying. The two must have the same dimensions.") -;;; These functions are here as debugging tools only; they do not insure -;;; coherency between the C and CL sides and therefore should not be -;;; used in production. ;;; For matrix functions, there should be another index argument #| (defmfun set-value ((object vector) index value) diff --git a/init/callback.lisp b/init/callback.lisp index 35d69cc4c2076206c744259ba161b38dcd0401be..7bf19ae4dba100c2bba7be6c0453183504f51e06 100644 --- a/init/callback.lisp +++ b/init/callback.lisp @@ -1,6 +1,6 @@ ;; Foreign callback functions. ;; Liam Healy -;; Time-stamp: <2010-06-29 22:51:19EDT callback.lisp> +;; Time-stamp: <2010-07-11 19:01:17EDT callback.lisp> ;; ;; Copyright 2009 Liam M. Healy ;; Distributed under the terms of the GNU General Public License @@ -37,14 +37,13 @@ ;;; they are defined with those tasks. The macro #'defmcallback can ;;; specify that the CL function is to expect in arglist and return as ;;; multiple values scalar quantities that come from and will be bound -;;; to either grid:foreign-arrays or C vectors. This is done with a list of the +;;; to either grid:foreign-arrays. This is done with a list of the ;;; type and size, e.g. (:double 3), and for setting :set, type size, -;;; e.g. (:set :double 3). If the 'grid:foreign-array argument is nil, it will -;;; expand to read or set a C vector; if it is T, it will expand to -;;; read or set a grid:foreign-array. This allows the user to define ordinary CL +;;; e.g. (:set :double 3). These can read either :cvector or +;;; :foreign-array. This allows the user to define ordinary CL ;;; functions with scalars as input and output. However, it may be -;;; desirable to read and set grid:foreign-arrays, in which case :pointer is the -;;; right specification. +;;; desirable to read and set grid:foreign-arrays, in which case +;;; :pointer is the right specification. ;;;;**************************************************************************** ;;;; Setting slots diff --git a/init/funcallable.lisp b/init/funcallable.lisp index bdb0aca4e4fce22ae09580570c8dc80eaf7ee25d..a99813caf239aa2d8013b9aa203c4437cc1a9a46 100644 --- a/init/funcallable.lisp +++ b/init/funcallable.lisp @@ -1,8 +1,8 @@ ;; Generate a lambda that calls the user function; will be called by callback. ;; Liam Healy -;; Time-stamp: <2010-07-10 22:18:51EDT funcallable.lisp> +;; Time-stamp: <2010-07-11 18:12:29EDT funcallable.lisp> ;; -;; Copyright 2009 Liam M. Healy +;; Copyright 2009, 2010 Liam M. Healy ;; Distributed under the terms of the GNU General Public License ;; ;; This program is free software: you can redistribute it and/or modify @@ -66,13 +66,17 @@ ;;;;**************************************************************************** (defun gref-mpointer-form - (mpointer index &optional (category 'vector) (element-type 'double-float)) - "Create the call that will return an element from a GSL array mpointer." + (mpointer index &optional value (category 'vector) (element-type 'double-float)) + "Create the call that will return an element from a GSL array mpointer, + or set it to value if value is non-NIL." (ffexpand nil (actual-gsl-function-name - '("gsl_" :category :type "_get") category element-type) - `(:pointer ,mpointer sizet ,index ,element-type))) + `("gsl_" :category :type ,(if value "_set" "_get")) + category element-type) + (if value + `(:pointer ,mpointer sizet ,index ,element-type ,value :void) + `(:pointer ,mpointer sizet ,index ,element-type)))) (defun reference-foreign-element (foreign-variable-name linear-index argspec dimension-values) @@ -92,7 +96,7 @@ (parse-callback-argspec argspec 'element-type)) ;; A vector (gref-mpointer-form - foreign-variable-name linear-index 'vector + foreign-variable-name linear-index nil 'vector (parse-callback-argspec argspec 'element-type))) `(cffi:mem-aref ,foreign-variable-name diff --git a/init/mobject.lisp b/init/mobject.lisp index 7e96d9c039dc2582456ef71cbeeea166f004b86b..df8f58413a36c77faef9ba23d49fccd4e2ee528a 100644 --- a/init/mobject.lisp +++ b/init/mobject.lisp @@ -1,6 +1,6 @@ ;; Definition of GSL objects and ways to use them. ;; Liam Healy, Sun Dec 3 2006 - 10:21 -;; Time-stamp: <2010-07-07 14:30:30EDT mobject.lisp> +;; Time-stamp: <2010-07-11 17:07:40EDT mobject.lisp> ;; ;; Copyright 2006, 2007, 2008, 2009 Liam M. Healy ;; Distributed under the terms of the GNU General Public License @@ -62,7 +62,7 @@ ;;; allocate-inputs ;;; freer ;;; callbacks -;;; See callbacks.lisp +;;; See callback.lisp ;;; superclasses ;;; List of superclasses other than 'mobject. ;;; singular