Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   *  Copyright (c) 2012 Jan Kotek
   *
   *  Licensed under the Apache License, Version 2.0 (the "License");
   *  you may not use this file except in compliance with the License.
   *  You may obtain a copy of the License at
   *
   *    http://www.apache.org/licenses/LICENSE-2.0
   *
  *  Unless required by applicable law or agreed to in writing, software
  *  distributed under the License is distributed on an "AS IS" BASIS,
  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
 
 package org.mapdb;
 
Provides java.io.DataOutput implementation on top of growable byte[]

ByteArrayOutputStream is not used as it requires byte[] copying

Author(s):
Jan Kotek
 
 public final class DataOutput2 extends OutputStream implements DataOutput {
 
     public byte[] buf;
     public int pos;
 
     public DataOutput2(){
          = 0;
          = new byte[16]; //TODO take hint from serializer for initial size
     }
 
     public DataOutput2(byte[] buf){
         =0;
         this. = buf;
     }
 
     public byte[] copyBytes(){
         return Arrays.copyOf();
     }

    
make sure there will be enought space in buffer to write N bytes
 
     public void ensureAvail(final int n) {
         if ( + n >= .) {
             int newSize = Math.max( + n. * 2);
              = Arrays.copyOf(newSize);
         }
     }
 
 
     @Override
     public void write(final int bthrows IOException {
         ensureAvail(1);
         [++] = (byteb;
     }
 
     @Override
     public void write(final byte[] bthrows IOException {
         write(b, 0, b.length);
     }
 
     @Override
     public void write(final byte[] bfinal int offfinal int lenthrows IOException {
         ensureAvail(len);
         System.arraycopy(bofflen);
          += len;
     }
 
     @Override
     public void writeBoolean(final boolean vthrows IOException {
         ensureAvail(1);
         [++] = (byte) (v ? 1 : 0);
     }
 
     @Override
     public void writeByte(final int vthrows IOException {
         ensureAvail(1);
         [++] = (byte) (v);
     }
 
     @Override
     public void writeShort(final int vthrows IOException {
         ensureAvail(2);
         [++] = (byte) (0xff & (v >> 8));
         [++] = (byte) (0xff & (v));
     }
 
     @Override
     public void writeChar(final int vthrows IOException {
        writeInt(v);
    }
    @Override
    public void writeInt(final int vthrows IOException {
        ensureAvail(4);
        [++] = (byte) (0xff & (v >> 24));
        [++] = (byte) (0xff & (v >> 16));
        [++] = (byte) (0xff & (v >> 8));
        [++] = (byte) (0xff & (v));
    }
    @Override
    public void writeLong(final long vthrows IOException {
        ensureAvail(8);
        [++] = (byte) (0xff & (v >> 56));
        [++] = (byte) (0xff & (v >> 48));
        [++] = (byte) (0xff & (v >> 40));
        [++] = (byte) (0xff & (v >> 32));
        [++] = (byte) (0xff & (v >> 24));
        [++] = (byte) (0xff & (v >> 16));
        [++] = (byte) (0xff & (v >> 8));
        [++] = (byte) (0xff & (v));
    }
    @Override
    public void writeFloat(final float vthrows IOException {
        ensureAvail(4);
        writeInt(Float.floatToIntBits(v));
    }
    @Override
    public void writeDouble(final double vthrows IOException {
        ensureAvail(8);
        writeLong(Double.doubleToLongBits(v));
    }
    @Override
    public void writeBytes(final String sthrows IOException {
        writeUTF(s);
    }
    @Override
    public void writeChars(final String sthrows IOException {
        writeUTF(s);
    }
    @Override
    public void writeUTF(final String sthrows IOException {
        final int len = s.length();
        Utils.packInt((DataOutput)thislen);
        for (int i = 0; i < leni++) {
            int c = (ints.charAt(i); //TODO investigate if c could be negative here
            Utils.packInt((DataOutput)thisc);
        }
    }
New to GrepCode? Check out our FAQ X