Changeset 5930


Ignore:
Timestamp:
02/24/04 15:04:20 (17 years ago)
Author:
piso
Message:

SVREF, %SVSET

File:
1 edited

Legend:

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

    r5921 r5930  
    33 *
    44 * Copyright (C) 2002-2004 Peter Graves
    5  * $Id: SimpleVector.java,v 1.3 2004-02-24 12:13:02 piso Exp $
     5 * $Id: SimpleVector.java,v 1.4 2004-02-24 15:04:20 piso Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    277277        return sb.toString();
    278278    }
     279
     280    // ### svref
     281    // svref simple-vector index => element
     282    private static final Primitive2 SVREF =
     283        new Primitive2("svref", "simple-vector index")
     284    {
     285        public LispObject execute(LispObject first, LispObject second)
     286            throws ConditionThrowable
     287        {
     288            try {
     289                return ((SimpleVector)first).elements[((Fixnum)second).value];
     290            }
     291            catch (ClassCastException e) {
     292                if (first instanceof SimpleVector)
     293                    return signal(new TypeError(second, Symbol.FIXNUM));
     294                else
     295                    return signal(new TypeError(first, Symbol.SIMPLE_VECTOR));
     296            }
     297        }
     298    };
     299
     300    // ### %svset
     301    // %svset simple-vector index new-value => new-value
     302    private static final Primitive3 _SVSET =
     303        new Primitive3("%svset", PACKAGE_SYS, false, "simple-vector index new-value")
     304    {
     305        public LispObject execute(LispObject first, LispObject second,
     306                                  LispObject third)
     307            throws ConditionThrowable
     308        {
     309            try {
     310                ((SimpleVector)first).elements[((Fixnum)second).value] = third;
     311                return third;
     312            }
     313            catch (ClassCastException e) {
     314                if (first instanceof SimpleVector)
     315                    return signal(new TypeError(second, Symbol.FIXNUM));
     316                else
     317                    return signal(new TypeError(first, Symbol.SIMPLE_VECTOR));
     318            }
     319        }
     320    };
    279321}
Note: See TracChangeset for help on using the changeset viewer.