com.github.junrar.unpack.vm.BitInput Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of junrar Show documentation
Show all versions of junrar Show documentation
rar decompression library in plain java
/*
* Copyright (c) 2007 innoSysTec (R) GmbH, Germany. All rights reserved.
* Original author: Edmund Wagner
* Creation date: 31.05.2007
*
* Source: $HeadURL$
* Last changed: $LastChangedDate$
*
* the unrar licence applies to all junrar source and binary distributions
* you are not allowed to use this source to re-create the RAR compression algorithm
*
* Here some html entities which can be used for escaping javadoc tags:
* "&": "&" or "&"
* "<": "<" or "<"
* ">": ">" or ">"
* "@": "@"
*/
package com.github.junrar.unpack.vm;
/**
* DOCUMENT ME
*
* @author $LastChangedBy$
* @version $LastChangedRevision$
*/
public class BitInput {
/**
* the max size of the input
*/
public static final int MAX_SIZE = 0x8000;
protected int inAddr;
protected int inBit;
protected byte[] inBuf;
/**
*
*/
public void InitBitInput()
{
inAddr=0;
inBit=0;
}
/**
* @param Bits
*/
public void addbits(int Bits)
{
Bits+=inBit;
inAddr+=Bits>>3;
inBit=Bits&7;
}
/**
* @return the bits (unsigned short)
*/
public int getbits()
{
// int BitField=0;
// BitField|=(int)(inBuf[inAddr] << 16)&0xFF0000;
// BitField|=(int)(inBuf[inAddr+1] << 8)&0xff00;
// BitField|=(int)(inBuf[inAddr+2])&0xFF;
// BitField >>>= (8-inBit);
// return (BitField & 0xffff);
return (((((inBuf[inAddr] & 0xff) << 16) +
((inBuf[inAddr+1] & 0xff) << 8) +
((inBuf[inAddr+2] & 0xff))) >>> (8-inBit)) & 0xffff);
}
/**
*
*/
public BitInput()
{
inBuf=new byte[MAX_SIZE];
}
/**
* @param Bits add the bits
*/
public void faddbits(int Bits)
{
addbits(Bits);
}
/**
* @return get the bits
*/
public int fgetbits()
{
return(getbits());
}
/**
* Indicates an Overfow
* @param IncPtr how many bytes to inc
* @return true if an Oververflow would occur
*/
public boolean Overflow(int IncPtr) {
return(inAddr+IncPtr>=MAX_SIZE);
}
public byte[] getInBuf()
{
return inBuf;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy