Changeset 8553


Ignore:
Timestamp:
02/12/05 20:59:43 (16 years ago)
Author:
piso
Message:

ARRAY-RANK
ARRAY-DIMENSIONS
ARRAY-DIMENSION

File:
1 edited

Legend:

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

    r8537 r8553  
    33 *
    44 * Copyright (C) 2002-2005 Peter Graves
    5  * $Id: Primitives.java,v 1.735 2005-02-12 02:15:49 piso Exp $
     5 * $Id: Primitives.java,v 1.736 2005-02-12 20:59:43 piso Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    17951795    // array-rank array => rank
    17961796    private static final Primitive ARRAY_RANK =
    1797         new Primitive("array-rank", "array") {
    1798         public LispObject execute(LispObject arg) throws ConditionThrowable
    1799         {
    1800             return new Fixnum(checkArray(arg).getRank());
     1797        new Primitive("array-rank", "array")
     1798    {
     1799        public LispObject execute(LispObject arg) throws ConditionThrowable
     1800        {
     1801            try {
     1802                return new Fixnum(((AbstractArray)arg).getRank());
     1803            }
     1804            catch (ClassCastException e) {
     1805                return signal(new TypeError(arg, Symbol.ARRAY));
     1806            }
    18011807        }
    18021808    };
     
    18061812    // Returns a list of integers. Fill pointer (if any) is ignored.
    18071813    private static final Primitive ARRAY_DIMENSIONS =
    1808         new Primitive("array-dimensions", "array") {
    1809         public LispObject execute(LispObject arg) throws ConditionThrowable
    1810         {
    1811             return checkArray(arg).getDimensions();
     1814        new Primitive("array-dimensions", "array")
     1815    {
     1816        public LispObject execute(LispObject arg) throws ConditionThrowable
     1817        {
     1818            try {
     1819                return ((AbstractArray)arg).getDimensions();
     1820            }
     1821            catch (ClassCastException e) {
     1822                return signal(new TypeError(arg, Symbol.ARRAY));
     1823            }
    18121824        }
    18131825    };
     
    18161828    // array-dimension array axis-number => dimension
    18171829    private static final Primitive ARRAY_DIMENSION =
    1818         new Primitive("array-dimension", "array axis-number") {
    1819         public LispObject execute(LispObject first, LispObject second)
    1820             throws ConditionThrowable
    1821         {
    1822             return new Fixnum(checkArray(first).getDimension(Fixnum.getValue(second)));
     1830        new Primitive("array-dimension", "array axis-number")
     1831    {
     1832        public LispObject execute(LispObject first, LispObject second)
     1833            throws ConditionThrowable
     1834        {
     1835            final AbstractArray array;
     1836            try {
     1837                array = (AbstractArray) first;
     1838            }
     1839            catch (ClassCastException e) {
     1840                return signal(new TypeError(first, Symbol.ARRAY));
     1841            }
     1842            final int n;
     1843            try {
     1844                n = ((Fixnum)second).value;
     1845            }
     1846            catch (ClassCastException e) {
     1847                return signal(new TypeError(second, Symbol.FIXNUM));
     1848            }
     1849            return new Fixnum(array.getDimension(n));
    18231850        }
    18241851    };
Note: See TracChangeset for help on using the changeset viewer.