;;;; Copyright (c) 2017, Jeremy Steward ;;;; All rights reserved. ;;;; ;;;; Redistribution and use in source and binary forms, with or without ;;;; modification, are permitted provided that the following conditions are met: ;;;; ;;;; 1. Redistributions of source code must retain the above copyright notice, ;;;; this list of conditions and the following disclaimer. ;;;; ;;;; 2. Redistributions in binary form must reproduce the above copyright notice, ;;;; this list of conditions and the following disclaimer in the documentation ;;;; and/or other materials provided with the distribution. ;;;; ;;;; 3. Neither the name of the copyright holder nor the names of its ;;;; contributors may be used to endorse or promote products derived from this ;;;; software without specific prior written permission. ;;;; ;;;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" ;;;; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ;;;; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ;;;; ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE ;;;; LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR ;;;; CONSEQUENTIAL DAMAGES INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF ;;;; SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS ;;;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN ;;;; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ;;;; ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE ;;;; POSSIBILITY OF SUCH DAMAGE. (declare (unsafe) (fixnum-arithmetic)) (module generalized-arrays-lowlevel () (cond-expand (chicken-5 (import (chicken base) (chicken fixnum) (chicken module) (chicken type) (scheme) (srfi-1) (srfi-4) (srfi-133) (matchable) (storage-classes) (typed-records) (only type-checks define-check+error-type check-natural-fixnum check-positive-fixnum check-boolean check-vector check-list) (only type-errors define-error-type))) (else (import chicken scheme data-structures) (use srfi-1 srfi-4 srfi-133 matchable storage-classes typed-records (only type-checks define-check+error-type check-natural-fixnum check-positive-fixnum check-boolean check-vector check-list) (only type-errors define-error-type)))) (export array array? check-array row-major? shape->stride remove-axis-from-index check-array-index *UNSPECIFIED* %%dummy-make-array %make-array) (export %array-rank %array-lower-bound %array-upper-bound %array-index->storage-index %array-for-each-index) (export %array-ref %array-set! %array-map %array-map! %array-fold %array-reduce %array-cumulate) (export %array-compress %array-expand %array-rearrange %array-transform %array-squeeze %array-unsqueeze %array-slice %array-rearrange-axes) (export %array-mutable? %array-storage-object %array-storage-class %array-stride %array-shape %array-offset %array-append %array-copy %array-copy!) (include "generalized-arrays/generalized-arrays-internal.scm") )