Changeset 8555


Ignore:
Timestamp:
02/13/05 04:02:22 (16 years ago)
Author:
piso
Message:

Bit operations.

File:
1 edited

Legend:

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

    r8550 r8555  
    33 *
    44 * Copyright (C) 2004-2005 Peter Graves
    5  * $Id: SimpleBitVector.java,v 1.11 2005-02-12 20:56:44 piso Exp $
     5 * $Id: SimpleBitVector.java,v 1.12 2005-02-13 04:02:22 piso Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    221221    }
    222222
    223     public SimpleBitVector and(SimpleBitVector v, SimpleBitVector result)
     223    private SimpleBitVector and(SimpleBitVector v, SimpleBitVector result)
    224224    {
    225225        if (result == null)
     
    230230    }
    231231
    232     public SimpleBitVector ior(SimpleBitVector v, SimpleBitVector result)
     232    private SimpleBitVector ior(SimpleBitVector v, SimpleBitVector result)
    233233    {
    234234        if (result == null)
     
    239239    }
    240240
    241     public SimpleBitVector xor(SimpleBitVector v, SimpleBitVector result)
     241    private SimpleBitVector xor(SimpleBitVector v, SimpleBitVector result)
    242242    {
    243243        if (result == null)
     
    248248    }
    249249
    250     public SimpleBitVector nand(SimpleBitVector v, SimpleBitVector result)
     250    private SimpleBitVector eqv(SimpleBitVector v, SimpleBitVector result)
     251    {
     252        if (result == null)
     253            result = new SimpleBitVector(capacity);
     254        for (int i = bits.length; i-- > 0;)
     255            result.bits[i] = ~(bits[i] ^ v.bits[i]);
     256        return result;
     257    }
     258
     259    private SimpleBitVector nand(SimpleBitVector v, SimpleBitVector result)
    251260    {
    252261        if (result == null)
     
    254263        for (int i = bits.length; i-- > 0;)
    255264            result.bits[i] = ~(bits[i] & v.bits[i]);
     265        return result;
     266    }
     267
     268    private SimpleBitVector nor(SimpleBitVector v, SimpleBitVector result)
     269    {
     270        if (result == null)
     271            result = new SimpleBitVector(capacity);
     272        for (int i = bits.length; i-- > 0;)
     273            result.bits[i] = ~(bits[i] | v.bits[i]);
     274        return result;
     275    }
     276
     277    private SimpleBitVector andc1(SimpleBitVector v, SimpleBitVector result)
     278    {
     279        if (result == null)
     280            result = new SimpleBitVector(capacity);
     281        for (int i = bits.length; i-- > 0;)
     282            result.bits[i] = ~bits[i] & v.bits[i];
     283        return result;
     284    }
     285
     286    private SimpleBitVector andc2(SimpleBitVector v, SimpleBitVector result)
     287    {
     288        if (result == null)
     289            result = new SimpleBitVector(capacity);
     290        for (int i = bits.length; i-- > 0;)
     291            result.bits[i] = bits[i] & ~v.bits[i];
     292        return result;
     293    }
     294
     295    private SimpleBitVector orc1(SimpleBitVector v, SimpleBitVector result)
     296    {
     297        if (result == null)
     298            result = new SimpleBitVector(capacity);
     299        for (int i = bits.length; i-- > 0;)
     300            result.bits[i] = ~bits[i] | v.bits[i];
     301        return result;
     302    }
     303
     304    private SimpleBitVector orc2(SimpleBitVector v, SimpleBitVector result)
     305    {
     306        if (result == null)
     307            result = new SimpleBitVector(capacity);
     308        for (int i = bits.length; i-- > 0;)
     309            result.bits[i] = bits[i] | ~v.bits[i];
    256310        return result;
    257311    }
     
    301355    };
    302356
     357    // ### %simple-bit-vector-bit-eqv
     358    private static final Primitive _SIMPLE_BIT_VECTOR_BIT_EQV =
     359        new Primitive("%simple-bit-vector-bit-eqv", PACKAGE_SYS, false,
     360                      "bit-vector1 bit-vector2 result-bit-vector")
     361    {
     362        public LispObject execute(LispObject first, LispObject second,
     363                                  LispObject third)
     364            throws ConditionThrowable
     365        {
     366            return ((SimpleBitVector)first).eqv((SimpleBitVector)second,
     367                                                (SimpleBitVector)third);
     368        }
     369    };
     370
    303371    // ### %simple-bit-vector-bit-nand
    304372    private static final Primitive _SIMPLE_BIT_VECTOR_BIT_NAND =
     
    314382        }
    315383    };
     384
     385    // ### %simple-bit-vector-bit-nor
     386    private static final Primitive _SIMPLE_BIT_VECTOR_BIT_NOR =
     387        new Primitive("%simple-bit-vector-bit-nor", PACKAGE_SYS, false,
     388                      "bit-vector1 bit-vector2 result-bit-vector")
     389    {
     390        public LispObject execute(LispObject first, LispObject second,
     391                                  LispObject third)
     392            throws ConditionThrowable
     393        {
     394            return ((SimpleBitVector)first).nor((SimpleBitVector)second,
     395                                                 (SimpleBitVector)third);
     396        }
     397    };
     398
     399    // ### %simple-bit-vector-bit-andc1
     400    private static final Primitive _SIMPLE_BIT_VECTOR_BIT_ANDC1 =
     401        new Primitive("%simple-bit-vector-bit-andc1", PACKAGE_SYS, false,
     402                      "bit-vector1 bit-vector2 result-bit-vector")
     403    {
     404        public LispObject execute(LispObject first, LispObject second,
     405                                  LispObject third)
     406            throws ConditionThrowable
     407        {
     408            return ((SimpleBitVector)first).andc1((SimpleBitVector)second,
     409                                                  (SimpleBitVector)third);
     410        }
     411    };
     412
     413    // ### %simple-bit-vector-bit-andc2
     414    private static final Primitive _SIMPLE_BIT_VECTOR_BIT_ANDC2 =
     415        new Primitive("%simple-bit-vector-bit-andc2", PACKAGE_SYS, false,
     416                      "bit-vector1 bit-vector2 result-bit-vector")
     417    {
     418        public LispObject execute(LispObject first, LispObject second,
     419                                  LispObject third)
     420            throws ConditionThrowable
     421        {
     422            return ((SimpleBitVector)first).andc2((SimpleBitVector)second,
     423                                                  (SimpleBitVector)third);
     424        }
     425    };
     426
     427
     428    // ### %simple-bit-vector-bit-orc1
     429    private static final Primitive _SIMPLE_BIT_VECTOR_BIT_ORC1 =
     430        new Primitive("%simple-bit-vector-bit-orc1", PACKAGE_SYS, false,
     431                      "bit-vector1 bit-vector2 result-bit-vector")
     432    {
     433        public LispObject execute(LispObject first, LispObject second,
     434                                  LispObject third)
     435            throws ConditionThrowable
     436        {
     437            return ((SimpleBitVector)first).orc1((SimpleBitVector)second,
     438                                                 (SimpleBitVector)third);
     439        }
     440    };
     441
     442    // ### %simple-bit-vector-bit-orc2
     443    private static final Primitive _SIMPLE_BIT_VECTOR_BIT_ORC2 =
     444        new Primitive("%simple-bit-vector-bit-orc2", PACKAGE_SYS, false,
     445                      "bit-vector1 bit-vector2 result-bit-vector")
     446    {
     447        public LispObject execute(LispObject first, LispObject second,
     448                                  LispObject third)
     449            throws ConditionThrowable
     450        {
     451            return ((SimpleBitVector)first).orc2((SimpleBitVector)second,
     452                                                 (SimpleBitVector)third);
     453        }
     454    };
    316455}
Note: See TracChangeset for help on using the changeset viewer.