Changeset 3748


Ignore:
Timestamp:
09/14/03 11:45:45 (19 years ago)
Author:
piso
Message:

Work in progress.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/j/src/org/armedbear/lisp/make_array.java

    r3743 r3748  
    33 *
    44 * Copyright (C) 2003 Peter Graves
    5  * $Id: make_array.java,v 1.1 2003-09-14 11:35:44 piso Exp $
     5 * $Id: make_array.java,v 1.2 2003-09-14 11:45:45 piso Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    4848        }
    4949        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);
    5059        if (displacedTo != NIL) {
    5160            final AbstractArray array = checkArray(displacedTo);
     
    5968            if (initialContents != NIL)
    6069                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             }
    6770            return new DisplacedArray(dimv, array, offset);
    6871        }
    6972        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];
    7574            int limit =
    7675                Fixnum.getValue(Symbol.ARRAY_DIMENSION_LIMIT.getSymbolValue());
     
    119118        }
    120119        // 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         }
    127120        Array array;
    128121        if (initialContents != NIL) {
Note: See TracChangeset for help on using the changeset viewer.