Changeset 3748
- Timestamp:
- 09/14/03 11:45:45 (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/j/src/org/armedbear/lisp/make_array.java
r3743 r3748 3 3 * 4 4 * Copyright (C) 2003 Peter Graves 5 * $Id: make_array.java,v 1. 1 2003-09-14 11:35:44piso Exp $5 * $Id: make_array.java,v 1.2 2003-09-14 11:45:45 piso Exp $ 6 6 * 7 7 * This program is free software; you can redistribute it and/or … … 48 48 } 49 49 final int rank = dimensions.listp() ? dimensions.length() : 1; 50 int[] dimv = new int[rank]; 51 if (dimensions.listp()) { 52 for (int i = 0; i < rank; i++) { 53 LispObject dim = dimensions.car(); 54 dimv[i] = Fixnum.getValue(dim); 55 dimensions = dimensions.cdr(); 56 } 57 } else 58 dimv[0] = Fixnum.getValue(dimensions); 50 59 if (displacedTo != NIL) { 51 60 final AbstractArray array = checkArray(displacedTo); … … 59 68 if (initialContents != NIL) 60 69 throw new LispError(":INITIAL-CONTENTS must not be specified with :DISPLACED-TO"); 61 int[] dimv = new int[rank];62 for (int i = 0; i < rank; i++) {63 LispObject dim = dimensions.car();64 dimv[i] = Fixnum.getValue(dim);65 dimensions = dimensions.cdr();66 }67 70 return new DisplacedArray(dimv, array, offset); 68 71 } 69 72 if (rank == 1) { 70 final int size; 71 if (dimensions instanceof Cons) 72 size = Fixnum.getValue(dimensions.car()); 73 else 74 size = Fixnum.getValue(dimensions); 73 final int size = dimv[0]; 75 74 int limit = 76 75 Fixnum.getValue(Symbol.ARRAY_DIMENSION_LIMIT.getSymbolValue()); … … 119 118 } 120 119 // rank != 1 121 int[] dimv = new int[rank];122 for (int i = 0; i < rank; i++) {123 LispObject dim = dimensions.car();124 dimv[i] = Fixnum.getValue(dim);125 dimensions = dimensions.cdr();126 }127 120 Array array; 128 121 if (initialContents != NIL) {
Note: See TracChangeset
for help on using the changeset viewer.