home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 25 / CDROM25.iso / Share / prog / VJ11 / VJTRIAL.EXE / IE30Java.exe / classd.exe / java / io / DataInputStream.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-01-27  |  3.1 KB  |  262 lines

  1. package java.io;
  2.  
  3. import com.ms.lang.SystemX;
  4.  
  5. public class DataInputStream extends FilterInputStream implements DataInput {
  6.    private boolean isLocalised;
  7.    private char[] lineBuffer;
  8.  
  9.    public static final String readUTF(DataInput var0) throws IOException {
  10.       int var1 = var0.readUnsignedShort();
  11.       char[] var2 = new char[var1];
  12.       int var3 = 0;
  13.       int var4 = 0;
  14.  
  15.       while(var3 < var1) {
  16.          int var5 = var0.readUnsignedByte();
  17.          switch (var5 >> 4) {
  18.             case 0:
  19.             case 1:
  20.             case 2:
  21.             case 3:
  22.             case 4:
  23.             case 5:
  24.             case 6:
  25.             case 7:
  26.                ++var3;
  27.                var2[var4++] = (char)var5;
  28.                break;
  29.             case 8:
  30.             case 9:
  31.             case 10:
  32.             case 11:
  33.             default:
  34.                throw new UTFDataFormatException();
  35.             case 12:
  36.             case 13:
  37.                var3 += 2;
  38.                if (var3 > var1) {
  39.                   throw new UTFDataFormatException();
  40.                }
  41.  
  42.                int var9 = var0.readUnsignedByte();
  43.                if ((var9 & 192) != 128) {
  44.                   throw new UTFDataFormatException();
  45.                }
  46.  
  47.                var2[var4++] = (char)((var5 & 31) << 6 | var9 & 63);
  48.                break;
  49.             case 14:
  50.                var3 += 3;
  51.                if (var3 > var1) {
  52.                   throw new UTFDataFormatException();
  53.                }
  54.  
  55.                int var6 = var0.readUnsignedByte();
  56.                int var7 = var0.readUnsignedByte();
  57.                if ((var6 & 192) != 128 || (var7 & 192) != 128) {
  58.                   throw new UTFDataFormatException();
  59.                }
  60.  
  61.                var2[var4++] = (char)((var5 & 15) << 12 | (var6 & 63) << 6 | var7 & 63);
  62.          }
  63.       }
  64.  
  65.       return new String(var2, 0, var4);
  66.    }
  67.  
  68.    public final boolean readBoolean() throws IOException {
  69.       int var1 = super.in.read();
  70.       if (var1 < 0) {
  71.          throw new EOFException();
  72.       } else {
  73.          return var1 != 0;
  74.       }
  75.    }
  76.  
  77.    public final double readDouble() throws IOException {
  78.       return Double.longBitsToDouble(this.readLong());
  79.    }
  80.  
  81.    public final int readUnsignedShort() throws IOException {
  82.       InputStream var1 = super.in;
  83.       int var2 = var1.read();
  84.       int var3 = var1.read();
  85.       if ((var2 | var3) < 0) {
  86.          throw new EOFException();
  87.       } else {
  88.          return (var2 << 8) + var3;
  89.       }
  90.    }
  91.  
  92.    public final int readUnsignedByte() throws IOException {
  93.       int var1 = super.in.read();
  94.       if (var1 < 0) {
  95.          throw new EOFException();
  96.       } else {
  97.          return var1;
  98.       }
  99.    }
  100.  
  101.    public final byte readByte() throws IOException {
  102.       int var1 = super.in.read();
  103.       if (var1 < 0) {
  104.          throw new EOFException();
  105.       } else {
  106.          return (byte)var1;
  107.       }
  108.    }
  109.  
  110.    public final float readFloat() throws IOException {
  111.       return Float.intBitsToFloat(this.readInt());
  112.    }
  113.  
  114.    public final int skipBytes(int var1) throws IOException {
  115.       InputStream var2 = super.in;
  116.  
  117.       for(int var3 = 0; var3 < var1; var3 += (int)var2.skip((long)(var1 - var3))) {
  118.       }
  119.  
  120.       return var1;
  121.    }
  122.  
  123.    public final long readLong() throws IOException {
  124.       return ((long)this.readInt() << 32) + ((long)this.readInt() & 4294967295L);
  125.    }
  126.  
  127.    public final short readShort() throws IOException {
  128.       InputStream var1 = super.in;
  129.       int var2 = var1.read();
  130.       int var3 = var1.read();
  131.       if ((var2 | var3) < 0) {
  132.          throw new EOFException();
  133.       } else {
  134.          return (short)((var2 << 8) + var3);
  135.       }
  136.    }
  137.  
  138.    public DataInputStream(InputStream var1) {
  139.       super(var1);
  140.    }
  141.  
  142.    public final void readFully(byte[] var1) throws IOException {
  143.       this.readFully(var1, 0, var1.length);
  144.    }
  145.  
  146.    public final void readFully(byte[] var1, int var2, int var3) throws IOException {
  147.       InputStream var4 = super.in;
  148.  
  149.       int var6;
  150.       for(int var5 = 0; var5 < var3; var5 += var6) {
  151.          var6 = var4.read(var1, var2 + var5, var3 - var5);
  152.          if (var6 < 0) {
  153.             throw new EOFException();
  154.          }
  155.       }
  156.  
  157.    }
  158.  
  159.    public final char readChar() throws IOException {
  160.       InputStream var1 = super.in;
  161.       if (this.isLocalised) {
  162.          int var7 = var1.read();
  163.          if (var7 < 0) {
  164.             throw new EOFException();
  165.          } else if (SystemX.isLocalCharDBCSLeadByte((byte)var7)) {
  166.             byte[] var8 = new byte[2];
  167.             int var5 = var1.read();
  168.             if (var5 < 0) {
  169.                throw new EOFException();
  170.             } else {
  171.                var8[0] = (byte)var7;
  172.                var8[1] = (byte)var5;
  173.                char[] var4 = SystemX.LocalStringToJavaString(var8);
  174.                return var4[0];
  175.             }
  176.          } else {
  177.             return SystemX.LocalStringToJavaString((byte)var7);
  178.          }
  179.       } else {
  180.          int var2 = var1.read();
  181.          int var3 = var1.read();
  182.          if ((var2 | var3) < 0) {
  183.             throw new EOFException();
  184.          } else {
  185.             return (char)((var2 << 8) + var3);
  186.          }
  187.       }
  188.    }
  189.  
  190.    public final int readInt() throws IOException {
  191.       InputStream var1 = super.in;
  192.       int var2 = var1.read();
  193.       int var3 = var1.read();
  194.       int var4 = var1.read();
  195.       int var5 = var1.read();
  196.       if ((var2 | var3 | var4 | var5) < 0) {
  197.          throw new EOFException();
  198.       } else {
  199.          return (var2 << 24) + (var3 << 16) + (var4 << 8) + var5;
  200.       }
  201.    }
  202.  
  203.    public final String readLine() throws IOException {
  204.       InputStream var1 = super.in;
  205.       char[] var2 = this.lineBuffer;
  206.       if (var2 == null) {
  207.          var2 = this.lineBuffer = new char[128];
  208.       }
  209.  
  210.       int var3 = var2.length;
  211.       int var4 = 0;
  212.  
  213.       while(true) {
  214.          int var5;
  215.          switch (var5 = var1.read()) {
  216.             case 13:
  217.                int var6 = var1.read();
  218.                if (var6 != 10) {
  219.                   if (!(var1 instanceof PushbackInputStream)) {
  220.                      var1 = super.in = new PushbackInputStream(var1);
  221.                   }
  222.  
  223.                   ((PushbackInputStream)var1).unread(var6);
  224.                }
  225.             case -1:
  226.             case 10:
  227.                if (var5 == -1 && var4 == 0) {
  228.                   return null;
  229.                }
  230.  
  231.                if (this.isLocalised) {
  232.                   return new String(SystemX.LocalStringToJavaString(var2, 0, var4));
  233.                }
  234.  
  235.                return String.copyValueOf(var2, 0, var4);
  236.          }
  237.  
  238.          --var3;
  239.          if (var3 < 0) {
  240.             var2 = new char[var4 + 128];
  241.             var3 = var2.length - var4 - 1;
  242.             System.arraycopy(this.lineBuffer, 0, var2, 0, var4);
  243.             this.lineBuffer = var2;
  244.          }
  245.  
  246.          var2[var4++] = (char)var5;
  247.       }
  248.    }
  249.  
  250.    public final String readUTF() throws IOException {
  251.       return readUTF(this);
  252.    }
  253.  
  254.    public final int read(byte[] var1) throws IOException {
  255.       return super.in.read(var1, 0, var1.length);
  256.    }
  257.  
  258.    public final int read(byte[] var1, int var2, int var3) throws IOException {
  259.       return super.in.read(var1, var2, var3);
  260.    }
  261. }
  262.