Changeset 5872


Ignore:
Timestamp:
02/19/04 01:34:28 (17 years ago)
Author:
piso
Message:

vectorPushExtend()

Location:
trunk/j/src/org/armedbear/lisp
Files:
2 edited

Legend:

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

    r5273 r5872  
    182182        return this;
    183183    }
     184
     185    public LispObject vectorPushExtend(LispObject element)
     186        throws ConditionThrowable
     187    {
     188        final int fp = getFillPointer();
     189        if (fp < 0)
     190            noFillPointer();
     191        if (fp >= capacity()) {
     192            // Need to extend vector.
     193            ensureCapacity(capacity() * 2 + 1);
     194        }
     195        set(fp, element);
     196        setFillPointer(fp + 1);
     197        return new Fixnum(fp);
     198    }
     199
     200    public LispObject vectorPushExtend(LispObject element, LispObject extension)
     201        throws ConditionThrowable
     202    {
     203        int ext = Fixnum.getValue(extension);
     204        final int fp = getFillPointer();
     205        if (fp < 0)
     206            noFillPointer();
     207        if (fp >= capacity()) {
     208            // Need to extend vector.
     209            ext = Math.max(ext, capacity() + 1);
     210            ensureCapacity(capacity() + ext);
     211        }
     212        set(fp, element);
     213        setFillPointer(fp + 1);
     214        return new Fixnum(fp);
     215    }
    184216}
  • trunk/j/src/org/armedbear/lisp/LispString.java

    r5847 r5872  
    33 *
    44 * Copyright (C) 2002-2004 Peter Graves
    5  * $Id: LispString.java,v 1.81 2004-02-16 01:25:47 piso Exp $
     5 * $Id: LispString.java,v 1.82 2004-02-19 01:34:28 piso Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    373373    }
    374374
     375    public LispObject vectorPushExtend(LispObject element)
     376        throws ConditionThrowable
     377    {
     378        if (fillPointer < 0)
     379            noFillPointer();
     380        if (fillPointer >= chars.length) {
     381            // Need to extend vector.
     382            ensureCapacity(chars.length * 2 + 1);
     383        }
     384        chars[fillPointer] = LispCharacter.getValue(element);
     385        return new Fixnum(fillPointer++);
     386    }
     387
     388    public LispObject vectorPushExtend(LispObject element, LispObject extension)
     389        throws ConditionThrowable
     390    {
     391        int ext = Fixnum.getValue(extension);
     392        if (fillPointer < 0)
     393            noFillPointer();
     394        if (fillPointer >= chars.length) {
     395            // Need to extend vector.
     396            ext = Math.max(ext, chars.length + 1);
     397            ensureCapacity(chars.length + ext);
     398        }
     399        chars[fillPointer] = LispCharacter.getValue(element);
     400        return new Fixnum(fillPointer++);
     401    }
     402
    375403    public LispObject remove(LispObject item) throws ConditionThrowable
    376404    {
Note: See TracChangeset for help on using the changeset viewer.