Changeset 5965


Ignore:
Timestamp:
02/25/04 16:18:30 (17 years ago)
Author:
piso
Message:

fill()

File:
1 edited

Legend:

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

    r5957 r5965  
    33 *
    44 * Copyright (C) 2003-2004 Peter Graves
    5  * $Id: ComplexBitVector.java,v 1.3 2004-02-25 13:50:50 piso Exp $
     5 * $Id: ComplexBitVector.java,v 1.4 2004-02-25 16:18:30 piso Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    179179    public void fill(LispObject obj) throws ConditionThrowable
    180180    {
    181         if (bits != null) {
    182             try {
    183                 int n = Fixnum.getValue(obj);
    184                 if (n == 1) {
    185                     for (int i = bits.length; i-- > 0;)
    186                         bits[i] = -1L;
     181        try {
     182            switch (((Fixnum)obj).value) {
     183                case 0:
     184                    if (bits != null) {
     185                        for (int i = bits.length; i-- > 0;)
     186                            bits[i] = 0;
     187                    } else {
     188                        for (int i = capacity; i-- > 0;)
     189                            clearBit(i);
     190                    }
    187191                    return;
    188                 }
    189                 if (n == 0) {
    190                     for (int i = bits.length; i-- > 0;)
    191                         bits[i] = 0;
     192                case 1:
     193                    if (bits != null) {
     194                        for (int i = bits.length; i-- > 0;)
     195                            bits[i] = -1L;
     196                    } else {
     197                        for (int i = capacity; i-- > 0;)
     198                            setBit(i);
     199                    }
    192200                    return;
    193                 }
    194                 // None of the above...
    195             }
    196             catch (ConditionThrowable t) {}
    197             signal(new TypeError(obj, Symbol.BIT));
    198         } else {
    199             try {
    200                 int n = Fixnum.getValue(obj);
    201                 if (n == 1) {
    202                     for (int i = capacity; i-- > 0;)
    203                         setBit(i);
    204                     return;
    205                 }
    206                 if (n == 0) {
    207                     for (int i = capacity; i-- > 0;)
    208                         clearBit(i);
    209                     return;
    210                 }
    211                 // None of the above...
    212             }
    213             catch (ConditionThrowable t) {}
    214             signal(new TypeError(obj, Symbol.BIT));
    215         }
     201            }
     202        }
     203        catch (ClassCastException e) {
     204            // Fall through...
     205        }
     206        signal(new TypeError(obj, Symbol.BIT));
    216207    }
    217208
Note: See TracChangeset for help on using the changeset viewer.