Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2009 Red Hat, Inc.
   *
   * Red Hat licenses this file to you 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.iq80.leveldb.util;
 
 
 public class BasicSliceOutput extends SliceOutput
 {
     private final Slice slice;
     private int size;
 
     protected BasicSliceOutput(Slice slice)
     {
         this. = slice;
     }
 
     @Override
     public void reset()
     {
          = 0;
     }
 
     @Override
     public int size()
     {
         return ;
     }
 
     @Override
     public boolean isWritable()
     {
         return writableBytes() > 0;
     }
 
     @Override
     public int writableBytes()
     {
         return .length() - ;
     }
 
     @Override
     public void writeByte(int value)
     {
         .setByte(++, value);
     }
 
     @Override
     public void writeShort(int value)
     {
         .setShort(value);
          += 2;
     }
 
     @Override
     public void writeInt(int value)
     {
         .setInt(value);
          += 4;
     }
 
     @Override
     public void writeLong(long value)
     {
         .setLong(value);
          += 8;
     }
 
     @Override
     public void writeBytes(byte[] sourceint sourceIndexint length)
     {
         .setBytes(sourcesourceIndexlength);
          += length;
     }
 
     @Override
     public void writeBytes(byte[] source)
     {
         writeBytes(source, 0, source.length);
     }
 
     @Override
    public void writeBytes(Slice source)
    {
        writeBytes(source, 0, source.length());
    }
    @Override
    public void writeBytes(SliceInput sourceint length)
    {
        if (length > source.available()) {
            throw new IndexOutOfBoundsException();
        }
        writeBytes(source.readBytes(length));
    }
    @Override
    public void writeBytes(Slice sourceint sourceIndexint length)
    {
        .setBytes(sourcesourceIndexlength);
         += length;
    }
    @Override
    public void writeBytes(ByteBuffer source)
    {
        int length = source.remaining();
        .setBytes(source);
         += length;
    }
    @Override
    public int writeBytes(InputStream inint length)
            throws IOException
    {
        int writtenBytes = .setBytes(inlength);
        if (writtenBytes > 0) {
             += writtenBytes;
        }
        return writtenBytes;
    }
    @Override
    public int writeBytes(ScatteringByteChannel inint length)
            throws IOException
    {
        int writtenBytes = .setBytes(inlength);
        if (writtenBytes > 0) {
             += writtenBytes;
        }
        return writtenBytes;
    }
    @Override
    public int writeBytes(FileChannel inint positionint length)
            throws IOException
    {
        int writtenBytes = .setBytes(inpositionlength);
        if (writtenBytes > 0) {
             += writtenBytes;
        }
        return writtenBytes;
    }
    @Override
    public void writeZero(int length)
    {
        if (length == 0) {
            return;
        }
        if (length < 0) {
            throw new IllegalArgumentException(
                    "length must be 0 or greater than 0.");
        }
        int nLong = length >>> 3;
        int nBytes = length & 7;
        for (int i = nLongi > 0; i--) {
            writeLong(0);
        }
        if (nBytes == 4) {
            writeInt(0);
        }
        else if (nBytes < 4) {
            for (int i = nBytesi > 0; i--) {
                writeByte((byte) 0);
            }
        }
        else {
            writeInt(0);
            for (int i = nBytes - 4; i > 0; i--) {
                writeByte((byte) 0);
            }
        }
    }
    @Override
    public Slice slice()
    {
        return .slice(0, );
    }
    @Override
    public ByteBuffer toByteBuffer()
    {
        return .toByteBuffer(0, );
    }
    @Override
    public String toString()
    {
        return getClass().getSimpleName() + '(' +
                "size=" +  + ", " +
                "capacity=" + .length() +
                ')';
    }
    public String toString(Charset charset)
    {
        return .toString(0, charset);
    }
New to GrepCode? Check out our FAQ X