home *** CD-ROM | disk | FTP | other *** search
- package netscape.ldap.ber.stream;
-
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.util.BitSet;
-
- public class BERBitString extends BERElement {
- private BitSet m_value;
- private int m_value_num_bits;
-
- public BERBitString(BitSet var1) {
- this.m_value = var1;
- }
-
- public BERBitString(BERTagDecoder var1, InputStream var2, int[] var3) throws IOException {
- int var4 = BERElement.readLengthOctets(var2, var3);
- int[] var5 = new int[1];
- Object var6 = null;
- if (var4 == -1) {
- var5[0] = 0;
- BERElement var12 = BERElement.getElement(var1, var2, var5);
- if (var12 != null) {
- BERBitString var13 = (BERBitString)var12;
- BitSet var14 = new BitSet(this.m_value_num_bits + var13.getSize());
-
- for(int var15 = 0; var15 < this.m_value_num_bits; ++var15) {
- if (this.m_value.get(var15)) {
- var14.set(var15);
- }
- }
-
- for(int var16 = 0; var16 < var13.getSize(); ++var16) {
- if (var13.getValue().get(var16)) {
- var14.set(this.m_value_num_bits + var16);
- }
- }
-
- this.m_value = var14;
- this.m_value_num_bits += var13.getSize();
- }
-
- while(var12 != null) {
- }
-
- } else {
- for(var3[0] += var4; var4 > 0; var4 -= var5[0]) {
- var5[0] = 0;
- BERElement var11 = BERElement.getElement(var1, var2, var5);
- if (var11 != null) {
- BERBitString var7 = (BERBitString)var11;
- BitSet var8 = new BitSet(this.m_value_num_bits + var7.getSize());
-
- for(int var9 = 0; var9 < this.m_value_num_bits; ++var9) {
- if (this.m_value.get(var9)) {
- var8.set(var9);
- }
- }
-
- for(int var10 = 0; var10 < var7.getSize(); ++var10) {
- if (var7.getValue().get(var10)) {
- var8.set(this.m_value_num_bits + var10);
- }
- }
-
- this.m_value = var8;
- this.m_value_num_bits += var7.getSize();
- }
- }
-
- }
- }
-
- public BERBitString(InputStream var1, int[] var2) throws IOException {
- int var4 = BERElement.readLengthOctets(var1, var2);
- int var5 = var1.read();
- int var10002 = var2[0]++;
- --var4;
- this.m_value_num_bits = (var4 - 1) * 8 + (8 - var5);
- this.m_value = new BitSet();
- int var6 = 0;
-
- for(int var7 = 0; var7 < var4 - 1; ++var7) {
- int var3 = var1.read();
- int var8 = 128;
-
- for(int var9 = 0; var9 < 8; ++var9) {
- if ((var3 & var8) > 0) {
- this.m_value.set(var6);
- } else {
- this.m_value.clear(var6);
- }
-
- ++var6;
- var8 /= 2;
- }
- }
-
- int var10 = var1.read();
- int var12 = 128;
-
- for(int var13 = 0; var13 < 8 - var5; ++var13) {
- if ((var10 & var12) > 0) {
- this.m_value.set(var6);
- } else {
- this.m_value.clear(var6);
- }
-
- ++var6;
- var12 /= 2;
- }
-
- var2[0] += var4;
- }
-
- public void write(OutputStream var1) throws IOException {
- var1.write(3);
- int var2 = this.m_value_num_bits;
- int var3 = 8 - var2 % 8;
- int var4 = var2 / 8 + 1;
- if (var3 > 0) {
- ++var4;
- }
-
- var1.write(var4);
- var1.write(var3);
-
- for(int var5 = 0; var5 < var2 / 8; ++var5) {
- int var6 = 0;
- int var7 = 128;
-
- for(int var8 = 0; var8 < 8; ++var8) {
- if (this.m_value.get(var5 * 8 + var8)) {
- var6 += var7;
- }
-
- var7 /= 2;
- }
-
- var1.write(var6);
- }
-
- if (var3 > 0) {
- int var9 = 0;
- int var10 = 128;
-
- for(int var11 = 0; var11 < var3; ++var11) {
- if (this.m_value.get(var2 / 8 * 8 + var11)) {
- var9 += var10;
- }
-
- var10 /= 2;
- }
-
- var1.write(var9);
- }
-
- }
-
- public BitSet getValue() {
- return this.m_value;
- }
-
- public int getSize() {
- return this.m_value_num_bits;
- }
-
- public int getType() {
- return 3;
- }
-
- public String toString() {
- String var1 = "";
- int var3 = this.m_value_num_bits;
-
- for(int var4 = 0; var4 < var3 / 8; ++var4) {
- int var2 = 0;
- int var5 = 128;
-
- for(int var6 = 0; var6 < 8; ++var6) {
- if (this.m_value.get(var4 * 8 + var6)) {
- var2 += var5;
- }
-
- var5 /= 2;
- }
-
- var1 = var1 + " " + (byte)var2;
- }
-
- int var9 = 128;
- int var8 = 0;
-
- for(int var10 = 0; var10 < var3 - var3 / 8; ++var10) {
- if (this.m_value.get(var3 / 8 * 8 + var10)) {
- var8 += var9;
- }
-
- var9 /= 2;
- }
-
- var1 = var1 + " " + (byte)var8;
- return "Bitstring {" + var1 + " }";
- }
- }
-