;;; Lisplab, vector1-array.lisp ;;; Level1, treats normal lisp arrays as vectors ;;; Copyright (C) 2012 Joern Inge Vestgaarden ;;; ;;; This program is free software; you can redistribute it and/or modify ;;; it under the terms of the GNU General Public License as published by ;;; the Free Software Foundation; either version 2 of the License, or ;;; (at your option) any later version. ;;; ;;; This program 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 this program; if not, write to the Free Software Foundation, Inc., ;;; 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. (in-package :lisplab) (defmethod vector-p ((a array)) "True for any array through row-major-aref" t) (defmethod dim ((a array) &optional axis) (if axis (array-dimension a axis) (array-dimensions a))) (defmethod size ((a array)) (reduce #'* (dim a))) (defmethod rank ((a array)) (array-rank a)) (defmethod element-type ((a array)) "Gets the element type of the array" (array-element-type a)) (defmethod vref ((a array) idx) "Row major order" (row-major-aref a idx)) (defmethod (setf vref) (value (a array) idx) (setf (row-major-aref a idx) value))