add BitVector.and(),or(),not()
authorAdam Megacz <adam@megacz.com>
Thu, 16 Jul 2009 18:31:25 +0000 (11:31 -0700)
committerAdam Megacz <adam@megacz.com>
Thu, 16 Jul 2009 18:31:25 +0000 (11:31 -0700)
src/edu/berkeley/fleet/api/BitVector.java

index 3352a6c..92cb6a0 100644 (file)
@@ -147,6 +147,33 @@ public class BitVector implements DeferredBitVector {
     public BitVector getBitVector() {
         return this;
     }
+
+    public BitVector and(BitVector bv) {
+        if (bv.length() != this.length())
+            throw new RuntimeException("attempt to invoke BitVector.and() on BitVectors "+
+                                       "of mismatched size: this="+this+", bv="+bv);
+        BitVector ret = new BitVector(length());
+        for(int i=0; i<length(); i++)
+            ret.set(i, get(i) && bv.get(i));
+        return ret;
+    }
+
+    public BitVector or(BitVector bv) {
+        if (bv.length() != this.length())
+            throw new RuntimeException("attempt to invoke BitVector.or() on BitVectors "+
+                                       "of mismatched size: this="+this+", bv="+bv);
+        BitVector ret = new BitVector(length());
+        for(int i=0; i<length(); i++)
+            ret.set(i, get(i) || bv.get(i));
+        return ret;
+    }
+
+    public BitVector not() {
+        BitVector ret = new BitVector(length());
+        for(int i=0; i<length(); i++)
+            ret.set(i, !get(i));
+        return ret;
+    }
 }