1 21 package com.db4o.foundation; 22 23 24 27 public final class BitMap4 { 28 29 private final byte[] _bits; 30 31 public BitMap4(int numBits){ 32 _bits = new byte[byteCount(numBits)]; 33 } 34 35 36 public BitMap4(byte[] buffer, int pos, int numBits){ 37 this(numBits); 38 System.arraycopy(buffer, pos, _bits, 0, _bits.length); 39 } 40 41 public boolean isTrue(int bit) { 42 return ((_bits[arrayOffset(bit)]>>>byteOffset(bit))&1)!=0; 43 } 44 45 public int marshalledLength(){ 46 return _bits.length; 47 } 48 49 public void setFalse(int bit){ 50 _bits[arrayOffset(bit)] &= (byte)~bitMask(bit); 51 } 52 53 public void setTrue(int bit){ 54 _bits[arrayOffset(bit)] |= bitMask(bit); 55 } 56 57 public void writeTo(byte[] bytes, int pos){ 58 System.arraycopy(_bits, 0, bytes, pos, _bits.length); 59 } 60 61 private byte byteOffset(int bit) { 62 return (byte)(bit % 8); 63 } 64 65 private int arrayOffset(int bit) { 66 return bit / 8; 67 } 68 69 private byte bitMask(int bit) { 70 return (byte)(1 << byteOffset(bit)); 71 } 72 73 private int byteCount(int numBits) { 74 return (numBits + 7) / 8; 75 } 76 } 77 | Popular Tags |