diff --git a/libbuild/J7Zip-modified/.gitignore b/libbuild/J7Zip-modified/.gitignore deleted file mode 100755 index e2cae228c8..0000000000 --- a/libbuild/J7Zip-modified/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/build/ -/dist/ diff --git a/libbuild/J7Zip-modified/build.xml b/libbuild/J7Zip-modified/build.xml deleted file mode 100644 index 27517541c2..0000000000 --- a/libbuild/J7Zip-modified/build.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - J7Zip library for YaCy sevenzipParser (not available in external repositories) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libbuild/J7Zip-modified/src/Common/BoolVector.java b/libbuild/J7Zip-modified/src/Common/BoolVector.java deleted file mode 100644 index 903c1b24ea..0000000000 --- a/libbuild/J7Zip-modified/src/Common/BoolVector.java +++ /dev/null @@ -1,101 +0,0 @@ -package Common; - -import java.util.Collection; -import java.util.Iterator; - -public class BoolVector { - - protected boolean[] data; - int capacityIncr = 10; - int elt = 0; - - public BoolVector() { - this.data = new boolean[10]; - } - - public BoolVector(int size) { - this.data = new boolean[size]; - } - - public int size() { - return elt; - } - - public void ensureAdditionalCapacity(int addCapacity) { - ensureCapacity(data.length + addCapacity); - } - - private void ensureCapacity(int minCapacity) { - int oldCapacity = data.length; - if (minCapacity > oldCapacity) { - boolean [] oldData = data; - int newCapacity = oldCapacity + capacityIncr; - if (newCapacity < minCapacity) { - newCapacity = minCapacity; - } - data = new boolean[newCapacity]; - System.arraycopy(oldData, 0, data, 0, elt); - } - } - - public boolean get(int index) { - if (index >= elt) - throw new ArrayIndexOutOfBoundsException(index); - - return data[index]; - } - - public void Reserve(int s) { - ensureCapacity(s); - } - - public void add(boolean b) { - ensureCapacity(elt + 1); - data[elt++] = b; - } - - public void addAll(Collection c) { - ensureCapacity(elt + c.size()); - Iterator it = c.iterator(); - while (it.hasNext()) - data[elt++] = ((Boolean)it.next()).booleanValue(); - } - - public void addAll(Boolean[] b) { - ensureCapacity(elt + b.length); - for (int i=0; i= data.length) - throw new ArrayIndexOutOfBoundsException(index); - data[index] = value; - elt = index + 1; - } - - public void setRange(int start, boolean value) { - setRange(start, data.length - start, value); - } - - public void setRange(int start, int length, boolean value) { - if (start + length > data.length) - throw new ArrayIndexOutOfBoundsException("start = " + start + ", length = " + length); - for (int i=0; i>> 1) ^ 0xEDB88320; - else - r >>>= 1; - } - Table[i] = r; - } - } - - int _value = -1; - - public void Init() { - _value = -1; - } - - public void UpdateByte(int b) { - _value = Table[(_value ^ b) & 0xFF] ^ (_value >>> 8); - } - - public void UpdateUInt32(int v) { - for (int i = 0; i < 4; i++) - UpdateByte((v >> (8 * i)) & 0xFF ); - } - - public void UpdateUInt64(long v) { - for (int i = 0; i < 8; i++) - UpdateByte((int)((v >> (8 * i))) & 0xFF); - } - - public int GetDigest() { - return _value ^ (-1); - } - - public void Update(byte[] data, int size) { - for (int i = 0; i < size; i++) - _value = Table[(_value ^ data[i]) & 0xFF] ^ (_value >>> 8); - } - - public void Update(byte[] data) { - for (int i = 0; i < data.length; i++) - _value = Table[(_value ^ data[i]) & 0xFF] ^ (_value >>> 8); - } - - public void Update(byte[] data, int offset, int size) { - for (int i = 0; i < size; i++) - _value = Table[(_value ^ data[offset + i]) & 0xFF] ^ (_value >>> 8); - } - - public static int CalculateDigest(byte [] data, int size) { - CRC crc = new CRC(); - crc.Update(data, size); - return crc.GetDigest(); - } - - public static boolean VerifyDigest(int digest, byte [] data, int size) { - return (CalculateDigest(data, size) == digest); - } - - public String toString() { - return Integer.toHexString(GetDigest()); - } -} diff --git a/libbuild/J7Zip-modified/src/Common/IntVector.java b/libbuild/J7Zip-modified/src/Common/IntVector.java deleted file mode 100644 index c7d606bc69..0000000000 --- a/libbuild/J7Zip-modified/src/Common/IntVector.java +++ /dev/null @@ -1,129 +0,0 @@ -package Common; - -import java.util.Collection; -import java.util.Iterator; - -public class IntVector { - protected int[] data = new int[10]; - int capacityIncr = 10; - int elt = 0; - - public IntVector() { - } - - public IntVector(int size) { - this.data = new int[size]; - } - - public int size() { - return elt; - } - - public void ensureAdditionalCapacity(int addCapacity) { - ensureCapacity(data.length + addCapacity); - } - - private void ensureCapacity(int minCapacity) { - int oldCapacity = data.length; - if (minCapacity > oldCapacity) { - int [] oldData = data; - int newCapacity = oldCapacity + capacityIncr; - if (newCapacity < minCapacity) { - newCapacity = minCapacity; - } - data = new int[newCapacity]; - System.arraycopy(oldData, 0, data, 0, elt); - } - } - - public int get(int index) { - if (index >= elt) - throw new ArrayIndexOutOfBoundsException(index); - - return data[index]; - } - - public void Reserve(int s) { - ensureCapacity(s); - } - - public void add(int b) { - ensureCapacity(elt + 1); - data[elt++] = b; - } - - public void addAll(Collection c) { - ensureCapacity(elt + c.size()); - Iterator it = c.iterator(); - while (it.hasNext()) - data[elt++] = ((Integer)it.next()).intValue(); - } - - public void addAll(Integer[] b) { - ensureCapacity(elt + b.length); - for (int i=0; i= data.length) - throw new ArrayIndexOutOfBoundsException(index); - data[index] = value; - elt = index + 1; - } - - public void setRange(int start, int value) { - setRange(start, data.length - start, value); - } - - public void setRange(int start, int length, int value) { - if (start + length > data.length) - throw new ArrayIndexOutOfBoundsException("start = " + start + ", length = " + length); - for (int i=0; i= elt) - throw new ArrayIndexOutOfBoundsException(index); - int oldValue = data[index]; - - int numMoved = elt - index - 1; - Integer n = Integer.valueOf(elt); - if (numMoved > 0) - System.arraycopy(n, index+1, n, index,numMoved); - elt = n.intValue(); - // data[--elt] = null; // Let gc do its work - - return oldValue; - } - -} diff --git a/libbuild/J7Zip-modified/src/Common/LimitedSequentialInStream.java b/libbuild/J7Zip-modified/src/Common/LimitedSequentialInStream.java deleted file mode 100644 index 54492a6626..0000000000 --- a/libbuild/J7Zip-modified/src/Common/LimitedSequentialInStream.java +++ /dev/null @@ -1,54 +0,0 @@ -package Common; - -import java.io.InputStream; - -public class LimitedSequentialInStream extends InputStream { - final InputStream _stream; // ISequentialInStream - final long _size; - long _pos; - boolean _wasFinished; - - public LimitedSequentialInStream(InputStream stream, long streamSize) { - _stream = stream; - _size = streamSize; - _pos = 0; - _wasFinished = false; - } - - /* - public void SetStream(InputStream stream) { // ISequentialInStream - _stream = stream; - } - - public void Init(long streamSize) { - _size = streamSize; - _pos = 0; - _wasFinished = false; - }*/ - - public int read() throws java.io.IOException { - int ret = _stream.read(); - if (ret == -1) _wasFinished = true; - return ret; - } - - public int read(byte [] data,int off, int size) throws java.io.IOException { - long sizeToRead2 = (_size - _pos); - if (size < sizeToRead2) sizeToRead2 = size; - - int sizeToRead = (int)sizeToRead2; - - if (sizeToRead > 0) { - int realProcessedSize = _stream.read(data, off, sizeToRead); - if (realProcessedSize == -1) { - _wasFinished = true; - return -1; - } - _pos += realProcessedSize; - return realProcessedSize; - } - - return -1; // EOF - } -} - diff --git a/libbuild/J7Zip-modified/src/Common/LockedInStream.java b/libbuild/J7Zip-modified/src/Common/LockedInStream.java deleted file mode 100644 index 76eeec588a..0000000000 --- a/libbuild/J7Zip-modified/src/Common/LockedInStream.java +++ /dev/null @@ -1,38 +0,0 @@ -package Common; - -import java.io.IOException; -import SevenZip.IInStream; - -public class LockedInStream { - - final IInStream _stream; - - public LockedInStream(IInStream stream) { - this._stream = stream; - } - /* - public void Init(IInStream stream) { - _stream = stream; - }*/ - - /* really too slow, don't use ! - public synchronized int read(long startPos) throws java.io.IOException - { - // NWindows::NSynchronization::CCriticalSectionLock lock(_criticalSection); - _stream.Seek(startPos, IInStream.STREAM_SEEK_SET); - return _stream.read(); - } - */ - - public synchronized int read(long startPos, byte [] data, int size) throws IOException { - // NWindows::NSynchronization::CCriticalSectionLock lock(_criticalSection); - _stream.Seek(startPos, IInStream.STREAM_SEEK_SET); - return _stream.read(data,0, size); - } - - public synchronized int read(long startPos, byte [] data, int off, int size) throws IOException { - // NWindows::NSynchronization::CCriticalSectionLock lock(_criticalSection); - _stream.Seek(startPos, IInStream.STREAM_SEEK_SET); - return _stream.read(data,off, size); - } -} diff --git a/libbuild/J7Zip-modified/src/Common/LockedSequentialInStreamImp.java b/libbuild/J7Zip-modified/src/Common/LockedSequentialInStreamImp.java deleted file mode 100644 index e0689f739e..0000000000 --- a/libbuild/J7Zip-modified/src/Common/LockedSequentialInStreamImp.java +++ /dev/null @@ -1,41 +0,0 @@ -package Common; - -import java.io.InputStream; - -public class LockedSequentialInStreamImp extends InputStream { - final LockedInStream _lockedInStream; - long _pos; - - public LockedSequentialInStreamImp(LockedInStream lockedInStream, long startPos) { - _lockedInStream = lockedInStream; - _pos = startPos; - } - - /* - public void Init(LockedInStream lockedInStream, long startPos) { - _lockedInStream = lockedInStream; - _pos = startPos; - }*/ - - public int read() throws java.io.IOException { - throw new java.io.IOException("LockedSequentialInStreamImp : read() not implemented"); - /* - int ret = _lockedInStream.read(_pos); - if (ret == -1) return -1; // EOF - - _pos += 1; - - return ret; - */ - } - - public int read(byte [] data, int off, int size) throws java.io.IOException { - int realProcessedSize = _lockedInStream.read(_pos, data,off, size); - if (realProcessedSize == -1) return -1; // EOF - - _pos += realProcessedSize; - - return realProcessedSize; - } - -} diff --git a/libbuild/J7Zip-modified/src/Common/LongVector.java b/libbuild/J7Zip-modified/src/Common/LongVector.java deleted file mode 100644 index 86ea31d0c4..0000000000 --- a/libbuild/J7Zip-modified/src/Common/LongVector.java +++ /dev/null @@ -1,126 +0,0 @@ -package Common; - -import java.util.Collection; -import java.util.Iterator; - -public class LongVector { - protected long[] data = new long[10]; - int capacityIncr = 10; - int elt = 0; - - public LongVector() { - } - - public int size() { - return elt; - } - - public void ensureAdditionalCapacity(int addCapacity) { - ensureCapacity(data.length + addCapacity); - } - - private void ensureCapacity(int minCapacity) { - int oldCapacity = data.length; - if (minCapacity > oldCapacity) { - long [] oldData = data; - int newCapacity = oldCapacity + capacityIncr; - if (newCapacity < minCapacity) { - newCapacity = minCapacity; - } - data = new long[newCapacity]; - System.arraycopy(oldData, 0, data, 0, elt); - } - } - - public long get(int index) { - if (index >= elt) - throw new ArrayIndexOutOfBoundsException(index); - - return data[index]; - } - - public void Reserve(int s) { - ensureCapacity(s); - } - - public void add(long b) { - ensureCapacity(elt + 1); - data[elt++] = b; - } - - public void addAll(Collection c) { - ensureCapacity(elt + c.size()); - Iterator it = c.iterator(); - while (it.hasNext()) - data[elt++] = ((Long)it.next()).longValue(); - } - - public void addAll(Long[] b) { - ensureCapacity(elt + b.length); - for (int i=0; i= data.length) - throw new ArrayIndexOutOfBoundsException(index); - data[index] = value; - elt = index + 1; - } - - public void setRange(int start, long value) { - setRange(start, data.length - start, value); - } - - public void setRange(int start, int length, long value) { - if (start + length > data.length) - throw new ArrayIndexOutOfBoundsException("start = " + start + ", length = " + length); - for (int i=0; i= elt) - throw new ArrayIndexOutOfBoundsException(index); - long oldValue = data[index]; - - int numMoved = elt - index - 1; - Integer n = Integer.valueOf(elt); - if (numMoved > 0) - System.arraycopy(n, index+1, n, index,numMoved); - elt = n.intValue(); - // data[--elt] = null; // Let gc do its work - - return oldValue; - } - -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/Archive/Common/BindInfo.java b/libbuild/J7Zip-modified/src/SevenZip/Archive/Common/BindInfo.java deleted file mode 100644 index 79ff2ed4bb..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Archive/Common/BindInfo.java +++ /dev/null @@ -1,98 +0,0 @@ -package SevenZip.Archive.Common; - -import java.util.Vector; - -import Common.IntVector; - -public class BindInfo { - - public Vector Coders = new Vector(); - public Vector BindPairs = new Vector(); - public IntVector InStreams = new IntVector(); - public IntVector OutStreams = new IntVector(); - - public void Clear() { - Coders.clear(); - BindPairs.clear(); - InStreams.clear(); - OutStreams.clear(); - } - - public int FindBinderForInStream(int inStream) { - for (int i = 0; i < BindPairs.size(); i++) - if (((BindPair)BindPairs.get(i)).InIndex == inStream) - return i; - return -1; - } - - public int FindBinderForOutStream(int outStream) // const - { - for (int i = 0; i < BindPairs.size(); i++) - if (((BindPair)BindPairs.get(i)).OutIndex == outStream) - return i; - return -1; - } - - public int GetCoderInStreamIndex(int coderIndex) // const - { - int streamIndex = 0; - for (int i = 0; i < coderIndex; i++) - streamIndex += ((CoderStreamsInfo)Coders.get(i)).NumInStreams; - return streamIndex; - } - - public int GetCoderOutStreamIndex(int coderIndex) // const - { - int streamIndex = 0; - for (int i = 0; i < coderIndex; i++) - streamIndex += ((CoderStreamsInfo)Coders.get(i)).NumOutStreams; - return streamIndex; - } - - /** - * @param streamIndex - * @return the coder index number - */ - public int FindInStream(int streamIndex) { - for (int i=0; i -1 - { - sizes.add(0L); - sizePointers.add(-1); - } else { - sizes.add(srcSizes.get(i)); // sizes.Add(*srcSizes[i]); - sizePointers.add(sizes.Back()); // sizePointers.Add(&sizes.Back()); - } - } - } - - public void SetCoderInfo(LongVector inSizes, LongVector outSizes) { - SetSizes(inSizes, InSizes, InSizePointers, NumInStreams); - SetSizes(outSizes, OutSizes, OutSizePointers, NumOutStreams); - } -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/Archive/Common/CoderMixer2.java b/libbuild/J7Zip-modified/src/SevenZip/Archive/Common/CoderMixer2.java deleted file mode 100644 index e2ae4ef026..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Archive/Common/CoderMixer2.java +++ /dev/null @@ -1,12 +0,0 @@ -package SevenZip.Archive.Common; - -import Common.LongVector; - -public interface CoderMixer2 { - - void ReInit(); - - // void setCoderInfos(Vector decoders, Folder folderInfo, LongVector packSizes); - - void SetCoderInfo(int coderIndex,LongVector inSizes, LongVector outSizes); -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/Archive/Common/CoderMixer2ST.java b/libbuild/J7Zip-modified/src/SevenZip/Archive/Common/CoderMixer2ST.java deleted file mode 100644 index 700bcb587c..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Archive/Common/CoderMixer2ST.java +++ /dev/null @@ -1,270 +0,0 @@ -package SevenZip.Archive.Common; - -import SevenZip.HRESULT; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.Vector; - -import Common.LongVector; -import SevenZip.ICompressCoder2; -import SevenZip.ICompressCoder; -import SevenZip.ICompressSetInStream; -import SevenZip.ICompressSetOutStream; -import SevenZip.ICompressSetOutStreamSize; -import SevenZip.ICompressProgressInfo; - - -public class CoderMixer2ST implements ICompressCoder2 , CoderMixer2 { - - BindInfo _bindInfo = new BindInfo(); - Vector _coders = new Vector(); - int _mainCoderIndex; - - public CoderMixer2ST(BindInfo bindInfo) { - this._bindInfo = bindInfo; - } - - public void AddCoderCommon(boolean isMain) { - CoderStreamsInfo csi = _bindInfo.Coders.get(_coders.size()); - _coders.add(new STCoderInfo(csi.NumInStreams, csi.NumOutStreams, isMain)); - } - - public void AddCoder2(ICompressCoder2 coder, boolean isMain) { - AddCoderCommon(isMain); - _coders.lastElement().Coder2 = coder; - } - - public void AddCoder(ICompressCoder coder, boolean isMain) { - AddCoderCommon(isMain); - _coders.lastElement().Coder = coder; - } - - @Override - public void ReInit() { - } - - @Override - public void SetCoderInfo(int coderIndex,LongVector inSizes, LongVector outSizes) { - // _coders[coderIndex].SetCoderInfo(inSizes, outSizes); - _coders.get(coderIndex).SetCoderInfo(inSizes, outSizes); - } - - public int GetInStream( - Vector inStreams, - //Object useless_inSizes, // const UInt64 **inSizes, - int streamIndex, - InputStream [] inStreamRes) { - InputStream seqInStream; - int i; - for(i = 0; i < _bindInfo.InStreams.size(); i++) - if (_bindInfo.InStreams.get(i) == streamIndex) { - seqInStream = inStreams.get(i); - inStreamRes[0] = seqInStream; // seqInStream.Detach(); - return HRESULT.S_OK; - } - int binderIndex = _bindInfo.FindBinderForInStream(streamIndex); - if (binderIndex < 0) - return HRESULT.E_INVALIDARG; - - int coderIndex = _bindInfo.FindOutStream(_bindInfo.BindPairs.get(binderIndex).OutIndex); - if (coderIndex < 0) - return HRESULT.E_INVALIDARG; - - CoderInfo coder = _coders.get(coderIndex); - if (coder.Coder == null) - return HRESULT.E_NOTIMPL; - - seqInStream = (InputStream)coder.Coder; // coder.Coder.QueryInterface(IID_ISequentialInStream, &seqInStream); - if (seqInStream == null) - return HRESULT.E_NOTIMPL; - - int startIndex = _bindInfo.GetCoderInStreamIndex(coderIndex); - - if (coder.Coder == null) - return HRESULT.E_NOTIMPL; - - ICompressSetInStream setInStream = (ICompressSetInStream)coder.Coder; // coder.Coder.QueryInterface(IID_ICompressSetInStream, &setInStream); - if (setInStream == null) - return HRESULT.E_NOTIMPL; - - if (coder.NumInStreams > 1) - return HRESULT.E_NOTIMPL; - for (i = 0; i < (int)coder.NumInStreams; i++) { - InputStream [] tmp = new InputStream[1]; - int res = GetInStream(inStreams, /*useless_inSizes,*/ startIndex + i, tmp /* &seqInStream2 */ ); - if (res != HRESULT.S_OK) return res; - InputStream seqInStream2 = tmp[0]; - setInStream.SetInStream(seqInStream2); - //if (res != HRESULT.S_OK) return res; - } - inStreamRes[0] = seqInStream; // seqInStream.Detach(); - return HRESULT.S_OK; - } - - public int GetOutStream( - Vector outStreams, - //Object useless_outSizes, // const UInt64 **outSizes, - int streamIndex, - OutputStream [] outStreamRes) { - OutputStream seqOutStream; - int i; - for(i = 0; i < _bindInfo.OutStreams.size(); i++) - if (_bindInfo.OutStreams.get(i) == streamIndex) { - seqOutStream = outStreams.get(i); - outStreamRes[0] = seqOutStream; // seqOutStream.Detach(); - return HRESULT.S_OK; - } - int binderIndex = _bindInfo.FindBinderForOutStream(streamIndex); - if (binderIndex < 0) - return HRESULT.E_INVALIDARG; - - int coderIndex = _bindInfo.FindInStream(_bindInfo.BindPairs.get(binderIndex).InIndex); - if (coderIndex < 0 ) - return HRESULT.E_INVALIDARG; - - CoderInfo coder = _coders.get(coderIndex); - if (coder.Coder == null) - return HRESULT.E_NOTIMPL; - - try - { - seqOutStream = (OutputStream)coder.Coder; // coder.Coder.QueryInterface(IID_ISequentialOutStream, &seqOutStream); - } catch (java.lang.ClassCastException e) { - return HRESULT.E_NOTIMPL; - } - - int startIndex = _bindInfo.GetCoderOutStreamIndex(coderIndex); - - if (coder.Coder == null) - return HRESULT.E_NOTIMPL; - - ICompressSetOutStream setOutStream = null; - try { - setOutStream = (ICompressSetOutStream)coder.Coder; // coder.Coder.QueryInterface(IID_ICompressSetOutStream, &setOutStream); - } catch (java.lang.ClassCastException e) { - return HRESULT.E_NOTIMPL; - } - - if (coder.NumOutStreams > 1) - return HRESULT.E_NOTIMPL; - for (i = 0; i < (int)coder.NumOutStreams; i++) { - OutputStream [] tmp = new OutputStream[1]; - int res = GetOutStream(outStreams, /*useless_outSizes,*/ startIndex + i, tmp /* &seqOutStream2 */ ); - if (res != HRESULT.S_OK) return res; - OutputStream seqOutStream2 = tmp[0]; - res = setOutStream.SetOutStream(seqOutStream2); - if (res != HRESULT.S_OK) return res; - } - outStreamRes[0] = seqOutStream; // seqOutStream.Detach(); - return HRESULT.S_OK; - } - - @Override - public int Code( - Vector inStreams, - //Object useless_inSizes, // const UInt64 ** inSizes , - int numInStreams, - Vector outStreams, - //Object useless_outSizes, // const UInt64 ** /* outSizes */, - int numOutStreams, - ICompressProgressInfo progress) throws IOException { - if (numInStreams != _bindInfo.InStreams.size() || - numOutStreams != _bindInfo.OutStreams.size()) - return HRESULT.E_INVALIDARG; - - // Find main coder - int _mainCoderIndex = -1; - int i; - for (i = 0; i < _coders.size(); i++) - if (_coders.get(i).IsMain) { - _mainCoderIndex = i; - break; - } - if (_mainCoderIndex < 0) - for (i = 0; i < _coders.size(); i++) - if (_coders.get(i).NumInStreams > 1) { - if (_mainCoderIndex >= 0) - return HRESULT.E_NOTIMPL; - _mainCoderIndex = i; - } - if (_mainCoderIndex < 0) - _mainCoderIndex = 0; - - // _mainCoderIndex = 0; - // _mainCoderIndex = _coders.Size() - 1; - CoderInfo mainCoder = _coders.get(_mainCoderIndex); - - Vector seqInStreams = new Vector(); // CObjectVector< CMyComPtr > - Vector seqOutStreams = new Vector(); // CObjectVector< CMyComPtr > - int startInIndex = _bindInfo.GetCoderInStreamIndex(_mainCoderIndex); - int startOutIndex = _bindInfo.GetCoderOutStreamIndex(_mainCoderIndex); - for (i = 0; i < (int)mainCoder.NumInStreams; i++) { - InputStream tmp [] = new InputStream[1]; - int res = GetInStream(inStreams, /*useless_inSizes,*/ startInIndex + i, tmp /* &seqInStream */ ); - if (res != HRESULT.S_OK) return res; - InputStream seqInStream = tmp[0]; - seqInStreams.add(seqInStream); - } - for (i = 0; i < (int)mainCoder.NumOutStreams; i++) { - OutputStream tmp [] = new OutputStream[1]; - int res = GetOutStream(outStreams, /*useless_outSizes,*/ startOutIndex + i, tmp); - if (res != HRESULT.S_OK) return res; - OutputStream seqOutStream = tmp[0]; - seqOutStreams.add(seqOutStream); - } - Vector seqInStreamsSpec = new Vector(); - Vector seqOutStreamsSpec = new Vector(); - for (i = 0; i < (int)mainCoder.NumInStreams; i++) - seqInStreamsSpec.add(seqInStreams.get(i)); - for (i = 0; i < (int)mainCoder.NumOutStreams; i++) - seqOutStreamsSpec.add(seqOutStreams.get(i)); - - for (i = 0; i < _coders.size(); i++) { - if (i == _mainCoderIndex) - continue; - CoderInfo coder = _coders.get(i); - - ICompressSetOutStreamSize setOutStreamSize = null; - try - { - setOutStreamSize = (ICompressSetOutStreamSize)coder.Coder; - - /*int res =*/ setOutStreamSize.SetOutStreamSize(coder.OutSizePointers.get(0)); - //if (res != HRESULT.S_OK) return res; - } catch (java.lang.ClassCastException e) { - // nothing to do - } - } - if (mainCoder.Coder != null) { - /*int res =*/ mainCoder.Coder.Code( - seqInStreamsSpec.get(0), - seqOutStreamsSpec.get(0), - // TBD mainCoder.InSizePointers.get(0), - mainCoder.OutSizePointers.get(0), - progress); - //if (res != HRESULT.S_OK) return res; - } else { - /*int res =*/ mainCoder.Coder2.Code( - seqInStreamsSpec, // &seqInStreamsSpec.Front( - //mainCoder.InSizePointers.Front(), // &mainCoder.InSizePointers.Front() - mainCoder.NumInStreams, - seqOutStreamsSpec, // &seqOutStreamsSpec.Front() - //mainCoder.OutSizePointers.Front(), // &mainCoder.OutSizePointers.Front() - mainCoder.NumOutStreams, - progress); - //if (res != HRESULT.S_OK) return res; - } - - OutputStream stream = seqOutStreams.firstElement(); - stream.flush(); - - return HRESULT.S_OK; - } - - @Override - public void close() { - - } -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/Archive/Common/CoderStreamsInfo.java b/libbuild/J7Zip-modified/src/SevenZip/Archive/Common/CoderStreamsInfo.java deleted file mode 100644 index d61716760a..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Archive/Common/CoderStreamsInfo.java +++ /dev/null @@ -1,19 +0,0 @@ -package SevenZip.Archive.Common; - -public class CoderStreamsInfo { - public int NumInStreams; - public int NumOutStreams; - - public CoderStreamsInfo() { - NumInStreams = 0; - NumOutStreams = 0; - } - - public boolean equals(Object obj) { - if (obj instanceof CoderStreamsInfo) { - CoderStreamsInfo arg = (CoderStreamsInfo)obj; - return (this.NumInStreams == arg.NumInStreams) && (this.NumOutStreams != arg.NumOutStreams); - } - return super.equals(obj); - } -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/Archive/Common/FilterCoder.java b/libbuild/J7Zip-modified/src/SevenZip/Archive/Common/FilterCoder.java deleted file mode 100644 index 46ffc188e3..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Archive/Common/FilterCoder.java +++ /dev/null @@ -1,147 +0,0 @@ -package SevenZip.Archive.Common; - - -import SevenZip.HRESULT; -import java.io.IOException; -import SevenZip.ICompressCoder; -import SevenZip.ICompressSetOutStream; - -/* - // #ifdef _ST_MODE - public ICompressSetInStream, - public ISequentialInStream, - public ICompressSetOutStream, - public ISequentialOutStream, - public IOutStreamFlush, - // #endif - */ -public class FilterCoder extends java.io.OutputStream implements ICompressCoder , ICompressSetOutStream { - - public SevenZip.ICompressFilter Filter = null; - - java.io.OutputStream _outStream = null; - int _bufferPos; // UInt32 - - boolean _outSizeIsDefined; - long _outSize; - long _nowPos64; - - int Init() // HRESULT - { - _nowPos64 = 0; - _outSizeIsDefined = false; - return Filter.Init(); - } - - // ICompressCoder - public void Code( - java.io.InputStream inStream, // , ISequentialInStream - java.io.OutputStream outStream, // ISequentialOutStream - long outSize, SevenZip.ICompressProgressInfo progress) throws java.io.IOException { - throw new java.io.IOException("Not implemented"); - } - - // java.io.OutputStream - public void write(int b) { - throw new UnknownError("FilterCoder write"); - } - - public void write(byte b[], int off, int size) throws IOException { - if (b == null) { - throw new NullPointerException(); - } else if ((off < 0) || (off > b.length) || (size < 0) || - ((off + size) > b.length) || ((off + size) < 0)) { - throw new IndexOutOfBoundsException(); - } else if (size == 0) { - return; - } - - if (off != 0) throw new IOException("FilterCoder - off <> 0"); - - byte [] cur_data = b; - int cur_off = 0; - while(size > 0) { - int sizeMax = kBufferSize - _bufferPos; - int sizeTemp = size; - if (sizeTemp > sizeMax) - sizeTemp = sizeMax; - System.arraycopy(cur_data, cur_off, _buffer, _bufferPos , sizeTemp); // memmove(_buffer + _bufferPos, data, sizeTemp); - size -= sizeTemp; - cur_off = cur_off + sizeTemp; - int endPos = _bufferPos + sizeTemp; - _bufferPos = Filter.Filter(_buffer, endPos); - if (_bufferPos == 0) { - _bufferPos = endPos; - break; - } - if (_bufferPos > endPos) { - if (size != 0) - throw new IOException("FilterCoder - write() : size <> 0"); // return HRESULT.E_FAIL; - break; - } - - WriteWithLimit(_outStream, _bufferPos); - - int i = 0; - while(_bufferPos < endPos) - _buffer[i++] = _buffer[_bufferPos++]; - _bufferPos = i; - } - - // return HRESULT.S_OK; - } - - void WriteWithLimit(java.io.OutputStream outStream, int size) throws IOException { - if (_outSizeIsDefined) { - long remSize = _outSize - _nowPos64; - if (size > remSize) - size = (int)remSize; - } - - outStream.write(_buffer,0,size); - - _nowPos64 += size; - } - - byte [] _buffer; - - static final int kBufferSize = 1 << 17; - public FilterCoder() { - _buffer = new byte[kBufferSize]; - } - - - // ICompressSetOutStream - public int SetOutStream(java.io.OutputStream outStream) { - _bufferPos = 0; - _outStream = outStream; - return Init(); - } - - public int ReleaseOutStream() throws IOException { - if (_outStream != null) _outStream.close(); // Release() - _outStream = null; - return HRESULT.S_OK; - } - - public void flush() throws IOException { - if (_bufferPos != 0) { - int endPos = Filter.Filter(_buffer, _bufferPos); - if (endPos > _bufferPos) { - for (; _bufferPos < endPos; _bufferPos++) - _buffer[_bufferPos] = 0; - if (Filter.Filter(_buffer, endPos) != endPos) - throw new IOException("FilterCoder - flush() : E_FAIL"); // return HRESULT.E_FAIL; - } - _outStream.write(_buffer,0,_bufferPos); - _bufferPos = 0; - } - _outStream.flush(); - } - - public void close() throws IOException { - if (_outStream != null) _outStream.close(); // Release() - _outStream = null; - } - -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/Archive/Common/OutStreamWithCRC.java b/libbuild/J7Zip-modified/src/SevenZip/Archive/Common/OutStreamWithCRC.java deleted file mode 100644 index d42319bac6..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Archive/Common/OutStreamWithCRC.java +++ /dev/null @@ -1,55 +0,0 @@ -package SevenZip.Archive.Common; - -import java.io.IOException; -import java.io.OutputStream; - -import Common.CRC; - -public class OutStreamWithCRC extends OutputStream { - - private OutputStream _stream; - private long _size; - private CRC _crc = new CRC(); - private boolean _calculateCrc; - - public void write(int b) throws IOException { - throw new IOException("OutStreamWithCRC - write() not implemented"); - } - - public void write(byte [] data,int off, int size) throws IOException { - if (_stream != null) - _stream.write(data, off,size); - if (_calculateCrc) - _crc.Update(data, off, size); - - _size += size; - } - - public void setStream(OutputStream stream) { _stream = stream; } - - public void reset() { reset(true); } - - public void reset(boolean calculateCrc) { - _size = 0; - _calculateCrc = calculateCrc; - _crc.Init(); - } - - public void releaseStream() throws IOException { - // _stream.Release(); - if (_stream != null) _stream.close(); - _stream = null; - } - - public long getSize() { - return _size; - } - - public int getCRC() { - return _crc.GetDigest(); - } - - public void resetCRC() { - _crc.Init(); - } -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/Archive/Common/STCoderInfo.java b/libbuild/J7Zip-modified/src/SevenZip/Archive/Common/STCoderInfo.java deleted file mode 100644 index 1d9ada4256..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Archive/Common/STCoderInfo.java +++ /dev/null @@ -1,10 +0,0 @@ -package SevenZip.Archive.Common; - -public class STCoderInfo extends CoderInfo { - boolean IsMain; - - public STCoderInfo(int numInStreams, int numOutStreams, boolean isMain) { - super(numInStreams, numOutStreams); - this.IsMain = isMain; - } -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/Archive/IArchiveExtractCallback.java b/libbuild/J7Zip-modified/src/SevenZip/Archive/IArchiveExtractCallback.java deleted file mode 100644 index 43317602da..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Archive/IArchiveExtractCallback.java +++ /dev/null @@ -1,12 +0,0 @@ -package SevenZip.Archive; - -import java.io.IOException; -import java.io.OutputStream; - -public interface IArchiveExtractCallback extends SevenZip.IProgress { - - OutputStream GetStream(int index, int askExtractMode) throws IOException; - - void PrepareOperation(int askExtractMode); - void SetOperationResult(int resultEOperationResult) throws IOException; -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/Archive/IInArchive.java b/libbuild/J7Zip-modified/src/SevenZip/Archive/IInArchive.java deleted file mode 100644 index e29cbad36f..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Archive/IInArchive.java +++ /dev/null @@ -1,28 +0,0 @@ -package SevenZip.Archive; - -import java.io.IOException; - -public interface IInArchive { - public final static int NExtract_NAskMode_kExtract = 0; - public final static int NExtract_NAskMode_kTest = 1; - public final static int NExtract_NAskMode_kSkip = 2; - - public final static int NExtract_NOperationResult_kOK = 0; - public final static int NExtract_NOperationResult_kUnSupportedMethod = 1; - public final static int NExtract_NOperationResult_kDataError = 2; - public final static int NExtract_NOperationResult_kCRCError = 3; - - // Static-SFX (for Linux) can be big. - public final long kMaxCheckStartPosition = 1 << 22; - - public SevenZipEntry getEntry(int index); - - public int size(); - - public void close() throws IOException ; - - public void Extract(int [] indices, int numItems, - int testModeSpec, IArchiveExtractCallback extractCallbackSpec) throws java.io.IOException; - -} - diff --git a/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/AltCoderInfo.java b/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/AltCoderInfo.java deleted file mode 100644 index 627232a074..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/AltCoderInfo.java +++ /dev/null @@ -1,18 +0,0 @@ -package SevenZip.Archive.SevenZip; - -import java.io.ByteArrayOutputStream; - -public class AltCoderInfo { - public MethodID MethodID; - public ByteArrayOutputStream Properties; - - public AltCoderInfo(int size) { - MethodID = new MethodID(null); - Properties = new ByteArrayOutputStream(size); - } - - public AltCoderInfo() { - MethodID = new MethodID(null); - Properties = new ByteArrayOutputStream(); - } -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/ArchiveDB.java b/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/ArchiveDB.java deleted file mode 100644 index db7e8eca2f..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/ArchiveDB.java +++ /dev/null @@ -1,725 +0,0 @@ -package SevenZip.Archive.SevenZip; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Vector; - -import Common.BoolVector; -import Common.CRC; -import Common.IntVector; -import Common.LongVector; - -import SevenZip.IInStream; -import SevenZip.Archive.Common.BindPair; - -public class ArchiveDB { - - public static final int kNumNoIndex = 0xFFFFFFFF; - - public final LongVector PackSizes = new LongVector(); - public final BoolVector PackCRCsDefined = new BoolVector(); - public final IntVector PackCRCs = new IntVector(); - public final IntVector NumUnPackStreamsVector = new IntVector(); - public final Vector Files = new Vector(); - public Vector Folders = new Vector(); - - public final IntVector FolderStartPackStreamIndex = new IntVector(); - public final IntVector FolderStartFileIndex = new IntVector(); - public final IntVector FileIndexToFolderIndexMap = new IntVector(); - - private final InStream inStream; - private final InArchiveInfo ArchiveInfo = new InArchiveInfo(); - private final LongVector PackStreamStartPositions = new LongVector(); - - public ArchiveDB(InStream inStream) throws IOException { - this.inStream = inStream; - this.ArchiveInfo.StartPosition = this.inStream.archiveBeginStreamPosition; - - byte [] btmp = new byte[2]; - int realProcessedSize = this.inStream.ReadDirect(btmp, 2); - if (realProcessedSize != 2) - throw new IOException("Unexpected End Of Archive"); // throw CInArchiveException(CInArchiveException::kUnexpectedEndOfArchive); - - this.ArchiveInfo.ArchiveVersion_Major = btmp[0]; - this.ArchiveInfo.ArchiveVersion_Minor = btmp[1]; - - if (this.ArchiveInfo.ArchiveVersion_Major != Header.kMajorVersion) - throw new IOException("Unsupported Version: " + - this.ArchiveInfo.ArchiveVersion_Major + "." + - this.ArchiveInfo.ArchiveVersion_Minor); - - int crcFromArchive = this.inStream.SafeReadDirectUInt32(); - long nextHeaderOffset = this.inStream.SafeReadDirectUInt64(); - long nextHeaderSize = this.inStream.SafeReadDirectUInt64(); - int nextHeaderCRC = this.inStream.SafeReadDirectUInt32(); - - this.ArchiveInfo.StartPositionAfterHeader = this.inStream.position; - - CRC crc = new CRC(); - crc.UpdateUInt64(nextHeaderOffset); - crc.UpdateUInt64(nextHeaderSize); - crc.UpdateUInt32(nextHeaderCRC); - - if (crc.GetDigest() != crcFromArchive) - throw new IOException("Incorrect Header, CRCs don't match: archive: " + - Integer.toHexString(crcFromArchive) + ", calculated: " + crc); // CInArchiveException(CInArchiveException::kIncorrectHeader); - - if (nextHeaderSize == 0) - return; - - if (nextHeaderSize >= 0xFFFFFFFFL) - throw new IOException("second header too big: " + nextHeaderSize); - - this.inStream.position = this.inStream.stream.Seek(nextHeaderOffset,IInStream.STREAM_SEEK_CUR); - - this.readNextStreamHeaders((int)nextHeaderSize, nextHeaderCRC); - this.readHeader(); - this.Fill(); - } - - private void readNextStreamHeaders(int nextHeaderSize, int nextHeaderCRC) throws IOException { - byte[] buffer = new byte[nextHeaderSize]; - - // SafeReadDirect(buffer2.data(), (int)nextHeaderSize); - if (!this.inStream.SafeReadDirect(buffer, nextHeaderSize)) - throw new IOException("Unexpected End Of Archive"); // throw CInArchiveException(CInArchiveException::kUnexpectedEndOfArchive); - - if (!CRC.VerifyDigest(nextHeaderCRC, buffer, nextHeaderSize)) - throw new IOException("Incorrect Header, CRCs don't match"); // CInArchiveException(CInArchiveException::kIncorrectHeader); - - // TODO: - StreamSwitch streamSwitch = new StreamSwitch(); - streamSwitch.Set(this.inStream, buffer); - - long type; - while ((type = this.inStream.ReadID()) != Header.NID.kHeader) { - if (type != Header.NID.kEncodedHeader) - throw new IOException("Incorrect Header"); - - Vector dataVector = this.ReadAndDecodePackedStreams( - this.ArchiveInfo.StartPositionAfterHeader, 1); - - if (dataVector.size() == 0) { - return; - } else if (dataVector.size() > 1) { - throw new IOException("Incorrect Header"); - } - streamSwitch.Set(this.inStream, (byte[])dataVector.firstElement()); // dataVector.Front() - } - - streamSwitch.close(); - } - - private void ReadArchiveProperties(InArchiveInfo archiveInfo) throws IOException { - while (this.inStream.ReadID() != Header.NID.kEnd) - this.inStream.SkeepData(); - } - - private void readHeader() throws IOException { - long type = this.inStream.ReadID(); - - if (type == Header.NID.kArchiveProperties) { - this.ReadArchiveProperties(this.ArchiveInfo); - type = this.inStream.ReadID(); - } - - Vector dataVector = new Vector(); - - if (type == Header.NID.kAdditionalStreamsInfo) { - dataVector.addAll(ReadAndDecodePackedStreams( - this.ArchiveInfo.StartPositionAfterHeader, 1)); - this.ArchiveInfo.DataStartPosition2 += this.ArchiveInfo.StartPositionAfterHeader; - type = this.inStream.ReadID(); - } - - LongVector unPackSizes = new LongVector(); - BoolVector digestsDefined = new BoolVector(); - IntVector digests = new IntVector(); - - if (type == Header.NID.kMainStreamsInfo) { - type = this.inStream.ReadID(); - assert (type == Header.NID.kPackInfo); - this.ReadPackInfo(this.PackSizes, this.PackCRCsDefined, this.PackCRCs, 0); - - type = this.inStream.ReadID(); - assert (type == Header.NID.kUnPackInfo); - this.Folders = ReadUnPackInfo(dataVector); - - type = this.inStream.ReadID(); - assert (type == Header.NID.kSubStreamsInfo); - this.ReadSubStreamsInfo(this.Folders, this.NumUnPackStreamsVector, unPackSizes, digestsDefined, digests); - - type = this.inStream.ReadID(); - assert (type == Header.NID.kEnd); - - this.ArchiveInfo.DataStartPosition += this.ArchiveInfo.StartPositionAfterHeader; - type = this.inStream.ReadID(); - } else { - for(int i = 0; i < this.Folders.size(); i++) { - this.NumUnPackStreamsVector.add(1); - Folder folder = (Folder)this.Folders.get(i); - unPackSizes.add(folder.GetUnPackSize()); - digestsDefined.add(folder.UnPackCRCDefined); - digests.add(folder.UnPackCRC); - } - } - - if (type == Header.NID.kEnd) - return; - if (type != Header.NID.kFilesInfo) - throw new IOException("Incorrect Header"); - - this.readFileDescriptions(dataVector, unPackSizes, digests, digestsDefined); - } - - private void readFileDescriptions( - Vector dataVector, - LongVector unPackSizes, - IntVector digests, - BoolVector digestsDefined) throws IOException { - - int numFiles = this.inStream.ReadNum(); - this.ArchiveInfo.FileInfoPopIDs.add(Header.NID.kSize); - if (!this.PackSizes.isEmpty()) - this.ArchiveInfo.FileInfoPopIDs.add(Header.NID.kPackInfo); - if (numFiles > 0 && !digests.isEmpty()) - this.ArchiveInfo.FileInfoPopIDs.add(Header.NID.kCRC); - - this.Files.clear(); - this.Files.ensureCapacity(numFiles); - for (int i=0; i folders, - IntVector numUnPackStreamsInFolders, - LongVector unPackSizes, - BoolVector digestsDefined, - IntVector digests) throws IOException { - numUnPackStreamsInFolders.clear(); - numUnPackStreamsInFolders.Reserve(folders.size()); - long type; - - while ((type = this.inStream.ReadID()) != Header.NID.kCRC && - type != Header.NID.kSize && - type != Header.NID.kEnd) { - if (type == Header.NID.kNumUnPackStream) { - for(int i = 0; i < folders.size(); i++) { - int value = this.inStream.ReadNum(); - numUnPackStreamsInFolders.add(value); - } - continue; - } - this.inStream.SkeepData(); - } - - if (numUnPackStreamsInFolders.isEmpty()) - for (int i=0; i folders = ReadUnPackInfo(null); - - type = this.inStream.ReadID(); - assert (type == Header.NID.kEnd); - - int packIndex = 0; - Decoder decoder = new Decoder(false); // _ST_MODE - - Vector dataVector = new Vector(); - long dataStartPos = baseOffset + ((dataStartPosIndex == 0) ? - this.ArchiveInfo.DataStartPosition : this.ArchiveInfo.DataStartPosition2); - for(int i=0; i InStream.kNumMax || unPackSize > 0xFFFFFFFFL) - throw new IOException("unPackSize too great: " + unPackSize); - - ByteArrayOutputStream baos = new ByteArrayOutputStream((int)unPackSize); - decoder.Decode( - this.inStream.stream, dataStartPos, - packSizes, packIndex, - folder, baos, null); - byte[] data; // TODO: stream belassen! - dataVector.add(data = baos.toByteArray()); - - if (folder.UnPackCRCDefined) - if (!CRC.VerifyDigest(folder.UnPackCRC, data, (int)unPackSize)) - throw new IOException("Incorrect Header, CRCs of packed folder don't match: archive: " + - Integer.toHexString(folder.UnPackCRC) + ", calculated: " + - Integer.toHexString(CRC.CalculateDigest(data, (int)unPackSize)) + - ". Either is the archive corrupted or an internal error occured"); - - for (int j = 0; j < folder.PackStreams.size(); j++) - dataStartPos += packSizes.get(packIndex++); - } - - return dataVector; - } - - private void ReadPackInfo( - LongVector packSizes, - BoolVector packCRCsDefined, - IntVector packCRCs, - int dataStartPosIndex) - throws IOException { - if (dataStartPosIndex == 0) { - this.ArchiveInfo.DataStartPosition = this.inStream.ReadNumber(); - } else { - this.ArchiveInfo.DataStartPosition2 = this.inStream.ReadNumber(); - } - int numPackStreams = this.inStream.ReadNum(); - - this.inStream.skipToAttribute(Header.NID.kSize); - - packSizes.clear(); - packSizes.Reserve(numPackStreams); - for(int i = 0; i < numPackStreams; i++) { - long size = this.inStream.ReadNumber(); - packSizes.add(size); - } - - long type; - while ((type = this.inStream.ReadID()) != Header.NID.kEnd) { - if (type == Header.NID.kCRC) { - packCRCs = this.inStream.ReadHashDigests(numPackStreams, packCRCsDefined); - continue; - } - this.inStream.SkeepData(); - } - if (packCRCsDefined.isEmpty()) { - packCRCsDefined.Reserve(numPackStreams); - packCRCsDefined.clear(); - packCRCs.Reserve(numPackStreams); - packCRCs.clear(); - for(int i = 0; i < numPackStreams; i++) { - packCRCsDefined.add(false); - packCRCs.add(0); - } - } - } - - private void ReadFileNames(Vector from) throws IOException { - StreamSwitch streamSwitch = new StreamSwitch(); - streamSwitch.Set(this.inStream, from); - StringBuffer name = new StringBuffer(30); - char c; - for (int i=0; i ReadUnPackInfo(Vector dataVector) throws IOException { - this.inStream.skipToAttribute(Header.NID.kFolder); - - int numFolders = this.inStream.ReadNum(); - - StreamSwitch streamSwitch = new StreamSwitch(); - streamSwitch.Set(this.inStream, dataVector); - Vector folders = new Vector(numFolders); - for (int i=0; i= this.Folders.size()) - throw new IOException("Incorrect Header"); - this.FolderStartFileIndex.add(i); // check it - if (this.NumUnPackStreamsVector.get(folderIndex) != 0) - break; - folderIndex++; - } - } - this.FileIndexToFolderIndexMap.add(folderIndex); - if (emptyStream) - continue; - indexInFolder++; - if (indexInFolder >= this.NumUnPackStreamsVector.get(folderIndex)) { - folderIndex++; - indexInFolder = 0; - } - } - } - - /* --------------------------------------------------------------------------------------------------- - * public methods - * --------------------------------------------------------------------------------------------------- */ - - public void clear() { - this.ArchiveInfo.FileInfoPopIDs.clear(); - this.PackStreamStartPositions.clear(); - this.FolderStartPackStreamIndex.clear(); - this.FolderStartFileIndex.clear(); - this.FileIndexToFolderIndexMap.clear(); - - this.PackSizes.clear(); - this.PackCRCsDefined.clear(); - this.PackCRCs.clear(); - this.Folders.clear(); - this.NumUnPackStreamsVector.clear(); - this.Files.clear(); - } - - public long GetFolderFullPackSize(int folderIndex) { - int packStreamIndex = this.FolderStartPackStreamIndex.get(folderIndex); - Folder folder = (Folder)this.Folders.get(folderIndex); - long size = 0; - for (int i = 0; i < folder.PackStreams.size(); i++) - size += this.PackSizes.get(packStreamIndex + i); - return size; - } - - public long GetFolderStreamPos(int folderIndex, int indexInFolder) { - return this.ArchiveInfo.DataStartPosition + - this.PackStreamStartPositions.get(this.FolderStartPackStreamIndex.get(folderIndex) + - indexInFolder); - } -} \ No newline at end of file diff --git a/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/ArchiveDatabase.java b/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/ArchiveDatabase.java deleted file mode 100644 index a3093d8c8a..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/ArchiveDatabase.java +++ /dev/null @@ -1,26 +0,0 @@ -package SevenZip.Archive.SevenZip; - -import java.util.Vector; - -import Common.BoolVector; -import Common.IntVector; -import Common.LongVector; - -class ArchiveDatabase { - - public LongVector PackSizes = new LongVector(); - public BoolVector PackCRCsDefined = new BoolVector(); - public IntVector PackCRCs = new IntVector(); - public Vector Folders = new Vector(); - public IntVector NumUnPackStreamsVector = new IntVector(); - public Vector Files = new Vector(); - - void Clear() { - PackSizes.clear(); - PackCRCsDefined.clear(); - PackCRCs.clear(); - Folders.clear(); - NumUnPackStreamsVector.clear(); - Files.clear(); - } -} \ No newline at end of file diff --git a/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/ArchiveDatabaseEx.java b/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/ArchiveDatabaseEx.java deleted file mode 100644 index c2d16b3a1f..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/ArchiveDatabaseEx.java +++ /dev/null @@ -1,107 +0,0 @@ -package SevenZip.Archive.SevenZip; - -import Common.IntVector; -import Common.LongVector; - -public class ArchiveDatabaseEx extends ArchiveDatabase { - public IntVector FolderStartPackStreamIndex = new IntVector(); - public IntVector FolderStartFileIndex = new IntVector(); - public IntVector FileIndexToFolderIndexMap = new IntVector(); - - InArchiveInfo ArchiveInfo = new InArchiveInfo(); - LongVector PackStreamStartPositions = new LongVector(); - - public ArchiveDatabaseEx() { - super(); - - } - - void Clear() { - ArchiveInfo.Clear(); - PackStreamStartPositions.clear(); - FolderStartPackStreamIndex.clear(); - FolderStartFileIndex.clear(); - FileIndexToFolderIndexMap.clear(); - super.Clear(); - } - - void FillFolderStartPackStream() { - FolderStartPackStreamIndex.clear(); - FolderStartPackStreamIndex.Reserve(Folders.size()); - int startPos = 0; - for(int i = 0; i < Folders.size(); i++) { - FolderStartPackStreamIndex.add(startPos); - startPos += ((Folder)Folders.get(i)).PackStreams.size(); - } - } - - void FillStartPos() { - PackStreamStartPositions.clear(); - PackStreamStartPositions.Reserve(PackSizes.size()); - long startPos = 0; - for(int i = 0; i < PackSizes.size(); i++) { - PackStreamStartPositions.add(startPos); - startPos += PackSizes.get(i); - } - } - - public void Fill() throws java.io.IOException { - FillFolderStartPackStream(); - FillStartPos(); - FillFolderStartFileIndex(); - } - - public long GetFolderFullPackSize(int folderIndex) { - int packStreamIndex = FolderStartPackStreamIndex.get(folderIndex); - Folder folder = (Folder)Folders.get(folderIndex); - long size = 0; - for (int i = 0; i < folder.PackStreams.size(); i++) - size += PackSizes.get(packStreamIndex + i); - return size; - } - - - void FillFolderStartFileIndex() throws java.io.IOException { - FolderStartFileIndex.clear(); - FolderStartFileIndex.Reserve(Folders.size()); - FileIndexToFolderIndexMap.clear(); - FileIndexToFolderIndexMap.Reserve(Files.size()); - - int folderIndex = 0; - int indexInFolder = 0; - for (int i = 0; i < Files.size(); i++) { - FileItem file = (FileItem)Files.get(i); - boolean emptyStream = !file.HasStream; - if (emptyStream && indexInFolder == 0) { - FileIndexToFolderIndexMap.add(ArchiveDB.kNumNoIndex); - continue; - } - if (indexInFolder == 0) { - // v3.13 incorrectly worked with empty folders - // v4.07: Loop for skipping empty folders - for (;;) { - if (folderIndex >= Folders.size()) - throw new java.io.IOException("Incorrect Header"); // CInArchiveException(CInArchiveException::kIncorrectHeader); - FolderStartFileIndex.add(i); // check it - if (NumUnPackStreamsVector.get(folderIndex) != 0) - break; - folderIndex++; - } - } - FileIndexToFolderIndexMap.add(folderIndex); - if (emptyStream) - continue; - indexInFolder++; - if (indexInFolder >= NumUnPackStreamsVector.get(folderIndex)) { - folderIndex++; - indexInFolder = 0; - } - } - } - - public long GetFolderStreamPos(int folderIndex, int indexInFolder) { - return ArchiveInfo.DataStartPosition + - PackStreamStartPositions.get(FolderStartPackStreamIndex.get(folderIndex) + - indexInFolder); - } -} \ No newline at end of file diff --git a/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/BindInfoEx.java b/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/BindInfoEx.java deleted file mode 100644 index 3618dbb49e..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/BindInfoEx.java +++ /dev/null @@ -1,25 +0,0 @@ -package SevenZip.Archive.SevenZip; - -import java.util.Vector; - -import SevenZip.Archive.Common.BindInfo; - -class BindInfoEx extends BindInfo { - - Vector CoderMethodIDs = new Vector(); - - public void Clear() { - super.Clear(); // CBindInfo::Clear(); - CoderMethodIDs.clear(); - } - - public boolean equals(Object obj) { - if (obj instanceof BindInfoEx) { - BindInfoEx arg = (BindInfoEx)obj; - for (int i = 0; i < this.CoderMethodIDs.size(); i++) - if (this.CoderMethodIDs.get(i) != arg.CoderMethodIDs.get(i)) - return false; - } - return super.equals(obj); - } -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/CoderInfo.java b/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/CoderInfo.java deleted file mode 100644 index 58d3dc0dd1..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/CoderInfo.java +++ /dev/null @@ -1,17 +0,0 @@ -package SevenZip.Archive.SevenZip; - -import java.util.Vector; - -public class CoderInfo { - - public int NumInStreams; - public int NumOutStreams; - public Vector AltCoders = new Vector(); - - boolean IsSimpleCoder() { return (NumInStreams == 1) && (NumOutStreams == 1); } - - public CoderInfo() { - NumInStreams = 0; - NumOutStreams = 0; - } -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/Decoder.java b/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/Decoder.java deleted file mode 100644 index 7bcd43b6e0..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/Decoder.java +++ /dev/null @@ -1,213 +0,0 @@ -package SevenZip.Archive.SevenZip; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.Vector; - -import SevenZip.ICompressCoder2; -import SevenZip.ICompressCoder; -import SevenZip.ICompressFilter; -import SevenZip.ICompressProgressInfo; -import SevenZip.IInStream; - -import SevenZip.Archive.Common.CoderMixer2ST; -import SevenZip.Archive.Common.FilterCoder; - -import Common.LongVector; - -public class Decoder { - - private boolean _bindInfoExPrevIsDefined; - private BindInfoEx _bindInfoExPrev; - - private boolean _multiThread; - - // CoderMixer2MT _mixerCoderMTSpec; - private CoderMixer2ST _mixerCoderSTSpec; - private final Vector _decoders; - - public Decoder(boolean multiThread) { - this._multiThread = multiThread; - this._bindInfoExPrevIsDefined = false; - this._bindInfoExPrev = new BindInfoEx(); - this._decoders = new Vector(); - } - - private static ICompressCoder getSimpleCoder(AltCoderInfo altCoderInfo) throws IOException { - ICompressCoder decoder = null; - ICompressFilter filter = null; - - // #ifdef COMPRESS_LZMA - if (altCoderInfo.MethodID.equals(MethodID.k_LZMA)) - decoder = new SevenZip.Compression.LZMA.Decoder(altCoderInfo.Properties.toByteArray()); // NCompress::NLZMA::CDecoder; - if (altCoderInfo.MethodID.equals(MethodID.k_PPMD)) - throw new IOException("PPMD not implemented"); // decoder = new NCompress::NPPMD::CDecoder; - if (altCoderInfo.MethodID.equals(MethodID.k_BCJ_X86)) - filter = new SevenZip.Compression.Branch.BCJ_x86_Decoder(); - if (altCoderInfo.MethodID.equals(MethodID.k_Deflate)) - throw new IOException("DEFLATE not implemented"); // decoder = new NCompress::NDeflate::NDecoder::CCOMCoder; - if (altCoderInfo.MethodID.equals(MethodID.k_BZip2)) - throw new IOException("BZIP2 not implemented"); // decoder = new NCompress::NBZip2::CDecoder; - if (altCoderInfo.MethodID.equals(MethodID.k_Copy)) - decoder = new SevenZip.Compression.Copy.Decoder(); // decoder = new NCompress::CCopyCoder; - if (altCoderInfo.MethodID.equals(MethodID.k_7zAES)) - throw new IOException("k_7zAES not implemented"); // filter = new NCrypto::NSevenZ::CDecoder; - - if (filter != null) { - FilterCoder coderSpec = new FilterCoder(); - coderSpec.Filter = filter; - decoder = coderSpec; - } - - if (decoder == null) - throw new IOException("decoder " + altCoderInfo.MethodID + " not implemented"); - return decoder; - } - - private static ICompressCoder2 getComplexCoder(AltCoderInfo altCoderInfo) throws IOException { - ICompressCoder2 decoder = null; - - if (altCoderInfo.MethodID.equals(MethodID.k_BCJ2)) - decoder = new SevenZip.Compression.Branch.BCJ2_x86_Decoder(); - - if (decoder == null) - throw new IOException("decoder " + altCoderInfo.MethodID + " not implemented"); - return decoder; - } - - private void createNewCoders( - BindInfoEx bindInfo, - Folder folderInfo) throws IOException { - int i; - this._decoders.clear(); - if (this._mixerCoderSTSpec != null) this._mixerCoderSTSpec.close(); // _mixerCoder.Release(); - if (this._multiThread) { - /* - _mixerCoderMTSpec = new CoderMixer2MT(); - _mixerCoder = _mixerCoderMTSpec; - _mixerCoderCommon = _mixerCoderMTSpec; - */ - throw new IOException("multithreaded decoder not implemented"); - } else { - this._mixerCoderSTSpec = new CoderMixer2ST(bindInfo); - } - - for (i=0; i - LongVector unPackSizesPointers = new LongVector(); // CRecordVector - packSizesPointers.Reserve(numInStreams); - unPackSizesPointers.Reserve(numOutStreams); - int j; - - for (j=0; j= 0) { - index = (folderInfo.BindPairs.get(bindPairIndex)).OutIndex; - packSizesPointer = folderInfo.UnPackSizes.get(index); - } else { - index = folderInfo.FindPackStreamArrayIndex(packStreamIndex); - if (index < 0) - throw new IndexOutOfBoundsException("PackStreamArrayIndex: " + index); - packSizesPointer = packSizes.get(index); - } - packSizesPointers.add(packSizesPointer); - } - - this._mixerCoderSTSpec.SetCoderInfo( - i, - packSizesPointers, // &packSizesPointers.Front(), - unPackSizesPointers // &unPackSizesPointers.Front() - ); - } - } - - public void Decode( - IInStream inStream, long startPos, - LongVector packSizes, int packSizesOffset, - Folder folderInfo, - OutputStream outStream, - ICompressProgressInfo compressProgress - ) throws IOException { - - final Vector inStreams = folderInfo.getInStreams( - inStream, - startPos, - packSizes, - packSizesOffset); - - final BindInfoEx bindInfo = folderInfo.toBindInfoEx(); - - if (!(this._bindInfoExPrevIsDefined && bindInfo.equals(this._bindInfoExPrev))) { - createNewCoders(bindInfo, folderInfo); - } else { /* should not happen, as far as I understood... */ } - - this._mixerCoderSTSpec.ReInit(); - // this._mixerCoderCommon.setCoderInfos(this._decoders, folderInfo, packSizes); - setCoderMixerCommonInfos(folderInfo, packSizes); - - // int mainCoder = bindInfo.FindOutStream(bindInfo.OutStreams.get(0))[0]; - - if (this._multiThread) { - // _mixerCoderMTSpec.SetProgressCoderIndex(mainCoder); - throw new IOException("Multithreaded decoder is not implemented"); - } - - if (folderInfo.Coders.size() == 0) - throw new IOException("no decoders available"); - - final Vector outStreams = new Vector(1); - outStreams.add(outStream); - - this._mixerCoderSTSpec.Code( - inStreams, - //null, - inStreams.size(), - outStreams, - //null, - 1, - compressProgress); - } -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/ExtractFolderInfo.java b/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/ExtractFolderInfo.java deleted file mode 100644 index 882a88ef86..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/ExtractFolderInfo.java +++ /dev/null @@ -1,33 +0,0 @@ -package SevenZip.Archive.SevenZip; - -import Common.BoolVector; - -public class ExtractFolderInfo { - /* #ifdef _7Z_VOL - int VolumeIndex; - #endif */ - public int FileIndex; - public int FolderIndex; - public BoolVector ExtractStatuses = new BoolVector(); - public long UnPackSize; - public ExtractFolderInfo( - /* #ifdef _7Z_VOL - int volumeIndex, - #endif */ - int fileIndex, int folderIndex) // CNum fileIndex, CNum folderIndex - { - /* #ifdef _7Z_VOL - VolumeIndex(volumeIndex), - #endif */ - FileIndex = fileIndex; - FolderIndex = folderIndex; - UnPackSize = 0; - - if (fileIndex != ArchiveDB.kNumNoIndex) - { - ExtractStatuses.Reserve(1); - ExtractStatuses.add(true); - } - } -} - diff --git a/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/FileItem.java b/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/FileItem.java deleted file mode 100644 index aa80ac3c79..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/FileItem.java +++ /dev/null @@ -1,36 +0,0 @@ -package SevenZip.Archive.SevenZip; - -public class FileItem { - - public long CreationTime; - public long LastWriteTime; - public long LastAccessTime; - - public long UnPackSize; - public long StartPos; - public int Attributes; - public int FileCRC; - - public boolean IsDirectory; - public boolean IsAnti; - public boolean IsFileCRCDefined; - public boolean AreAttributesDefined; - public boolean HasStream; - // public boolean IsCreationTimeDefined; replace by (CreationTime != 0) - // public boolean IsLastWriteTimeDefined; replace by (LastWriteTime != 0) - // public boolean IsLastAccessTimeDefined; replace by (LastAccessTime != 0) - public boolean IsStartPosDefined; - public String name; - - public FileItem() { - HasStream = true; - IsDirectory = false; - IsAnti = false; - IsFileCRCDefined = false; - AreAttributesDefined = false; - CreationTime = 0; // IsCreationTimeDefined = false; - LastWriteTime = 0; // IsLastWriteTimeDefined = false; - LastAccessTime = 0; // IsLastAccessTimeDefined = false; - IsStartPosDefined = false; - } -} \ No newline at end of file diff --git a/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/Folder.java b/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/Folder.java deleted file mode 100644 index 0c963ce960..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/Folder.java +++ /dev/null @@ -1,106 +0,0 @@ -package SevenZip.Archive.SevenZip; - -import java.io.IOException; -import java.util.Vector; - -import Common.IntVector; -import Common.LimitedSequentialInStream; -import Common.LockedInStream; -import Common.LockedSequentialInStreamImp; -import Common.LongVector; - -import SevenZip.IInStream; -import SevenZip.Archive.Common.BindPair; -import SevenZip.Archive.Common.CoderStreamsInfo; - -public class Folder { - - public Vector Coders = new Vector(); - public Vector BindPairs = new Vector(); - public IntVector PackStreams = new IntVector(); - public LongVector UnPackSizes = new LongVector(); - int UnPackCRC; - boolean UnPackCRCDefined; - - Folder() { - UnPackCRCDefined = false; - } - - public long GetUnPackSize() throws IOException { - if (UnPackSizes.isEmpty()) - return 0; - for (int i = UnPackSizes.size() - 1; i >= 0; i--) - if (FindBindPairForOutStream(i) < 0) - return UnPackSizes.get(i); - throw new IOException("1"); // throw 1 // TBD - } - - public int FindBindPairForInStream(int inStreamIndex) { - for(int i = 0; i < BindPairs.size(); i++) - if ((BindPairs.get(i)).InIndex == inStreamIndex) - return i; - return -1; - } - - public int FindBindPairForOutStream(int outStreamIndex) { - for(int i = 0; i < BindPairs.size(); i++) - if ((BindPairs.get(i)).OutIndex == outStreamIndex) - return i; - return -1; - } - - public int FindPackStreamArrayIndex(int inStreamIndex) { - for(int i = 0; i < PackStreams.size(); i++) - if (PackStreams.get(i) == inStreamIndex) - return i; - return -1; - } - - public int GetNumOutStreams() { - int result = 0; - for (int i = 0; i < Coders.size(); i++) - result += (Coders.get(i)).NumOutStreams; - return result; - } - - public Vector getInStreams( - IInStream inStream, long startPos, - LongVector packSizes, int packSizesOffset) { - final Vector inStreams = new Vector(this.PackStreams.size()); - final LockedInStream lockedInStream = new LockedInStream(inStream); - for (int j = 0; j < this.PackStreams.size(); j++) { - inStreams.add(new LimitedSequentialInStream( - new LockedSequentialInStreamImp(lockedInStream, startPos), - packSizes.get(j + packSizesOffset))); - startPos += packSizes.get(j + packSizesOffset); - } - return inStreams; - } - - public BindInfoEx toBindInfoEx() { - BindInfoEx bindInfo = new BindInfoEx(); - - for (int i = 0; i < this.BindPairs.size(); i++) { - BindPair bindPair = new BindPair(); - bindPair.InIndex = (this.BindPairs.get(i)).InIndex; - bindPair.OutIndex = (this.BindPairs.get(i)).OutIndex; - bindInfo.BindPairs.add(bindPair); - } - int outStreamIndex = 0; - for (int i = 0; i < this.Coders.size(); i++) { - CoderStreamsInfo coderStreamsInfo = new CoderStreamsInfo(); - CoderInfo coderInfo = this.Coders.get(i); - coderStreamsInfo.NumInStreams = coderInfo.NumInStreams; - coderStreamsInfo.NumOutStreams = coderInfo.NumOutStreams; - bindInfo.Coders.add(coderStreamsInfo); - AltCoderInfo altCoderInfo = (AltCoderInfo)coderInfo.AltCoders.firstElement(); - bindInfo.CoderMethodIDs.add(altCoderInfo.MethodID); - for (int j = 0; j < coderStreamsInfo.NumOutStreams; j++, outStreamIndex++) - if (this.FindBindPairForOutStream(outStreamIndex) < 0) - bindInfo.OutStreams.add(outStreamIndex); - } - for (int i = 0; i < this.PackStreams.size(); i++) - bindInfo.InStreams.add(this.PackStreams.get(i)); - return bindInfo; - } -} \ No newline at end of file diff --git a/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/FolderOutStream.java b/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/FolderOutStream.java deleted file mode 100644 index 1e7a4697d9..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/FolderOutStream.java +++ /dev/null @@ -1,161 +0,0 @@ -package SevenZip.Archive.SevenZip; - -import java.io.IOException; -import java.io.OutputStream; - -import SevenZip.Archive.Common.OutStreamWithCRC; -import SevenZip.Archive.IArchiveExtractCallback; -import SevenZip.Archive.IInArchive; - -import Common.BoolVector; - -public class FolderOutStream extends OutputStream { - - private OutStreamWithCRC outStreamWithHashSpec; - private ArchiveDB archiveDatabase; - private BoolVector extractStatuses; - private int startIndex; - private int ref2Offset; - private IArchiveExtractCallback extractCallback; - private boolean testMode; - private int currentIndex; - private boolean fileIsOpen; - private long filePos; - - public FolderOutStream( - ArchiveDB archiveDatabase, - int ref2Offset, - int startIndex, - BoolVector extractStatuses, - IArchiveExtractCallback extractCallback, - boolean testMode) throws IOException { - this(new OutStreamWithCRC(), archiveDatabase, ref2Offset, startIndex, extractStatuses, extractCallback, testMode); - } - - public FolderOutStream(OutStreamWithCRC os, - ArchiveDB archiveDatabase, - int ref2Offset, - int startIndex, - BoolVector extractStatuses, - IArchiveExtractCallback extractCallback, - boolean testMode) throws IOException { - if (os == null) throw new NullPointerException(); - this.outStreamWithHashSpec = os; - this.archiveDatabase = archiveDatabase; - this.ref2Offset = ref2Offset; - this.startIndex = startIndex; - - this.extractStatuses = extractStatuses; - this.extractCallback = extractCallback; - this.testMode = testMode; - - this.currentIndex = 0; - this.fileIsOpen = false; - WriteEmptyFiles(); - } - - private void OpenFile() throws IOException { - int askMode; - if (this.extractStatuses.get(this.currentIndex)) { - askMode = this.testMode - ? IInArchive.NExtract_NAskMode_kTest - : IInArchive.NExtract_NAskMode_kExtract; - } else { - askMode = IInArchive.NExtract_NAskMode_kSkip; - } - - int index = this.startIndex + this.currentIndex; - - OutputStream realOutStream = this.extractCallback.GetStream(this.ref2Offset + index, askMode); - this.outStreamWithHashSpec.setStream(realOutStream); - this.outStreamWithHashSpec.reset(); - if (realOutStream == null && askMode == IInArchive.NExtract_NAskMode_kExtract) { - FileItem fileInfo = (FileItem)this.archiveDatabase.Files.get(index); - if (!fileInfo.IsAnti && !fileInfo.IsDirectory) - askMode = IInArchive.NExtract_NAskMode_kSkip; - } - this.extractCallback.PrepareOperation(askMode); - } - - private int WriteEmptyFiles() throws IOException { - int begin = this.currentIndex; - for(;this.currentIndex < this.extractStatuses.size(); this.currentIndex++) { - int index = this.startIndex + this.currentIndex; - FileItem fileInfo = (FileItem)this.archiveDatabase.Files.get(index); - if (!fileInfo.IsAnti && !fileInfo.IsDirectory && fileInfo.UnPackSize != 0) - return -1; // return HRESULT.S_OK; - OpenFile(); - - this.extractCallback.SetOperationResult(IInArchive.NExtract_NOperationResult_kOK); - this.outStreamWithHashSpec.releaseStream(); - } - return this.extractStatuses.size() - begin; - } - - public void write(int b) throws IOException { - throw new IOException("FolderOutStream - write() not implemented"); - } - - public void /* UInt32 *processedSize */ write(byte[] data, int off, int size) throws IOException { - int realProcessedSize = 0; - while(this.currentIndex < this.extractStatuses.size()) { - if (this.fileIsOpen) { - int index = this.startIndex + this.currentIndex; - FileItem fileInfo = (FileItem)this.archiveDatabase.Files.get(index); - long fileSize = fileInfo.UnPackSize; - - long numBytesToWrite2 = fileSize - this.filePos; - int tmp = size - realProcessedSize; - if (tmp < numBytesToWrite2) numBytesToWrite2 = tmp; - - int processedSizeLocal; - // int res = _outStreamWithHash.Write((const Byte *)data + realProcessedSize,numBytesToWrite, &processedSizeLocal)); - // if (res != HRESULT.S_OK) throw new java.io.IOException("_outStreamWithHash.Write : " + res); // return res; - processedSizeLocal = (int)numBytesToWrite2; - this.outStreamWithHashSpec.write(data, realProcessedSize + off, (int)numBytesToWrite2); - - this.filePos += processedSizeLocal; - realProcessedSize += processedSizeLocal; - - if (this.filePos == fileSize) { - boolean digestsAreEqual = !fileInfo.IsFileCRCDefined || (fileInfo.FileCRC == this.outStreamWithHashSpec.getCRC()); - this.extractCallback.SetOperationResult(digestsAreEqual ? - IInArchive.NExtract_NOperationResult_kOK : - IInArchive.NExtract_NOperationResult_kCRCError); - - this.outStreamWithHashSpec.releaseStream(); - this.fileIsOpen = false; - this.currentIndex++; - } - if (realProcessedSize == size) { - WriteEmptyFiles(); - return ;// return realProcessedSize; - } - } else { - OpenFile(); - this.fileIsOpen = true; - this.filePos = 0; - } - } - } - - public void FlushCorrupted(int resultEOperationResult) throws IOException { - while(this.currentIndex < this.extractStatuses.size()) { - if (this.fileIsOpen) { - this.extractCallback.SetOperationResult(resultEOperationResult); - - this.outStreamWithHashSpec.releaseStream(); - this.fileIsOpen = false; - this.currentIndex++; - } else { - OpenFile(); - this.fileIsOpen = true; - } - } - } - - public boolean IsWritingFinished() { - return this.currentIndex == this.extractStatuses.size(); - } - -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/Handler.java b/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/Handler.java deleted file mode 100644 index 26e304a437..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/Handler.java +++ /dev/null @@ -1,281 +0,0 @@ -package SevenZip.Archive.SevenZip; - -import java.io.File; -import java.io.IOException; -import java.util.Vector; - -import SevenZip.HRESULT; -import SevenZip.IInStream; -import SevenZip.MyRandomAccessFile; - -import SevenZip.ICompressProgressInfo; -import SevenZip.Common.LocalProgress; -import SevenZip.Common.LocalCompressProgressInfo; -import SevenZip.Archive.IInArchive; -import SevenZip.Archive.IArchiveExtractCallback; -import SevenZip.Archive.SevenZipEntry; - -public class Handler implements IInArchive { - - public IInStream _inStream; - public ArchiveDB _database; - int _numThreads = 1; // XXX: configurable - - public Handler(File archive) throws IOException { - this(new MyRandomAccessFile(archive, "r"), kMaxCheckStartPosition); - } - - public Handler(IInStream stream) throws IOException { - this(stream, kMaxCheckStartPosition); - } - - public Handler(IInStream stream, long maxCheckStartPosition) throws IOException { - InStream archive = new InStream(stream, maxCheckStartPosition); - this._database = new ArchiveDB(archive); - this._inStream = stream; - } - - public void Extract(int [] indices, int numItems, - int testModeSpec, IArchiveExtractCallback extractCallback) throws IOException { - - boolean testMode = (testModeSpec != 0); - long importantTotalUnPacked = 0; - - boolean allFilesMode = (numItems == -1); - if (allFilesMode) - numItems = this._database.Files.size(); - - if (numItems == 0) - return; - - Vector extractFolderInfoVector = new Vector(); - for (int ii = 0; ii < numItems; ii++) { - int ref2Index = allFilesMode ? ii : indices[ii]; - - ArchiveDB database = _database; - int fileIndex = ref2Index; - - int folderIndex = database.FileIndexToFolderIndexMap.get(fileIndex); - if (folderIndex == ArchiveDB.kNumNoIndex) { - extractFolderInfoVector.add( new ExtractFolderInfo(fileIndex, ArchiveDB.kNumNoIndex)); - continue; - } - if (extractFolderInfoVector.isEmpty() || - folderIndex != (extractFolderInfoVector.lastElement()).FolderIndex) { - extractFolderInfoVector.add(new ExtractFolderInfo(ArchiveDB.kNumNoIndex, folderIndex)); - Folder folderInfo = database.Folders.get(folderIndex); - long unPackSize = folderInfo.GetUnPackSize(); - importantTotalUnPacked += unPackSize; - extractFolderInfoVector.lastElement().UnPackSize = unPackSize; - } - - ExtractFolderInfo efi = extractFolderInfoVector.lastElement(); - - int startIndex = database.FolderStartFileIndex.get(folderIndex); // CNum - for (int index = efi.ExtractStatuses.size(); index <= fileIndex - startIndex; index++) - efi.ExtractStatuses.add(index == fileIndex - startIndex); - } - - extractCallback.SetTotal(importantTotalUnPacked); - - Decoder decoder = new Decoder(false); - - long currentImportantTotalUnPacked = 0; - long totalFolderUnPacked; - - for (int i = 0; i < extractFolderInfoVector.size(); i++, currentImportantTotalUnPacked += totalFolderUnPacked) { - ExtractFolderInfo efi = extractFolderInfoVector.get(i); - totalFolderUnPacked = efi.UnPackSize; - - extractCallback.SetCompleted(currentImportantTotalUnPacked); - - int startIndex; // CNum - if (efi.FileIndex != ArchiveDB.kNumNoIndex) - startIndex = efi.FileIndex; - else - startIndex = this._database.FolderStartFileIndex.get(efi.FolderIndex); - - - FolderOutStream folderOutStream = new FolderOutStream(this._database, 0, startIndex, efi.ExtractStatuses, extractCallback, testMode); - int result = HRESULT.S_OK; - - if (efi.FileIndex != ArchiveDB.kNumNoIndex) - continue; - - int folderIndex = efi.FolderIndex; // CNum - Folder folderInfo = this._database.Folders.get(folderIndex); - - LocalProgress localProgressSpec = new LocalProgress(extractCallback, false); - - ICompressProgressInfo compressProgress = new LocalCompressProgressInfo( - localProgressSpec, - ICompressProgressInfo.INVALID, - currentImportantTotalUnPacked); - - int packStreamIndex = this._database.FolderStartPackStreamIndex.get(folderIndex); // CNum - long folderStartPackPos = this._database.GetFolderStreamPos(folderIndex, 0); - - try { - /* TODO: result = */ decoder.Decode( - this._inStream, - folderStartPackPos, - this._database.PackSizes, - packStreamIndex, - folderInfo, - folderOutStream, - compressProgress); - - if (result == HRESULT.S_FALSE) { - folderOutStream.FlushCorrupted(IInArchive.NExtract_NOperationResult_kDataError); - // if (result != HRESULT.S_OK) return result; - continue; - } - if (result == HRESULT.E_NOTIMPL) { - folderOutStream.FlushCorrupted(IInArchive.NExtract_NOperationResult_kUnSupportedMethod); - // if (result != HRESULT.S_OK) return result; - continue; - } - if (folderOutStream.IsWritingFinished()) { - folderOutStream.FlushCorrupted(IInArchive.NExtract_NOperationResult_kDataError); - // if (result != HRESULT.S_OK) return result; - continue; - } - } catch(Exception e) { - System.out.println("IOException : " + e); - e.printStackTrace(); - folderOutStream.FlushCorrupted(IInArchive.NExtract_NOperationResult_kDataError); - // if (result != HRESULT.S_OK) return result; - continue; - } - } - } - - public void close() throws IOException { - if (_inStream != null) _inStream.close(); - _inStream = null; - _database.clear(); - } - - public int size() { - return _database.Files.size(); - } - - private long getPackSize(int index2) { - long packSize = 0; - int folderIndex = _database.FileIndexToFolderIndexMap.get(index2); - if (folderIndex != ArchiveDB.kNumNoIndex) { - if (_database.FolderStartFileIndex.get(folderIndex) == index2) - packSize = _database.GetFolderFullPackSize(folderIndex); - } - return packSize; - } - - private static int GetUInt32FromMemLE(byte [] p , int off) { - return p[off] - | (((int)p[off + 1]) << 8) - | (((int)p[off + 2]) << 16) - | (((int)p[off + 3]) << 24); - } - - private static String GetStringForSizeValue(int value) { - for (int i = 31; i >= 0; i--) - if ((1 << i) == value) - return Integer.toString(i); - StringBuffer result = new StringBuffer(); - if (value % (1 << 20) == 0) { - result.append(value >> 20); - result.append('m'); - } else if (value % (1 << 10) == 0) { - result.append(value >> 10); - result.append('k'); - } else { - result.append(value); - result.append('b'); - } - return result.toString(); - } - - private String getMethods(int index2) { - int folderIndex = _database.FileIndexToFolderIndexMap.get(index2); - if (folderIndex != ArchiveDB.kNumNoIndex) { - Folder folderInfo = _database.Folders.get(folderIndex); - StringBuffer methodsString = new StringBuffer(); - for (int i = folderInfo.Coders.size() - 1; i >= 0; i--) { - CoderInfo coderInfo = folderInfo.Coders.get(i); - if (methodsString.length() > 0) - methodsString.append(' '); - - // MethodInfo methodInfo; - - for (int j = 0; j < coderInfo.AltCoders.size(); j++) { - if (j > 0) methodsString.append('|'); - AltCoderInfo altCoderInfo = (AltCoderInfo)coderInfo.AltCoders.get(j); - - if (altCoderInfo.MethodID.getName() == null) { - // TBD methodsString += altCoderInfo.MethodID.ConvertToString(); - } else { - methodsString.append(altCoderInfo.MethodID.getName()); - - if (altCoderInfo.MethodID.equals(MethodID.k_LZMA)) { - if (altCoderInfo.Properties.size() >= 5) { - methodsString.append(':'); - int dicSize = GetUInt32FromMemLE(altCoderInfo.Properties.toByteArray(), 1); - methodsString.append(GetStringForSizeValue(dicSize)); - } - } - /* else if (altCoderInfo.MethodID == k_PPMD) { - if (altCoderInfo.Properties.GetCapacity() >= 5) { - Byte order = *(const Byte *)altCoderInfo.Properties; - methodsString += ":o"; - methodsString += ConvertUInt32ToString(order); - methodsString += ":mem"; - UInt32 dicSize = GetUInt32FromMemLE( - ((const Byte *)altCoderInfo.Properties + 1)); - methodsString += GetStringForSizeValue(dicSize); - } - } else if (altCoderInfo.MethodID == k_AES) { - if (altCoderInfo.Properties.GetCapacity() >= 1) { - methodsString += ":"; - const Byte *data = (const Byte *)altCoderInfo.Properties; - Byte firstByte = *data++; - UInt32 numCyclesPower = firstByte & 0x3F; - methodsString += ConvertUInt32ToString(numCyclesPower); - } - } else { - if (altCoderInfo.Properties.GetCapacity() > 0) { - methodsString += ":["; - for (size_t bi = 0; bi < altCoderInfo.Properties.GetCapacity(); bi++) { - if (bi > 5 && bi + 1 < altCoderInfo.Properties.GetCapacity()) { - methodsString += ".."; - break; - } else - methodsString += GetHex2(altCoderInfo.Properties[bi]); - } - methodsString += "]"; - } - } - */ - } - } - } - return methodsString.toString(); - } - - return new String(); - } - - public SevenZipEntry getEntry(int index) { - SevenZip.Archive.SevenZip.FileItem item = (FileItem)_database.Files.get(index); - return new SevenZipEntry( - item.name, - getPackSize(index), - item.UnPackSize, - (item.IsFileCRCDefined) ? item.FileCRC & 0xFFFFFFFFL : -1, - item.LastWriteTime, - (item.IsStartPosDefined) ? item.StartPos : -1, - item.IsDirectory, - item.Attributes, - getMethods(index)); - } - -} \ No newline at end of file diff --git a/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/Header.java b/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/Header.java deleted file mode 100644 index ce9847e0b8..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/Header.java +++ /dev/null @@ -1,43 +0,0 @@ -package SevenZip.Archive.SevenZip; - -class Header { - - public static final int kSignatureSize = 6; - public static final byte [] kSignature= { '7', 'z', (byte)0xBC, (byte)0xAF, 0x27, 0x1C }; - public static final byte kMajorVersion = 0; - - public static class NID { - public static final int kEnd = 0; - public static final int kHeader = 1; - public static final int kArchiveProperties = 2; - public static final int kAdditionalStreamsInfo = 3; - public static final int kMainStreamsInfo = 4; - public static final int kFilesInfo = 5; - - public static final int kPackInfo = 6; - public static final int kUnPackInfo = 7; - public static final int kSubStreamsInfo = 8; - - public static final int kSize = 9; - public static final int kCRC = 10; - - public static final int kFolder = 11; - public static final int kCodersUnPackSize = 12; - public static final int kNumUnPackStream = 13; - - public static final int kEmptyStream = 14; - public static final int kEmptyFile = 15; - public static final int kAnti = 16; - - public static final int kName = 17; - public static final int kCreationTime = 18; - public static final int kLastAccessTime = 19; - public static final int kLastWriteTime = 20; - public static final int kWinAttributes = 21; - public static final int kComment = 22; - - public static final int kEncodedHeader = 23; - - public static final int kStartPos = 24; - } -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/InArchiveInfo.java b/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/InArchiveInfo.java deleted file mode 100644 index 1e537dc69b..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/InArchiveInfo.java +++ /dev/null @@ -1,18 +0,0 @@ -package SevenZip.Archive.SevenZip; - -import Common.LongVector; - -class InArchiveInfo { - public byte ArchiveVersion_Major; - public byte ArchiveVersion_Minor; - - public long StartPosition; - public long StartPositionAfterHeader; - public long DataStartPosition; - public long DataStartPosition2; - LongVector FileInfoPopIDs = new LongVector(); - - void Clear() { - FileInfoPopIDs.clear(); - } -} \ No newline at end of file diff --git a/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/InByte2.java b/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/InByte2.java deleted file mode 100644 index 79683ade1d..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/InByte2.java +++ /dev/null @@ -1,45 +0,0 @@ -package SevenZip.Archive.SevenZip; -import java.io.ByteArrayOutputStream; -import java.io.IOException; - -class InByte2 { - byte [] _buffer; - int _size; - int _pos; - - public InByte2() { - } - - public InByte2(byte [] buffer, int size) { - _buffer = buffer; - _size = size; - _pos = 0; - } - - public int ReadByte() throws IOException { - if(_pos >= _size) - throw new IOException("CInByte2 - Can't read stream"); - return (_buffer[_pos++] & 0xFF); - } - - int ReadBytes2(byte[] data, int size) { - int processedSize; - for(processedSize = 0; processedSize < size && _pos < _size; processedSize++) - data[processedSize] = _buffer[_pos++]; - return processedSize; - } - - boolean ReadBytes(byte[] data, int size) { - int processedSize = ReadBytes2(data, size); - return (processedSize == size); - } - - int readBytes(ByteArrayOutputStream baos, int size) { - int processedSize; - for (processedSize = 0; processedSize < size && _pos < _size; processedSize++) - baos.write(_buffer[_pos++]); - return processedSize; - } - - int GetProcessedSize() { return _pos; } -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/InStream.java b/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/InStream.java deleted file mode 100644 index 2d66ae785d..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Archive/SevenZip/InStream.java +++ /dev/null @@ -1,292 +0,0 @@ -package SevenZip.Archive.SevenZip; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.util.Arrays; -import java.util.Vector; - -import Common.BoolVector; -import Common.IntVector; - -import SevenZip.IInStream; -import SevenZip.Common.StreamUtils; - -public class InStream { - - public static final int kNumMax = 0x7FFFFFFF; - - final IInStream stream; - - private final Vector _inByteVector = new Vector(); - private /* TODO: final */ InByte2 _inByteBack = null; - - final long archiveBeginStreamPosition; - long position; - - public InStream(IInStream stream, long searchHeaderSizeLimit) throws IOException { - this.stream = stream; - this.position = stream.Seek(0, IInStream.STREAM_SEEK_CUR); - this.archiveBeginStreamPosition = FindAndReadSignature(searchHeaderSizeLimit); - } - - private long FindAndReadSignature( - long searchHeaderSizeLimit) throws IOException { - - this.stream.Seek(this.position, IInStream.STREAM_SEEK_SET); - - byte[] signature = new byte[Header.kSignatureSize]; - - int processedSize = ReadDirect(this.stream, signature, 0, Header.kSignatureSize); - if (processedSize != Header.kSignatureSize) - throw new IOException("detected illegal signature length: " + processedSize + " at byte " + this.position); - - if (TestSignatureCandidate(signature, 0)) - return this.position; - - // SFX support - final int kBufferSize = 1 << 16; - byte [] buffer = new byte[kBufferSize]; - int numPrevBytes = Header.kSignatureSize - 1; - - System.arraycopy(signature, 1, buffer, 0, numPrevBytes); - - long curTestPos = this.position + 1; - while (searchHeaderSizeLimit == -1 || - curTestPos - this.position <= searchHeaderSizeLimit) { - - int numReadBytes = kBufferSize - numPrevBytes; - processedSize = ReadDirect(this.stream, buffer, numPrevBytes, numReadBytes); - if (processedSize == -1) - throw new IOException("unexpected EOF during search for signature"); - - int numBytesInBuffer = numPrevBytes + processedSize; - if (numBytesInBuffer < Header.kSignatureSize) - throw new IOException("detected illegal signature length: " + numBytesInBuffer + " at byte " + this.position); - - int numTests = numBytesInBuffer - Header.kSignatureSize + 1; - for (int pos=0; pos>= 1; - } - return value; - } - - public int ReadNum() throws IOException { // CNum - long value64 = ReadNumber(); - if (value64 > InStream.kNumMax) - throw new IOException("ReadNum - value > CNum.kNumMax"); // return E_FAIL; - - return (int)value64; - } - - public long ReadID() throws IOException { - return ReadNumber(); - } - - public void SkeepData(long size) throws IOException { - for (long i = 0; i < size; i++) - ReadByte(); - } - - public void SkeepData() throws IOException { - long size = ReadNumber(); - SkeepData(size); - } - - public void skipToAttribute(long attribute) throws IOException { - long type; - while ((type = ReadID()) != attribute) { - if (type == Header.NID.kEnd) - throw new IOException("unexpected end of archive"); - SkeepData(); - } - } - - public void close() throws IOException { - if (this.stream != null) this.stream.close(); // _stream.Release(); - } - - public BoolVector ReadBoolVector(int numItems) throws IOException { - BoolVector v = new BoolVector(numItems); - int b = 0; - int mask = 0; - for (int i=0; i>= 1; - } - return v; - } - - public BoolVector ReadBoolVector2(int numItems) throws IOException { // CBoolVector - int allAreDefined = ReadByte(); - if (allAreDefined == 0) - return ReadBoolVector(numItems); - BoolVector v = new BoolVector(numItems); - for (int i = 0; i < numItems; i++) - v.add(true); - return v; - } - - public IntVector ReadHashDigests( - int numItems, - BoolVector digestsDefined) throws IOException { - digestsDefined.setBoolVector(ReadBoolVector2(numItems)); - final IntVector digests = new IntVector(numItems); - digests.clear(); - digests.Reserve(numItems); - for (int i=0; i 0) - methodNames.append(' '); - methodNames.append(methods[i].getName()); - } - this.Methods = methodNames.toString(); - } - - public long getCompressedSize() { - return PackSize; - } - - public long getSize() { - return UnPackSize; - } - - public long getCrc() { - return FileCRC; - } - - public String getName() { - return Name; - } - - public long getTime() { - return LastWriteTime; - } - - public long getPosition() { - return Position; - } - - public boolean isDirectory() { - return IsDirectory; - } - - static final String kEmptyAttributeChar = "."; - static final String kDirectoryAttributeChar = "D"; - static final String kReadonlyAttributeChar = "R"; - static final String kHiddenAttributeChar = "H"; - static final String kSystemAttributeChar = "S"; - static final String kArchiveAttributeChar = "A"; - static public final int FILE_ATTRIBUTE_READONLY = 0x00000001 ; - static public final int FILE_ATTRIBUTE_HIDDEN = 0x00000002 ; - static public final int FILE_ATTRIBUTE_SYSTEM = 0x00000004 ; - static public final int FILE_ATTRIBUTE_DIRECTORY = 0x00000010; - static public final int FILE_ATTRIBUTE_ARCHIVE = 0x00000020 ; - - public String getAttributesString() { - String ret = ""; - ret += ((Attributes & FILE_ATTRIBUTE_DIRECTORY) != 0 || IsDirectory) ? - kDirectoryAttributeChar: kEmptyAttributeChar; - ret += ((Attributes & FILE_ATTRIBUTE_READONLY) != 0)? - kReadonlyAttributeChar: kEmptyAttributeChar; - ret += ((Attributes & FILE_ATTRIBUTE_HIDDEN) != 0) ? - kHiddenAttributeChar: kEmptyAttributeChar; - ret += ((Attributes & FILE_ATTRIBUTE_SYSTEM) != 0) ? - kSystemAttributeChar: kEmptyAttributeChar; - ret += ((Attributes & FILE_ATTRIBUTE_ARCHIVE) != 0) ? - kArchiveAttributeChar: kEmptyAttributeChar; - return ret; - } - - public String getMethods() { - return Methods; - } -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/ArchiveExtractCallback.java b/libbuild/J7Zip-modified/src/SevenZip/ArchiveExtractCallback.java deleted file mode 100644 index aabe1d3a83..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/ArchiveExtractCallback.java +++ /dev/null @@ -1,148 +0,0 @@ -package SevenZip; - -import SevenZip.Archive.IArchiveExtractCallback; -import SevenZip.Archive.IInArchive; -import SevenZip.Archive.SevenZipEntry; - -import java.io.File; -import java.io.IOException; -import java.io.OutputStream; -import java.io.RandomAccessFile; - -public class ArchiveExtractCallback implements IArchiveExtractCallback // , ICryptoGetTextPassword, -{ - - protected IInArchive archiveHandler; // IInArchive - protected String filePath; // name inside arcvhive - protected String diskFilePath; // full path to file on disk - - public long NumErrors; - public boolean PasswordIsDefined; - protected String Password; - protected boolean extractMode; - - protected boolean isDirectory; - protected final File exractPath; - - public ArchiveExtractCallback(File extractPath) { - this.PasswordIsDefined = false; - this.exractPath = extractPath; - } - - public ArchiveExtractCallback() { - this(null); - } - - public void Init(IInArchive archiveHandler) { - this.NumErrors = 0; - this.archiveHandler = archiveHandler; - } - - public void SetTotal(long size) { } - public void SetCompleted(long completeValue) { } - - public void PrepareOperation(int askExtractMode) { - this.extractMode = (askExtractMode == IInArchive.NExtract_NAskMode_kExtract); - switch (askExtractMode) { - case IInArchive.NExtract_NAskMode_kExtract: - System.out.print("Extracting "); - break; - case IInArchive.NExtract_NAskMode_kTest: - System.out.print("Testing "); - break; - case IInArchive.NExtract_NAskMode_kSkip: - System.out.print("Skipping "); - break; - }; - System.out.print(this.filePath); - } - - public void SetOperationResult(int operationResult) throws IOException { - if (operationResult != IInArchive.NExtract_NOperationResult_kOK) { - this.NumErrors++; - System.out.print(" "); - switch(operationResult) { - case IInArchive.NExtract_NOperationResult_kUnSupportedMethod: - throw new IOException("Unsupported Method"); - case IInArchive.NExtract_NOperationResult_kCRCError: - throw new IOException("CRC Failed"); - case IInArchive.NExtract_NOperationResult_kDataError: - throw new IOException("Data Error"); - default: - // throw new IOException("Unknown Error"); - } - } - System.out.println(); - } - - public OutputStream GetStream(int index, int askExtractMode) throws IOException { - RAOutputStream r = null; - SevenZipEntry item = this.archiveHandler.getEntry(index); - this.filePath = item.getName(); - - File file; - if (this.exractPath == null) { - file = new File(this.filePath); - } else { - file = new File(this.exractPath, this.filePath); - } - this.diskFilePath = file.getAbsolutePath(); - - if (askExtractMode == IInArchive.NExtract_NAskMode_kExtract) { - if (this.isDirectory = item.isDirectory()) { - if (!file.isDirectory() && !file.mkdirs()) - throw new IOException("failed to make directories: " + file); - return null; - } - - File dirs = file.getParentFile(); - if (dirs != null && !dirs.isDirectory() && !dirs.mkdirs()) { - throw new IOException("failed to make directories: " + dirs); - } - - long pos = item.getPosition(); - if (pos == -1) { - file.delete(); - } - - RandomAccessFile outStr = new RandomAccessFile(file, "rw"); - - if (pos != -1) - outStr.seek(pos); - - r = new RAOutputStream(outStr); - } - - // other case : skip ... - return r; - } - - private class RAOutputStream extends OutputStream { - RandomAccessFile file; - - public RAOutputStream(RandomAccessFile f) { - this.file = f; - } - - public void close() throws IOException { - this.file.close(); - this.file = null; - } - /* - public void flush() throws IOException { - file.flush(); - } - */ - public void write(byte[] b) throws IOException { - this.file.write(b); - } - - public void write(byte[] b, int off, int len) throws IOException { - this.file.write(b,off,len); - } - - public void write(int b) throws IOException { - this.file.write(b); - } - } -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/CRC.java b/libbuild/J7Zip-modified/src/SevenZip/CRC.java deleted file mode 100644 index f2f791f17a..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/CRC.java +++ /dev/null @@ -1,52 +0,0 @@ -// SevenZip/CRC.java - -package SevenZip; - -public class CRC -{ - static public int[] Table = new int[256]; - - static - { - for (int i = 0; i < 256; i++) - { - int r = i; - for (int j = 0; j < 8; j++) - if ((r & 1) != 0) - r = (r >>> 1) ^ 0xEDB88320; - else - r >>>= 1; - Table[i] = r; - } - } - - int _value = -1; - - public void Init() - { - _value = -1; - } - - public void Update(byte[] data, int offset, int size) - { - for (int i = 0; i < size; i++) - _value = Table[(_value ^ data[offset + i]) & 0xFF] ^ (_value >>> 8); - } - - public void Update(byte[] data) - { - int size = data.length; - for (int i = 0; i < size; i++) - _value = Table[(_value ^ data[i]) & 0xFF] ^ (_value >>> 8); - } - - public void UpdateByte(int b) - { - _value = Table[(_value ^ b) & 0xFF] ^ (_value >>> 8); - } - - public int GetDigest() - { - return _value ^ (-1); - } -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/Common/InBuffer.java b/libbuild/J7Zip-modified/src/SevenZip/Common/InBuffer.java deleted file mode 100644 index 35c6920487..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Common/InBuffer.java +++ /dev/null @@ -1,77 +0,0 @@ -package SevenZip.Common; - -import java.io.IOException; -import java.io.InputStream; - -public class InBuffer { - - int _bufferPos; - int _bufferLimit; - byte [] _bufferBase; - InputStream _stream = null; // CMyComPtr - long _processedSize; - int _bufferSize; - boolean _wasFinished; - - public InBuffer() { - - } - // ~CInBuffer() { Free(); } - - public void Create(int bufferSize) { - final int kMinBlockSize = 1; - if (bufferSize < kMinBlockSize) - bufferSize = kMinBlockSize; - if (_bufferBase != null && _bufferSize == bufferSize) - return ; - Free(); - _bufferSize = bufferSize; - _bufferBase = new byte[bufferSize]; - } - void Free() { - _bufferBase = null; - } - - public void SetStream(InputStream stream) { // ISequentialInStream - _stream = stream; - } - public void Init() { - _processedSize = 0; - _bufferPos = 0; // = _bufferBase; - _bufferLimit = 0; // _buffer; - _wasFinished = false; - } - public void ReleaseStream() throws IOException { - if (_stream != null) _stream.close(); // _stream.Release(); - _stream = null; - } - - public int read() throws IOException { - if(_bufferPos >= _bufferLimit) - return ReadBlock2(); - return _bufferBase[_bufferPos++] & 0xFF; - } - - public boolean ReadBlock() throws IOException { - if (_wasFinished) - return false; - _processedSize += _bufferPos; // (_buffer - _bufferBase); - - int numProcessedBytes = _stream.read(_bufferBase, 0,_bufferSize); - if (numProcessedBytes == -1) numProcessedBytes = 0; // EOF - - _bufferPos = 0; // _bufferBase; - _bufferLimit = numProcessedBytes; // _buffer + numProcessedBytes; - _wasFinished = (numProcessedBytes == 0); - return (!_wasFinished); - } - - public int ReadBlock2() throws IOException { - if(!ReadBlock()) - return -1; // 0xFF; - return _bufferBase[_bufferPos++] & 0xFF; - } - - public long GetProcessedSize() { return _processedSize + (_bufferPos); } - public boolean WasFinished() { return _wasFinished; } -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/Common/LocalCompressProgressInfo.java b/libbuild/J7Zip-modified/src/SevenZip/Common/LocalCompressProgressInfo.java deleted file mode 100644 index ee8d87ab67..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Common/LocalCompressProgressInfo.java +++ /dev/null @@ -1,44 +0,0 @@ -package SevenZip.Common; - -import SevenZip.ICompressProgressInfo; - -public class LocalCompressProgressInfo implements ICompressProgressInfo { - final ICompressProgressInfo _progress; - - final boolean _inStartValueIsAssigned; - final boolean _outStartValueIsAssigned; - final long _inStartValue; - final long _outStartValue; - - public LocalCompressProgressInfo( - ICompressProgressInfo progress, - long inStartValue, - long outStartValue) { - _progress = progress; - _inStartValueIsAssigned = (inStartValue != ICompressProgressInfo.INVALID); - _inStartValue = inStartValue; - _outStartValueIsAssigned = (outStartValue != ICompressProgressInfo.INVALID); - _outStartValue = outStartValue; - } - - public void SetRatioInfo(long inSize, long outSize) { - long inSizeNew, outSizeNew; - long inSizeNewPointer; - long outSizeNewPointer; - if (_inStartValueIsAssigned && inSize != ICompressProgressInfo.INVALID) { - inSizeNew = _inStartValue + (inSize); // *inSize - inSizeNewPointer = inSizeNew; - } else { - inSizeNewPointer = ICompressProgressInfo.INVALID; - } - - if (_outStartValueIsAssigned && outSize != ICompressProgressInfo.INVALID) { - outSizeNew = _outStartValue + (outSize); - outSizeNewPointer = outSizeNew; - } else { - outSizeNewPointer = ICompressProgressInfo.INVALID; - } - _progress.SetRatioInfo(inSizeNewPointer, outSizeNewPointer); - } - -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/Common/LocalProgress.java b/libbuild/J7Zip-modified/src/SevenZip/Common/LocalProgress.java deleted file mode 100644 index f54e3d8deb..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Common/LocalProgress.java +++ /dev/null @@ -1,19 +0,0 @@ -package SevenZip.Common; - -import SevenZip.ICompressProgressInfo; -import SevenZip.IProgress; - -public class LocalProgress implements ICompressProgressInfo { - private final IProgress _progress; - private final boolean _inSizeIsMain; - - public LocalProgress(IProgress progress, boolean inSizeIsMain) { - this._progress = progress; - this._inSizeIsMain = inSizeIsMain; - } - - public void SetRatioInfo(long inSize, long outSize) { - _progress.SetCompleted(_inSizeIsMain ? inSize : outSize); - } - -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/Common/StreamUtils.java b/libbuild/J7Zip-modified/src/SevenZip/Common/StreamUtils.java deleted file mode 100644 index a034e07635..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Common/StreamUtils.java +++ /dev/null @@ -1,27 +0,0 @@ -package SevenZip.Common; - -import java.io.IOException; -import java.io.InputStream; - -public class StreamUtils { - - static public int ReadStream(InputStream stream, byte[] data, int off, int size) throws IOException { - int processedSize = 0; - - while(size != 0) { - int processedSizeLoc = stream.read(data,off + processedSize,size); - if (processedSizeLoc > 0) - { - processedSize += processedSizeLoc; - size -= processedSizeLoc; - } - if (processedSizeLoc == -1) { - if (processedSize > 0) return processedSize; - return -1; // EOF - } - } - return processedSize; - } - - // HRESULT WriteStream(ISequentialOutStream *stream, const void *data, UInt32 size, UInt32 *processedSize); -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/Compression/Branch/BCJ2_x86_Decoder.java b/libbuild/J7Zip-modified/src/SevenZip/Compression/Branch/BCJ2_x86_Decoder.java deleted file mode 100644 index 1868aec370..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Compression/Branch/BCJ2_x86_Decoder.java +++ /dev/null @@ -1,189 +0,0 @@ - -package SevenZip.Compression.Branch; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.Vector; - -import SevenZip.Compression.LZ.OutWindow; -import SevenZip.ICompressCoder2; -import SevenZip.ICompressProgressInfo; -import SevenZip.Common.InBuffer; -import SevenZip.HRESULT; - -public class BCJ2_x86_Decoder implements ICompressCoder2 { - - public static final int kNumMoveBits = 5; - - InBuffer _mainInStream = new InBuffer(); - InBuffer _callStream = new InBuffer(); - InBuffer _jumpStream = new InBuffer(); - - SevenZip.Compression.RangeCoder.BitDecoder _statusE8Decoder[] = new SevenZip.Compression.RangeCoder.BitDecoder[256]; - SevenZip.Compression.RangeCoder.BitDecoder _statusE9Decoder = new SevenZip.Compression.RangeCoder.BitDecoder(kNumMoveBits); - SevenZip.Compression.RangeCoder.BitDecoder _statusJccDecoder = new SevenZip.Compression.RangeCoder.BitDecoder(kNumMoveBits); - - OutWindow _outStream = new OutWindow(); - SevenZip.Compression.RangeCoder.Decoder _rangeDecoder = new SevenZip.Compression.RangeCoder.Decoder(); - - - // static final boolean IsJcc(int b0, int b1) { - // return ((b0 == 0x0F) && ((b1 & 0xF0) == 0x80)); - // } - - int CodeReal( - Vector inStreams, - //Object useless1, // const UInt64 ** /* inSizes */, - int numInStreams, - Vector outStreams, - //Object useless2, // const UInt64 ** /* outSizes */, - int numOutStreams, - ICompressProgressInfo progress) throws java.io.IOException { - - if (numInStreams != 4 || numOutStreams != 1) - throw new IllegalArgumentException("numInStreams != 4 || numOutStreams != 1"); - - _mainInStream.Create(1 << 16); - _callStream.Create(1 << 20); - _jumpStream.Create(1 << 16); - _rangeDecoder.Create(1 << 20); - _outStream.Create(1 << 16); - - _mainInStream.SetStream(inStreams.get(0)); - _callStream.SetStream(inStreams.get(1)); - _jumpStream.SetStream(inStreams.get(2)); - _rangeDecoder.SetStream(inStreams.get(3)); - _outStream.SetStream(outStreams.get(0)); - - _mainInStream.Init(); - _callStream.Init(); - _jumpStream.Init(); - _rangeDecoder.Init(); - _outStream.Init(); - - for (int i = 0; i < 256; i++) { - _statusE8Decoder[i] = new SevenZip.Compression.RangeCoder.BitDecoder(kNumMoveBits); - _statusE8Decoder[i].Init(); - } - _statusE9Decoder.Init(); - _statusJccDecoder.Init(); - - int prevByte = 0; - int processedBytes = 0; - for (;;) { - - if (processedBytes > (1 << 20) && progress != null) { - long nowPos64 = _outStream.GetProcessedSize(); - progress.SetRatioInfo(ICompressProgressInfo.INVALID, nowPos64); - processedBytes = 0; - } - - processedBytes++; - int b = _mainInStream.read(); - if (b == -1) { - Flush(); - return HRESULT.S_OK; - } - _outStream.WriteByte(b); // System.out.println("0:"+b); - // if ((b != 0xE8) && (b != 0xE9) && (!IsJcc(prevByte, b))) { - if ((b != 0xE8) && (b != 0xE9) && (!((prevByte == 0x0F) && ((b & 0xF0) == 0x80)))) { - prevByte = b; - continue; - } - - boolean status; - if (b == 0xE8) - status = (_statusE8Decoder[prevByte].Decode(_rangeDecoder) == 1); - else if (b == 0xE9) - status = (_statusE9Decoder.Decode(_rangeDecoder) == 1); - else - status = (_statusJccDecoder.Decode(_rangeDecoder) == 1); - - if (status) { - int src; - if (b == 0xE8) { - int b0 = _callStream.read(); - // if(b0 == -1) return HRESULT.S_FALSE; - src = ((int)b0) << 24; - - b0 = _callStream.read(); - // if(b0 == -1) return HRESULT.S_FALSE; - src |= ((int)b0) << 16; - - b0 = _callStream.read(); - // if(b0 == -1) return HRESULT.S_FALSE; - src |= ((int)b0) << 8; - - b0 = _callStream.read(); - if (b0 == -1) return HRESULT.S_FALSE; - src |= ((int)b0); - - } else { - int b0 = _jumpStream.read(); - // if(b0 == -1) return HRESULT.S_FALSE; - src = ((int)b0) << 24; - - b0 = _jumpStream.read(); - // if(b0 == -1) return HRESULT.S_FALSE; - src |= ((int)b0) << 16; - - b0 = _jumpStream.read(); - // if(b0 == -1) return HRESULT.S_FALSE; - src |= ((int)b0) << 8; - - b0 = _jumpStream.read(); - if(b0 == -1) return HRESULT.S_FALSE; - src |= ((int)b0); - - } - int dest = src - ((int)_outStream.GetProcessedSize() + 4) ; - _outStream.WriteByte(dest); - _outStream.WriteByte((dest >> 8)); - _outStream.WriteByte((dest >> 16)); - _outStream.WriteByte((dest >> 24)); - prevByte = (int)(dest >> 24) & 0xFF; - processedBytes += 4; - } else - prevByte = b; - } - } - - public void Flush() throws IOException { - _outStream.Flush(); - } - - @Override - public int Code( - Vector inStreams, // ISequentialInStream **inStreams, - //Object useless_inSizes, // const UInt64 ** /* inSizes */, - int numInStreams, - Vector outStreams, // ISequentialOutStream **outStreams - //Object useless_outSizes, // const UInt64 ** /* outSizes */, - int numOutStreams, - ICompressProgressInfo progress) throws java.io.IOException { - - try { - return CodeReal(inStreams, /*useless_inSizes,*/ numInStreams, - outStreams, /*useless_outSizes,*/ numOutStreams, progress); - } catch(java.io.IOException e) { - throw e; - } finally { - ReleaseStreams(); - } - } - - void ReleaseStreams() throws java.io.IOException { - _mainInStream.ReleaseStream(); - _callStream.ReleaseStream(); - _jumpStream.ReleaseStream(); - _rangeDecoder.ReleaseStream(); - _outStream.ReleaseStream(); - } - - @Override - public void close() throws java.io.IOException { - ReleaseStreams(); - } - -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/Compression/Branch/BCJ_x86_Decoder.java b/libbuild/J7Zip-modified/src/SevenZip/Compression/Branch/BCJ_x86_Decoder.java deleted file mode 100644 index 87cccc26b2..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Compression/Branch/BCJ_x86_Decoder.java +++ /dev/null @@ -1,114 +0,0 @@ -package SevenZip.Compression.Branch; - -import SevenZip.HRESULT; -import SevenZip.ICompressFilter; - -public class BCJ_x86_Decoder implements ICompressFilter { - - // struct CBranch86 - begin - int [] _prevMask = new int[1]; // UInt32 - int [] _prevPos = new int[1]; // UInt32 - void x86Init() { - _prevMask[0] = 0; - _prevPos[0] = -5; - } - // struct CBranch86 - end - - static final boolean [] kMaskToAllowedStatus = {true, true, true, false, true, false, false, false }; - - static final int [] kMaskToBitNumber = {0, 1, 2, 2, 3, 3, 3, 3}; - - static final boolean Test86MSByte(int b) { return ((b) == 0 || (b) == 0xFF); } - - static final int x86_Convert(byte [] buffer, int endPos, int nowPos, - int [] prevMask, int [] prevPos, boolean encoding) { - int bufferPos = 0; - int limit; - - if (endPos < 5) - return 0; - - if (nowPos - prevPos[0] > 5) - prevPos[0] = nowPos - 5; - - limit = endPos - 5; - while(bufferPos <= limit) { - int b = (buffer[bufferPos] & 0xFF); - int offset; - if (b != 0xE8 && b != 0xE9) { - bufferPos++; - continue; - } - offset = (nowPos + bufferPos - prevPos[0]); - prevPos[0] = (nowPos + bufferPos); - if (offset > 5) - prevMask[0] = 0; - else { - for (int i = 0; i < offset; i++) { - prevMask[0] &= 0x77; - prevMask[0] <<= 1; - } - } - b = (buffer[bufferPos + 4] & 0xFF); - if (Test86MSByte(b) && kMaskToAllowedStatus[(prevMask[0] >> 1) & 0x7] && - (prevMask[0] >>> 1) < 0x10) { - int src = - ((int)(b) << 24) | - ((int)(buffer[bufferPos + 3] & 0xFF) << 16) | - ((int)(buffer[bufferPos + 2] & 0xFF) << 8) | - (buffer[bufferPos + 1] & 0xFF); - - int dest; - for (;;) { - int index; - if (encoding) - dest = (nowPos + bufferPos + 5) + src; - else - dest = src - (nowPos + bufferPos + 5); - if (prevMask[0] == 0) - break; - index = kMaskToBitNumber[prevMask[0] >>> 1]; - b = (int)((dest >> (24 - index * 8)) & 0xFF); - if (!Test86MSByte(b)) - break; - src = dest ^ ((1 << (32 - index * 8)) - 1); - } - buffer[bufferPos + 4] = (byte)(~(((dest >> 24) & 1) - 1)); - buffer[bufferPos + 3] = (byte)(dest >> 16); - buffer[bufferPos + 2] = (byte)(dest >> 8); - buffer[bufferPos + 1] = (byte)dest; - bufferPos += 5; - prevMask[0] = 0; - } else { - bufferPos++; - prevMask[0] |= 1; - if (Test86MSByte(b)) - prevMask[0] |= 0x10; - } - } - return bufferPos; - } - - public int SubFilter(byte [] data, int size) { - return x86_Convert(data, size, _bufferPos, _prevMask, _prevPos, false); - } - - public void SubInit() { - x86Init(); - } - - int _bufferPos; // UInt32 - - // ICompressFilter interface - public int Init() { - _bufferPos = 0; - SubInit(); - return HRESULT.S_OK; - } - - public int Filter(byte [] data, int size) { - int processedSize = SubFilter(data, size); - _bufferPos += processedSize; - return processedSize; - } -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/Compression/Copy/Decoder.java b/libbuild/J7Zip-modified/src/SevenZip/Compression/Copy/Decoder.java deleted file mode 100644 index 3ffc2efa43..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Compression/Copy/Decoder.java +++ /dev/null @@ -1,36 +0,0 @@ - -package SevenZip.Compression.Copy; - -import SevenZip.ICompressCoder; -import SevenZip.ICompressProgressInfo; - -public class Decoder implements ICompressCoder { - - static final int kBufferSize = 1 << 17; - - public void Code( - java.io.InputStream inStream, // , ISequentialInStream - java.io.OutputStream outStream, // ISequentialOutStream - long outSize, ICompressProgressInfo progress) throws java.io.IOException { - - byte [] _buffer = new byte[kBufferSize]; - long TotalSize = 0; - - for (;;) { - int realProcessedSize; - int size = kBufferSize; - - if (outSize != -1) // NULL - if (size > (outSize - TotalSize)) - size = (int)(outSize - TotalSize); - - realProcessedSize = inStream.read(_buffer, 0,size); - if(realProcessedSize == -1) // EOF - break; - outStream.write(_buffer,0,realProcessedSize); - TotalSize += realProcessedSize; - if (progress != null) - progress.SetRatioInfo(TotalSize, TotalSize); - } - } -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/Compression/LZ/BinTree.java b/libbuild/J7Zip-modified/src/SevenZip/Compression/LZ/BinTree.java deleted file mode 100644 index 0516ada61b..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Compression/LZ/BinTree.java +++ /dev/null @@ -1,383 +0,0 @@ -// LZ.BinTree - -package SevenZip.Compression.LZ; -import java.io.IOException; - - - -public class BinTree extends InWindow -{ - int _cyclicBufferPos; - int _cyclicBufferSize = 0; - int _matchMaxLen; - - int[] _son; - int[] _hash; - - int _cutValue = 0xFF; - int _hashMask; - int _hashSizeSum = 0; - - boolean HASH_ARRAY = true; - - static final int kHash2Size = 1 << 10; - static final int kHash3Size = 1 << 16; - static final int kBT2HashSize = 1 << 16; - static final int kStartMaxLen = 1; - static final int kHash3Offset = kHash2Size; - static final int kEmptyHashValue = 0; - static final int kMaxValForNormalize = (1 << 30) - 1; - - int kNumHashDirectBytes = 0; - int kMinMatchCheck = 4; - int kFixHashSize = kHash2Size + kHash3Size; - - public void SetType(int numHashBytes) - { - HASH_ARRAY = (numHashBytes > 2); - if (HASH_ARRAY) - { - kNumHashDirectBytes = 0; - kMinMatchCheck = 4; - kFixHashSize = kHash2Size + kHash3Size; - } - else - { - kNumHashDirectBytes = 2; - kMinMatchCheck = 2 + 1; - kFixHashSize = 0; - } - } - - - - - public void Init() throws IOException - { - super.Init(); - for (int i = 0; i < _hashSizeSum; i++) - _hash[i] = kEmptyHashValue; - _cyclicBufferPos = 0; - ReduceOffsets(-1); - } - - public void MovePos() throws IOException - { - if (++_cyclicBufferPos >= _cyclicBufferSize) - _cyclicBufferPos = 0; - super.MovePos(); - if (_pos == kMaxValForNormalize) - Normalize(); - } - - - - - - - - - public boolean Create(int historySize, int keepAddBufferBefore, - int matchMaxLen, int keepAddBufferAfter) - { - if (historySize > kMaxValForNormalize - 256) - return false; - _cutValue = 16 + (matchMaxLen >> 1); - - int windowReservSize = (historySize + keepAddBufferBefore + - matchMaxLen + keepAddBufferAfter) / 2 + 256; - - super.Create(historySize + keepAddBufferBefore, matchMaxLen + keepAddBufferAfter, windowReservSize); - - _matchMaxLen = matchMaxLen; - - int cyclicBufferSize = historySize + 1; - if (_cyclicBufferSize != cyclicBufferSize) - _son = new int[(_cyclicBufferSize = cyclicBufferSize) * 2]; - - int hs = kBT2HashSize; - - if (HASH_ARRAY) - { - hs = historySize - 1; - hs |= (hs >> 1); - hs |= (hs >> 2); - hs |= (hs >> 4); - hs |= (hs >> 8); - hs >>= 1; - hs |= 0xFFFF; - if (hs > (1 << 24)) - hs >>= 1; - _hashMask = hs; - hs++; - hs += kFixHashSize; - } - if (hs != _hashSizeSum) - _hash = new int [_hashSizeSum = hs]; - return true; - } - public int GetMatches(int[] distances) throws IOException - { - int lenLimit; - if (_pos + _matchMaxLen <= _streamPos) - lenLimit = _matchMaxLen; - else - { - lenLimit = _streamPos - _pos; - if (lenLimit < kMinMatchCheck) - { - MovePos(); - return 0; - } - } - - int offset = 0; - int matchMinPos = (_pos > _cyclicBufferSize) ? (_pos - _cyclicBufferSize) : 0; - int cur = _bufferOffset + _pos; - int maxLen = kStartMaxLen; // to avoid items for len < hashSize; - int hashValue, hash2Value = 0, hash3Value = 0; - - if (HASH_ARRAY) - { - int temp = CrcTable[_bufferBase[cur] & 0xFF] ^ (_bufferBase[cur + 1] & 0xFF); - hash2Value = temp & (kHash2Size - 1); - temp ^= ((int)(_bufferBase[cur + 2] & 0xFF) << 8); - hash3Value = temp & (kHash3Size - 1); - hashValue = (temp ^ (CrcTable[_bufferBase[cur + 3] & 0xFF] << 5)) & _hashMask; - } - else - hashValue = ((_bufferBase[cur] & 0xFF) ^ ((int)(_bufferBase[cur + 1] & 0xFF) << 8)); - - int curMatch = _hash[kFixHashSize + hashValue]; - if (HASH_ARRAY) - { - int curMatch2 = _hash[hash2Value]; - int curMatch3 = _hash[kHash3Offset + hash3Value]; - _hash[hash2Value] = _pos; - _hash[kHash3Offset + hash3Value] = _pos; - if (curMatch2 > matchMinPos) - if (_bufferBase[_bufferOffset + curMatch2] == _bufferBase[cur]) - { - distances[offset++] = maxLen = 2; - distances[offset++] = _pos - curMatch2 - 1; - } - if (curMatch3 > matchMinPos) - if (_bufferBase[_bufferOffset + curMatch3] == _bufferBase[cur]) - { - if (curMatch3 == curMatch2) - offset -= 2; - distances[offset++] = maxLen = 3; - distances[offset++] = _pos - curMatch3 - 1; - curMatch2 = curMatch3; - } - if (offset != 0 && curMatch2 == curMatch) - { - offset -= 2; - maxLen = kStartMaxLen; - } - } - - _hash[kFixHashSize + hashValue] = _pos; - - int ptr0 = (_cyclicBufferPos << 1) + 1; - int ptr1 = (_cyclicBufferPos << 1); - - int len0, len1; - len0 = len1 = kNumHashDirectBytes; - - if (kNumHashDirectBytes != 0) - { - if (curMatch > matchMinPos) - { - if (_bufferBase[_bufferOffset + curMatch + kNumHashDirectBytes] != - _bufferBase[cur + kNumHashDirectBytes]) - { - distances[offset++] = maxLen = kNumHashDirectBytes; - distances[offset++] = _pos - curMatch - 1; - } - } - } - - int count = _cutValue; - - while (true) - { - if (curMatch <= matchMinPos || count-- == 0) - { - _son[ptr0] = _son[ptr1] = kEmptyHashValue; - break; - } - int delta = _pos - curMatch; - int cyclicPos = ((delta <= _cyclicBufferPos) ? - (_cyclicBufferPos - delta) : - (_cyclicBufferPos - delta + _cyclicBufferSize)) << 1; - - int pby1 = _bufferOffset + curMatch; - int len = Math.min(len0, len1); - if (_bufferBase[pby1 + len] == _bufferBase[cur + len]) - { - while(++len != lenLimit) - if (_bufferBase[pby1 + len] != _bufferBase[cur + len]) - break; - if (maxLen < len) - { - distances[offset++] = maxLen = len; - distances[offset++] = delta - 1; - if (len == lenLimit) - { - _son[ptr1] = _son[cyclicPos]; - _son[ptr0] = _son[cyclicPos + 1]; - break; - } - } - } - if ((_bufferBase[pby1 + len] & 0xFF) < (_bufferBase[cur + len] & 0xFF)) - { - _son[ptr1] = curMatch; - ptr1 = cyclicPos + 1; - curMatch = _son[ptr1]; - len1 = len; - } - else - { - _son[ptr0] = curMatch; - ptr0 = cyclicPos; - curMatch = _son[ptr0]; - len0 = len; - } - } - MovePos(); - return offset; - } - - public void Skip(int num) throws IOException - { - do - { - int lenLimit; - if (_pos + _matchMaxLen <= _streamPos) - lenLimit = _matchMaxLen; - else - { - lenLimit = _streamPos - _pos; - if (lenLimit < kMinMatchCheck) - { - MovePos(); - continue; - } - } - - int matchMinPos = (_pos > _cyclicBufferSize) ? (_pos - _cyclicBufferSize) : 0; - int cur = _bufferOffset + _pos; - - int hashValue; - - if (HASH_ARRAY) - { - int temp = CrcTable[_bufferBase[cur] & 0xFF] ^ (_bufferBase[cur + 1] & 0xFF); - int hash2Value = temp & (kHash2Size - 1); - _hash[hash2Value] = _pos; - temp ^= ((int)(_bufferBase[cur + 2] & 0xFF) << 8); - int hash3Value = temp & (kHash3Size - 1); - _hash[kHash3Offset + hash3Value] = _pos; - hashValue = (temp ^ (CrcTable[_bufferBase[cur + 3] & 0xFF] << 5)) & _hashMask; - } - else - hashValue = ((_bufferBase[cur] & 0xFF) ^ ((int)(_bufferBase[cur + 1] & 0xFF) << 8)); - - int curMatch = _hash[kFixHashSize + hashValue]; - _hash[kFixHashSize + hashValue] = _pos; - - int ptr0 = (_cyclicBufferPos << 1) + 1; - int ptr1 = (_cyclicBufferPos << 1); - - int len0, len1; - len0 = len1 = kNumHashDirectBytes; - - int count = _cutValue; - while (true) - { - if (curMatch <= matchMinPos || count-- == 0) - { - _son[ptr0] = _son[ptr1] = kEmptyHashValue; - break; - } - - int delta = _pos - curMatch; - int cyclicPos = ((delta <= _cyclicBufferPos) ? - (_cyclicBufferPos - delta) : - (_cyclicBufferPos - delta + _cyclicBufferSize)) << 1; - - int pby1 = _bufferOffset + curMatch; - int len = Math.min(len0, len1); - if (_bufferBase[pby1 + len] == _bufferBase[cur + len]) - { - while (++len != lenLimit) - if (_bufferBase[pby1 + len] != _bufferBase[cur + len]) - break; - if (len == lenLimit) - { - _son[ptr1] = _son[cyclicPos]; - _son[ptr0] = _son[cyclicPos + 1]; - break; - } - } - if ((_bufferBase[pby1 + len] & 0xFF) < (_bufferBase[cur + len] & 0xFF)) - { - _son[ptr1] = curMatch; - ptr1 = cyclicPos + 1; - curMatch = _son[ptr1]; - len1 = len; - } - else - { - _son[ptr0] = curMatch; - ptr0 = cyclicPos; - curMatch = _son[ptr0]; - len0 = len; - } - } - MovePos(); - } - while (--num != 0); - } - - void NormalizeLinks(int[] items, int numItems, int subValue) - { - for (int i = 0; i < numItems; i++) - { - int value = items[i]; - if (value <= subValue) - value = kEmptyHashValue; - else - value -= subValue; - items[i] = value; - } - } - - void Normalize() - { - int subValue = _pos - _cyclicBufferSize; - NormalizeLinks(_son, _cyclicBufferSize * 2, subValue); - NormalizeLinks(_hash, _hashSizeSum, subValue); - ReduceOffsets(subValue); - } - - public void SetCutValue(int cutValue) { _cutValue = cutValue; } - - private static final int[] CrcTable = new int[256]; - - static - { - for (int i = 0; i < 256; i++) - { - int r = i; - for (int j = 0; j < 8; j++) - if ((r & 1) != 0) - r = (r >>> 1) ^ 0xEDB88320; - else - r >>>= 1; - CrcTable[i] = r; - } - } -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/Compression/LZ/InWindow.java b/libbuild/J7Zip-modified/src/SevenZip/Compression/LZ/InWindow.java deleted file mode 100644 index 5f3f0b4d09..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Compression/LZ/InWindow.java +++ /dev/null @@ -1,131 +0,0 @@ -// LZ.InWindow - -package SevenZip.Compression.LZ; - -import java.io.IOException; - -public class InWindow -{ - public byte[] _bufferBase; // pointer to buffer with data - java.io.InputStream _stream; - int _posLimit; // offset (from _buffer) of first byte when new block reading must be done - boolean _streamEndWasReached; // if (true) then _streamPos shows real end of stream - - int _pointerToLastSafePosition; - - public int _bufferOffset; - - public int _blockSize; // Size of Allocated memory block - public int _pos; // offset (from _buffer) of curent byte - int _keepSizeBefore; // how many BYTEs must be kept in buffer before _pos - int _keepSizeAfter; // how many BYTEs must be kept buffer after _pos - public int _streamPos; // offset (from _buffer) of first not read byte from Stream - - public void MoveBlock() - { - int offset = _bufferOffset + _pos - _keepSizeBefore; - // we need one additional byte, since MovePos moves on 1 byte. - if (offset > 0) - offset--; - - int numBytes = _bufferOffset + _streamPos - offset; - - // check negative offset ???? - for (int i = 0; i < numBytes; i++) - _bufferBase[i] = _bufferBase[offset + i]; - _bufferOffset -= offset; - } - - public void ReadBlock() throws IOException - { - if (_streamEndWasReached) - return; - while (true) - { - int size = (0 - _bufferOffset) + _blockSize - _streamPos; - if (size == 0) - return; - int numReadBytes = _stream.read(_bufferBase, _bufferOffset + _streamPos, size); - if (numReadBytes == -1) - { - _posLimit = _streamPos; - int pointerToPostion = _bufferOffset + _posLimit; - if (pointerToPostion > _pointerToLastSafePosition) - _posLimit = _pointerToLastSafePosition - _bufferOffset; - - _streamEndWasReached = true; - return; - } - _streamPos += numReadBytes; - if (_streamPos >= _pos + _keepSizeAfter) - _posLimit = _streamPos - _keepSizeAfter; - } - } - - void Free() { _bufferBase = null; } - - public void Create(int keepSizeBefore, int keepSizeAfter, int keepSizeReserv) - { - _keepSizeBefore = keepSizeBefore; - _keepSizeAfter = keepSizeAfter; - int blockSize = keepSizeBefore + keepSizeAfter + keepSizeReserv; - if (_bufferBase == null || _blockSize != blockSize) - { - Free(); - _blockSize = blockSize; - _bufferBase = new byte[_blockSize]; - } - _pointerToLastSafePosition = _blockSize - keepSizeAfter; - } - - public void SetStream(java.io.InputStream stream) { _stream = stream; } - public void ReleaseStream() { _stream = null; } - - public void Init() throws IOException - { - _bufferOffset = 0; - _pos = 0; - _streamPos = 0; - _streamEndWasReached = false; - ReadBlock(); - } - - public void MovePos() throws IOException - { - _pos++; - if (_pos > _posLimit) - { - int pointerToPostion = _bufferOffset + _pos; - if (pointerToPostion > _pointerToLastSafePosition) - MoveBlock(); - ReadBlock(); - } - } - - public byte GetIndexByte(int index) { return _bufferBase[_bufferOffset + _pos + index]; } - - // index + limit have not to exceed _keepSizeAfter; - public int GetMatchLen(int index, int distance, int limit) - { - if (_streamEndWasReached) - if ((_pos + index) + limit > _streamPos) - limit = _streamPos - (_pos + index); - distance++; - // Byte *pby = _buffer + (size_t)_pos + index; - int pby = _bufferOffset + _pos + index; - - int i; - for (i = 0; i < limit && _bufferBase[pby + i] == _bufferBase[pby + i - distance]; i++); - return i; - } - - public int GetNumAvailableBytes() { return _streamPos - _pos; } - - public void ReduceOffsets(int subValue) - { - _bufferOffset += subValue; - _posLimit -= subValue; - _pos -= subValue; - _streamPos -= subValue; - } -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/Compression/LZ/OutWindow.java b/libbuild/J7Zip-modified/src/SevenZip/Compression/LZ/OutWindow.java deleted file mode 100644 index 327029c786..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Compression/LZ/OutWindow.java +++ /dev/null @@ -1,107 +0,0 @@ -// LZ.OutWindow - -package SevenZip.Compression.LZ; - -import java.io.IOException; - -public class OutWindow { - byte[] _buffer; - byte[] _buffer2 = null; - int _bufferPos2 = 0; - int _pos; - int _windowSize = 0; - int _streamPos; - java.io.OutputStream _stream; - long _processedSize; - - public void Create(int windowSize) { - final int kMinBlockSize = 1; - if (windowSize < kMinBlockSize) - windowSize = kMinBlockSize; - - if (_buffer == null || _windowSize != windowSize) - _buffer = new byte[windowSize]; - _windowSize = windowSize; - _pos = 0; - _streamPos = 0; - } - - public void SetStream(java.io.OutputStream stream) throws IOException { - ReleaseStream(); - _stream = stream; - } - - public void ReleaseStream() throws IOException { - Flush(); - _stream = null; - } - - public void SetMemStream(byte [] d) { - _buffer2 = d; - _bufferPos2 = 0; - } - - public void Init() { - Init(false); - } - public void Init(boolean solid) { - _processedSize = 0; - if (!solid) { - _streamPos = 0; - _pos = 0; - } - } - - public void Flush() throws IOException { - int size = _pos - _streamPos; - if (size == 0) - return; - if (_stream != null) _stream.write(_buffer, _streamPos, size); - if (_buffer2 != null) { - System.arraycopy(_buffer, _streamPos, _buffer2, _bufferPos2, size); - _bufferPos2 += size; - } - if (_pos >= _windowSize) - _pos = 0; - _streamPos = _pos; - } - - public void CopyBlock(int distance, int len) throws IOException { - int pos = _pos - distance - 1; - if (pos < 0) - pos += _windowSize; - for (; len != 0; len--) { - if (pos >= _windowSize) - pos = 0; - _buffer[_pos++] = _buffer[pos++]; - _processedSize++; - if (_pos >= _windowSize) - Flush(); - } - } - - public void PutByte(byte b) throws IOException { - _buffer[_pos++] = b; - _processedSize++; - if (_pos >= _windowSize) - Flush(); - } - - public void WriteByte(int b) throws IOException { - _buffer[_pos++] = (byte)b; - _processedSize++; - if (_pos >= _windowSize) - Flush(); - } - - public byte GetByte(int distance) { - int pos = _pos - distance - 1; - if (pos < 0) - pos += _windowSize; - return _buffer[pos]; - } - - public long GetProcessedSize() { - return _processedSize; - } -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/Compression/LZMA/Base.java b/libbuild/J7Zip-modified/src/SevenZip/Compression/LZMA/Base.java deleted file mode 100644 index 18deed9232..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Compression/LZMA/Base.java +++ /dev/null @@ -1,88 +0,0 @@ -// Base.java - -package SevenZip.Compression.LZMA; - -public class Base -{ - public static final int kNumRepDistances = 4; - public static final int kNumStates = 12; - - public static final int StateInit() - { - return 0; - } - - public static final int StateUpdateChar(int index) - { - if (index < 4) - return 0; - if (index < 10) - return index - 3; - return index - 6; - } - - public static final int StateUpdateMatch(int index) - { - return (index < 7 ? 7 : 10); - } - - public static final int StateUpdateRep(int index) - { - return (index < 7 ? 8 : 11); - } - - public static final int StateUpdateShortRep(int index) - { - return (index < 7 ? 9 : 11); - } - - public static final boolean StateIsCharState(int index) - { - return index < 7; - } - - public static final int kNumPosSlotBits = 6; - public static final int kDicLogSizeMin = 0; - // public static final int kDicLogSizeMax = 28; - // public static final int kDistTableSizeMax = kDicLogSizeMax * 2; - - public static final int kNumLenToPosStatesBits = 2; // it's for speed optimization - public static final int kNumLenToPosStates = 1 << kNumLenToPosStatesBits; - - public static final int kMatchMinLen = 2; - - public static final int GetLenToPosState(int len) - { - len -= kMatchMinLen; - if (len < kNumLenToPosStates) - return len; - return (int)(kNumLenToPosStates - 1); - } - - public static final int kNumAlignBits = 4; - public static final int kAlignTableSize = 1 << kNumAlignBits; - public static final int kAlignMask = (kAlignTableSize - 1); - - public static final int kStartPosModelIndex = 4; - public static final int kEndPosModelIndex = 14; - public static final int kNumPosModels = kEndPosModelIndex - kStartPosModelIndex; - - public static final int kNumFullDistances = 1 << (kEndPosModelIndex / 2); - - public static final int kNumLitPosStatesBitsEncodingMax = 4; - public static final int kNumLitContextBitsMax = 8; - - public static final int kNumPosStatesBitsMax = 4; - public static final int kNumPosStatesMax = (1 << kNumPosStatesBitsMax); - public static final int kNumPosStatesBitsEncodingMax = 4; - public static final int kNumPosStatesEncodingMax = (1 << kNumPosStatesBitsEncodingMax); - - public static final int kNumLowLenBits = 3; - public static final int kNumMidLenBits = 3; - public static final int kNumHighLenBits = 8; - public static final int kNumLowLenSymbols = 1 << kNumLowLenBits; - public static final int kNumMidLenSymbols = 1 << kNumMidLenBits; - public static final int kNumLenSymbols = kNumLowLenSymbols + kNumMidLenSymbols + - (1 << kNumHighLenBits); - public static final int kMatchMaxLen = kMatchMinLen + kNumLenSymbols - 1; -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/Compression/LZMA/Decoder.java b/libbuild/J7Zip-modified/src/SevenZip/Compression/LZMA/Decoder.java deleted file mode 100644 index 422249a47e..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Compression/LZMA/Decoder.java +++ /dev/null @@ -1,437 +0,0 @@ -package SevenZip.Compression.LZMA; - -import SevenZip.ICompressCoder; -import SevenZip.ICompressGetInStreamProcessedSize; -import SevenZip.ICompressProgressInfo; -import SevenZip.ICompressSetInStream; -import SevenZip.ICompressSetOutStreamSize; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; - -import SevenZip.Compression.LZ.OutWindow; -import SevenZip.Compression.RangeCoder.BitTreeDecoder; - -public class Decoder extends InputStream implements ICompressCoder, ICompressGetInStreamProcessedSize, - ICompressSetInStream, ICompressSetOutStreamSize { - - private static final int kLenIdFinished = -1; - private static final int kLenIdNeedInit = -2; - - private final SevenZip.Compression.RangeCoder.Decoder m_RangeDecoder = new SevenZip.Compression.RangeCoder.Decoder(); - private final OutWindow m_OutWindow = new OutWindow(); - - private final short[] m_IsMatchDecoders = new short[Base.kNumStates << Base.kNumPosStatesBitsMax]; - private final short[] m_IsRepDecoders = new short[Base.kNumStates]; - private final short[] m_IsRepG0Decoders = new short[Base.kNumStates]; - private final short[] m_IsRepG1Decoders = new short[Base.kNumStates]; - private final short[] m_IsRepG2Decoders = new short[Base.kNumStates]; - private final short[] m_IsRep0LongDecoders = new short[Base.kNumStates << Base.kNumPosStatesBitsMax]; - private final short[] m_PosDecoders = new short[Base.kNumFullDistances - Base.kEndPosModelIndex]; - - private final BitTreeDecoder[] m_PosSlotDecoder = new BitTreeDecoder[Base.kNumLenToPosStates]; - private final BitTreeDecoder m_PosAlignDecoder = new BitTreeDecoder(Base.kNumAlignBits); - - private final LenDecoder m_LenDecoder; - private final LenDecoder m_RepLenDecoder; - - private final LiteralDecoder m_LiteralDecoder; - - private final int m_DictionarySize; - private final int m_DictionarySizeCheck; - - private int m_posStateMask; - - private long _outSize = 0; - private boolean _outSizeDefined = false; - private int _remainLen; // -1 means end of stream. // -2 means need Init - private int _rep0; - private int _rep1; - private int _rep2; - private int _rep3; - private int _state; - - public Decoder(byte[] properties) { - for (int i = 0; i < Base.kNumLenToPosStates; i++) - this.m_PosSlotDecoder[i] = new BitTreeDecoder(Base.kNumPosSlotBits); - - if (properties.length < 5) - throw new IllegalArgumentException("properties.length < 5"); - int val = properties[0] & 0xFF; - int lc = val % 9; - int remainder = val / 9; - int lp = remainder % 5; - int pb = remainder / 5; - int dictionarySize = 0; - for (int i = 0; i < 4; i++) - dictionarySize += ((int)(properties[1 + i]) & 0xFF) << (i * 8); - - // Set lc, lp, pb - if (lc > Base.kNumLitContextBitsMax || lp > 4 || pb > Base.kNumPosStatesBitsMax) - throw new IllegalArgumentException("lc > Base.kNumLitContextBitsMax || lp > 4 || pb > Base.kNumPosStatesBitsMax"); - // if (this.m_LiteralDecoder != null) throw new NullPointerException("LiteralDecoder != null, WTF?!"); // hint: skip use of not initialized static variable - this.m_LiteralDecoder = new LiteralDecoder(lp, lc); - int numPosStates = 1 << pb; - this.m_LenDecoder = new LenDecoder(numPosStates); - this.m_RepLenDecoder = new LenDecoder(numPosStates); - this.m_posStateMask = numPosStates - 1; - - // set dictionary size - if (dictionarySize < 0) - throw new IllegalArgumentException("dictionarySize must not be smaller than 0"); - this.m_DictionarySize = dictionarySize; - this.m_DictionarySizeCheck = Math.max(this.m_DictionarySize, 1); - this.m_OutWindow.Create(Math.max(this.m_DictionarySizeCheck, (1 << 12))); - this.m_RangeDecoder.Create(1 << 20); - } - - public long GetInStreamProcessedSize() { - throw new UnknownError("GetInStreamProcessedSize"); - // return m_RangeDecoder.GetProcessedSize(); - } - - public void ReleaseInStream() throws IOException { - this.m_RangeDecoder.ReleaseStream(); - } - - public void SetInStream(InputStream inStream) { // Common.ISequentialInStream - this.m_RangeDecoder.SetStream(inStream); - } - - public void SetOutStreamSize(long outSize /* const UInt64 *outSize*/ ) { - this._outSizeDefined = (outSize != ICompressSetOutStreamSize.INVALID_OUTSIZE); - if (this._outSizeDefined) - this._outSize = outSize; - this._remainLen = kLenIdNeedInit; - this.m_OutWindow.Init(); - } - - // #ifdef _ST_MODE - public int read() throws IOException { - throw new IOException("LZMA Decoder - read() not implemented"); - } - - public int read(byte [] data, int off, int size) throws IOException { - if (off != 0) throw new IOException("LZMA Decoder - read(byte [] data, int off != 0, int size)) not implemented"); - - long startPos = this.m_OutWindow.GetProcessedSize(); - this.m_OutWindow.SetMemStream(data); - CodeSpec(size); - Flush(); - int ret = (int)(this.m_OutWindow.GetProcessedSize() - startPos); - if (ret == 0) ret = -1; - return ret; - } - - // #endif // _ST_MODE - - private void Init() throws IOException { - this.m_OutWindow.Init(false); - - SevenZip.Compression.RangeCoder.Decoder.InitBitModels(this.m_IsMatchDecoders); - SevenZip.Compression.RangeCoder.Decoder.InitBitModels(this.m_IsRep0LongDecoders); - SevenZip.Compression.RangeCoder.Decoder.InitBitModels(this.m_IsRepDecoders); - SevenZip.Compression.RangeCoder.Decoder.InitBitModels(this.m_IsRepG0Decoders); - SevenZip.Compression.RangeCoder.Decoder.InitBitModels(this.m_IsRepG1Decoders); - SevenZip.Compression.RangeCoder.Decoder.InitBitModels(this.m_IsRepG2Decoders); - SevenZip.Compression.RangeCoder.Decoder.InitBitModels(this.m_PosDecoders); - - this._rep0 = this._rep1 = this._rep2 = this._rep3 = 0; - this._state = Base.StateInit(); - - // this.m_LiteralDecoder.Init(); - for (int i = 0; i < Base.kNumLenToPosStates; i++) - this.m_PosSlotDecoder[i].Init(); - // this.m_LenDecoder.Init(); - // this.m_RepLenDecoder.Init(); - this.m_PosAlignDecoder.Init(); - } - - public void Flush() throws IOException { - this.m_OutWindow.Flush(); - } - - private void ReleaseStreams() throws IOException { - this.m_OutWindow.ReleaseStream(); - ReleaseInStream(); - } - - public void CodeReal( - InputStream inStream, // , ISequentialInStream - OutputStream outStream, // ISequentialOutStream - long outSize, - ICompressProgressInfo progress // useless_progress - ) throws IOException { - SetInStream(inStream); - this.m_OutWindow.SetStream(outStream); - SetOutStreamSize(outSize); - - do { - int curSize = 1 << 18; - CodeSpec(curSize); - if (this._remainLen == kLenIdFinished) - break; - - if (progress != null) { - long inSize = this.m_RangeDecoder.GetProcessedSize(); - long nowPos64 = this.m_OutWindow.GetProcessedSize(); - progress.SetRatioInfo(inSize, nowPos64); - } - } while (!this._outSizeDefined || this.m_OutWindow.GetProcessedSize() < this._outSize); - Flush(); - } - - public void Code( - InputStream inStream, // , ISequentialInStream - OutputStream outStream, // ISequentialOutStream - long outSize, - ICompressProgressInfo progress // useless_progress - ) throws IOException { - try { - CodeReal(inStream,outStream,outSize,progress); - } finally { - Flush(); - ReleaseStreams(); - } - } - - private void CodeSpec(int curSize) throws IOException { - if (this._outSizeDefined) { - long rem = this._outSize - this.m_OutWindow.GetProcessedSize(); - if (curSize > rem) - curSize = (int)rem; - } - - if (this._remainLen == kLenIdFinished) - return; - if (this._remainLen == kLenIdNeedInit) { - this.m_RangeDecoder.Init(); - Init(); - this._remainLen = 0; - } - if (curSize == 0) - return; - - int rep0 = this._rep0; - int rep1 = this._rep1; - int rep2 = this._rep2; - int rep3 = this._rep3; - int state = this._state; - byte prevByte; - - while(this._remainLen > 0 && curSize > 0) { - prevByte = this.m_OutWindow.GetByte(rep0); - this.m_OutWindow.PutByte(prevByte); - this._remainLen--; - curSize--; - } - long nowPos64 = this.m_OutWindow.GetProcessedSize(); - if (nowPos64 == 0) { - prevByte = 0; - } else { - prevByte = this.m_OutWindow.GetByte(0); - } - - while(curSize > 0) { - if (this.m_RangeDecoder.bufferedStream.WasFinished()) - throw new IOException("m_RangeDecoder.bufferedStream was finised"); - // return HRESULT.S_FALSE; - int posState = (int)nowPos64 & this.m_posStateMask; - - if (this.m_RangeDecoder.DecodeBit(this.m_IsMatchDecoders, (state << Base.kNumPosStatesBitsMax) + posState) == 0) { - LiteralDecoder.Decoder2 decoder2 = this.m_LiteralDecoder.GetDecoder((int)nowPos64, prevByte); - if (!Base.StateIsCharState(state)) { - prevByte = decoder2.DecodeWithMatchByte(this.m_RangeDecoder, this.m_OutWindow.GetByte(rep0)); - } else { - prevByte = decoder2.DecodeNormal(this.m_RangeDecoder); - } - this.m_OutWindow.PutByte(prevByte); - state = Base.StateUpdateChar(state); - curSize--; - nowPos64++; - } else { - int len; - if (this.m_RangeDecoder.DecodeBit(this.m_IsRepDecoders, state) == 1) { - len = 0; - if (this.m_RangeDecoder.DecodeBit(this.m_IsRepG0Decoders, state) == 0) { - if (this.m_RangeDecoder.DecodeBit(this.m_IsRep0LongDecoders, (state << Base.kNumPosStatesBitsMax) + posState) == 0) { - state = Base.StateUpdateShortRep(state); - len = 1; - } - } else { - int distance; - if (this.m_RangeDecoder.DecodeBit(this.m_IsRepG1Decoders, state) == 0) { - distance = rep1; - } else { - if (this.m_RangeDecoder.DecodeBit(this.m_IsRepG2Decoders, state) == 0) { - distance = rep2; - } else { - distance = rep3; - rep3 = rep2; - } - rep2 = rep1; - } - rep1 = rep0; - rep0 = distance; - } - if (len == 0) { - len = this.m_RepLenDecoder.Decode(this.m_RangeDecoder, posState) + Base.kMatchMinLen; - state = Base.StateUpdateRep(state); - } - } else { - rep3 = rep2; - rep2 = rep1; - rep1 = rep0; - len = Base.kMatchMinLen + this.m_LenDecoder.Decode(this.m_RangeDecoder, posState); - state = Base.StateUpdateMatch(state); - int posSlot = this.m_PosSlotDecoder[Base.GetLenToPosState(len)].Decode(this.m_RangeDecoder); - if (posSlot >= Base.kStartPosModelIndex) { - int numDirectBits = (posSlot >> 1) - 1; - rep0 = ((2 | (posSlot & 1)) << numDirectBits); - if (posSlot < Base.kEndPosModelIndex) { - rep0 += BitTreeDecoder.ReverseDecode( - this.m_PosDecoders, - rep0 - posSlot - 1, - this.m_RangeDecoder, - numDirectBits); - } else { - rep0 += (this.m_RangeDecoder.DecodeDirectBits(numDirectBits - Base.kNumAlignBits) << Base.kNumAlignBits); - rep0 += this.m_PosAlignDecoder.ReverseDecode(this.m_RangeDecoder); - if (rep0 < 0) { - if (rep0 == -1) - break; - throw new IOException("rep0 == -1"); - // return HRESULT.S_FALSE; - } - } - } else { - rep0 = posSlot; - } - } - - if (rep0 >= nowPos64 || rep0 >= this.m_DictionarySizeCheck) { - // m_OutWindow.Flush(); - this._remainLen = kLenIdFinished; - throw new IOException("rep0 >= nowPos64 || rep0 >= m_DictionarySizeCheck"); - // return HRESULT.S_FALSE; - } - - - int locLen = len; - if (len > curSize) - locLen = curSize; - // if (!m_OutWindow.CopyBlock(rep0, locLen)) - // return HRESULT.S_FALSE; - this.m_OutWindow.CopyBlock(rep0, locLen); - prevByte = this.m_OutWindow.GetByte(0); - curSize -= locLen; - nowPos64 += locLen; - len -= locLen; - if (len != 0) { - this._remainLen = len; - break; - } - } - } - - if (this.m_RangeDecoder.bufferedStream.WasFinished()) - throw new IOException("m_RangeDecoder.bufferedStream was finised"); - - this._rep0 = rep0; - this._rep1 = rep1; - this._rep2 = rep2; - this._rep3 = rep3; - this._state = state; - } - - private class LenDecoder { - - private final short[] m_Choice = new short[2]; - private final BitTreeDecoder[] m_LowCoder = new BitTreeDecoder[Base.kNumPosStatesMax]; - private final BitTreeDecoder[] m_MidCoder = new BitTreeDecoder[Base.kNumPosStatesMax]; - private final BitTreeDecoder m_HighCoder = new BitTreeDecoder(Base.kNumHighLenBits); - private int m_NumPosStates = 0; - - public LenDecoder(int numPosStates) { - while (this.m_NumPosStates < numPosStates) { - this.m_LowCoder[this.m_NumPosStates] = new BitTreeDecoder(Base.kNumLowLenBits); - this.m_MidCoder[this.m_NumPosStates] = new BitTreeDecoder(Base.kNumMidLenBits); - this.m_NumPosStates++; - } - SevenZip.Compression.RangeCoder.Decoder.InitBitModels(this.m_Choice); - for (int posState = 0; posState < this.m_NumPosStates; posState++) { - this.m_LowCoder[posState].Init(); - this.m_MidCoder[posState].Init(); - } - this.m_HighCoder.Init(); - } - - public int Decode(SevenZip.Compression.RangeCoder.Decoder rangeDecoder, int posState) throws IOException { - if (rangeDecoder.DecodeBit(this.m_Choice, 0) == 0) - return this.m_LowCoder[posState].Decode(rangeDecoder); - int symbol = Base.kNumLowLenSymbols; - if (rangeDecoder.DecodeBit(this.m_Choice, 1) == 0) - symbol += this.m_MidCoder[posState].Decode(rangeDecoder); - else - symbol += Base.kNumMidLenSymbols + this.m_HighCoder.Decode(rangeDecoder); - return symbol; - } - } - - private static class LiteralDecoder { - - private final Decoder2[] m_Coders; - private final int m_NumPrevBits; - private final int m_NumPosBits; - private final int m_PosMask; - - public LiteralDecoder(int numPosBits, int numPrevBits) { - this.m_NumPrevBits = numPrevBits; - this.m_NumPosBits = numPosBits; - this.m_PosMask = (1 << numPosBits) - 1; - final int numStates = 1 << (this.m_NumPrevBits + this.m_NumPosBits); - this.m_Coders = new Decoder2[numStates]; - for (int i = 0; i < numStates; i++) - this.m_Coders[i] = new Decoder2(); - } - - private Decoder2 GetDecoder(int pos, byte prevByte) { - final int indexHigh = (pos & this.m_PosMask) << this.m_NumPrevBits; - final int indexLow = (prevByte & 0xFF) >>> (8 - this.m_NumPrevBits); - return this.m_Coders[indexHigh + indexLow]; - } - - private static class Decoder2 { - final short[] m_Decoders = new short[0x300]; - - public Decoder2() { - SevenZip.Compression.RangeCoder.Decoder.InitBitModels(this.m_Decoders); - } - - public byte DecodeNormal(SevenZip.Compression.RangeCoder.Decoder rangeDecoder) throws IOException { - int symbol = 1; - do { - symbol = (symbol << 1) | rangeDecoder.DecodeBit(this.m_Decoders, symbol); - } while (symbol < 0x100); - return (byte)symbol; - } - - public byte DecodeWithMatchByte(SevenZip.Compression.RangeCoder.Decoder rangeDecoder, byte matchByte) throws IOException { - int symbol = 1, matchBit, bit; - do { - matchBit = (matchByte >> 7) & 1; - matchByte <<= 1; - bit = rangeDecoder.DecodeBit(this.m_Decoders, ((1 + matchBit) << 8) + symbol); - symbol = (symbol << 1) | bit; - if (matchBit != bit) { - while (symbol < 0x100) - symbol = (symbol << 1) | rangeDecoder.DecodeBit(this.m_Decoders, symbol); - break; - } - } while (symbol < 0x100); - return (byte)symbol; - } - } - } -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/Compression/LZMA/Encoder.java b/libbuild/J7Zip-modified/src/SevenZip/Compression/LZMA/Encoder.java deleted file mode 100644 index 61666acd72..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Compression/LZMA/Encoder.java +++ /dev/null @@ -1,1280 +0,0 @@ - -package SevenZip.Compression.LZMA; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; - -import SevenZip.ICodeProgress; -import SevenZip.Compression.LZ.BinTree; -import SevenZip.Compression.LZMA.Base; -import SevenZip.Compression.RangeCoder.BitTreeEncoder; - -public class Encoder { - - public static final int EMatchFinderTypeBT2 = 0; - public static final int EMatchFinderTypeBT4 = 1; - public static final int kNumLenSpecSymbols = Base.kNumLowLenSymbols + Base.kNumMidLenSymbols; - public static final int kPropSize = 5; - - private static final int kIfinityPrice = 0xFFFFFFF; - - private static final int kDefaultDictionaryLogSize = 22; - private static final int kNumFastBytesDefault = 0x20; - - private static byte[] g_FastPos = new byte[1 << 11]; - private static final int kNumOpts = 1 << 12; - - static { - int kFastSlots = 22; - int c = 2; - g_FastPos[0] = 0; - g_FastPos[1] = 1; - for (int slotFast = 2; slotFast < kFastSlots; slotFast++) { - int k = (1 << ((slotFast >> 1) - 1)); - for (int j = 0; j < k; j++, c++) - g_FastPos[c] = (byte)slotFast; - } - } - - - static int GetPosSlot(int pos) { - if (pos < (1 << 11)) return g_FastPos[pos]; - if (pos < (1 << 21)) return (g_FastPos[pos >> 10] + 20); - return (g_FastPos[pos >> 20] + 40); - } - - static int GetPosSlot2(int pos) { - if (pos < (1 << 17)) return (g_FastPos[pos >> 6] + 12); - if (pos < (1 << 27)) return (g_FastPos[pos >> 16] + 32); - return (g_FastPos[pos >> 26] + 52); - } - - private int _state = Base.StateInit(); - private byte _previousByte; - private int[] _repDistances = new int[Base.kNumRepDistances]; - private Optimal[] _optimum = new Optimal[kNumOpts]; - private BinTree _matchFinder = null; - private SevenZip.Compression.RangeCoder.Encoder _rangeEncoder = new SevenZip.Compression.RangeCoder.Encoder(); - private short[] _isMatch = new short[Base.kNumStates << Base.kNumPosStatesBitsMax]; - private short[] _isRep = new short[Base.kNumStates]; - private short[] _isRepG0 = new short[Base.kNumStates]; - private short[] _isRepG1 = new short[Base.kNumStates]; - private short[] _isRepG2 = new short[Base.kNumStates]; - private short[] _isRep0Long = new short[Base.kNumStates << Base.kNumPosStatesBitsMax]; - private BitTreeEncoder[] _posSlotEncoder = new BitTreeEncoder[Base.kNumLenToPosStates]; // kNumPosSlotBits - private short[] _posEncoders = new short[Base.kNumFullDistances - Base.kEndPosModelIndex]; - private BitTreeEncoder _posAlignEncoder = new BitTreeEncoder(Base.kNumAlignBits); - private LenPriceTableEncoder _lenEncoder = new LenPriceTableEncoder(); - private LenPriceTableEncoder _repMatchLenEncoder = new LenPriceTableEncoder(); - private LiteralEncoder _literalEncoder = new LiteralEncoder(); - private int[] _matchDistances = new int[Base.kMatchMaxLen * 2 + 2]; - private int _numFastBytes = kNumFastBytesDefault; - private int _longestMatchLength; - private int _numDistancePairs; - private int _additionalOffset; - private int _optimumEndIndex; - private int _optimumCurrentIndex; - private boolean _longestMatchWasFound; - private int[] _posSlotPrices = new int[1 << (Base.kNumPosSlotBits + Base.kNumLenToPosStatesBits)]; - private int[] _distancesPrices = new int[Base.kNumFullDistances << Base.kNumLenToPosStatesBits]; - private int[] _alignPrices = new int[Base.kAlignTableSize]; - private int _alignPriceCount; - private int _distTableSize = (kDefaultDictionaryLogSize * 2); - private int _posStateBits = 2; - private int _posStateMask = (4 - 1); - private int _numLiteralPosStateBits = 0; - private int _numLiteralContextBits = 3; - private int _dictionarySize = (1 << kDefaultDictionaryLogSize); - private int _dictionarySizePrev = -1; - private int _numFastBytesPrev = -1; - private long nowPos64; - private boolean _finished; - private InputStream _inStream; - private int _matchFinderType = EMatchFinderTypeBT4; - private boolean _writeEndMark = false; - private boolean _needReleaseMFStream = false; - private int[] reps = new int[Base.kNumRepDistances]; - private int[] repLens = new int[Base.kNumRepDistances]; - private int backRes; - private long[] processedInSize = new long[1]; - private long[] processedOutSize = new long[1]; - private boolean[] finished = new boolean[1]; - private byte[] properties = new byte[kPropSize]; - private int[] tempPrices = new int[Base.kNumFullDistances]; - private int _matchPriceCount; - - public Encoder() { - for (int i = 0; i < kNumOpts; i++) - this._optimum[i] = new Optimal(); - for (int i = 0; i < Base.kNumLenToPosStates; i++) - this._posSlotEncoder[i] = new BitTreeEncoder(Base.kNumPosSlotBits); - } - - private int Backward(int cur) { - this._optimumEndIndex = cur; - int posMem = this._optimum[cur].PosPrev; - int backMem = this._optimum[cur].BackPrev; - do { - if (this._optimum[cur].Prev1IsChar) { - this._optimum[posMem].MakeAsChar(); - this._optimum[posMem].PosPrev = posMem - 1; - if (this._optimum[cur].Prev2) { - this._optimum[posMem - 1].Prev1IsChar = false; - this._optimum[posMem - 1].PosPrev = this._optimum[cur].PosPrev2; - this._optimum[posMem - 1].BackPrev = this._optimum[cur].BackPrev2; - } - } - int posPrev = posMem; - int backCur = backMem; - - backMem = this._optimum[posPrev].BackPrev; - posMem = this._optimum[posPrev].PosPrev; - - this._optimum[posPrev].BackPrev = backCur; - this._optimum[posPrev].PosPrev = cur; - cur = posPrev; - } while (cur > 0); - this.backRes = this._optimum[0].BackPrev; - this._optimumCurrentIndex = this._optimum[0].PosPrev; - return this._optimumCurrentIndex; - } - - - private void BaseInit() { - this._state = Base.StateInit(); - this._previousByte = 0; - for (int i = 0; i < Base.kNumRepDistances; i++) - this._repDistances[i] = 0; - } - - private boolean ChangePair(int smallDist, int bigDist) { - int kDif = 7; - return (smallDist < (1 << (32 - kDif)) && bigDist >= (smallDist << kDif)); - } - - public void Code( - InputStream inStream, - OutputStream outStream, - long inSize, - long outSize, - ICodeProgress progress) throws IOException { - this._needReleaseMFStream = false; - try { - SetStreams(inStream, outStream, inSize, outSize); - while (true) { - - CodeOneBlock(this.processedInSize, this.processedOutSize, - this.finished); - if (this.finished[0]) return; - if (progress != null) { - progress.SetProgress(this.processedInSize[0], - this.processedOutSize[0]); - } - } - } finally { - ReleaseStreams(); - } - } - - - public void CodeOneBlock(long[] inSize, long[] outSize, boolean[] finished) - throws IOException { - inSize[0] = 0; - outSize[0] = 0; - finished[0] = true; - - if (this._inStream != null) { - this._matchFinder.SetStream(this._inStream); - this._matchFinder.Init(); - this._needReleaseMFStream = true; - this._inStream = null; - } - - if (this._finished) return; - this._finished = true; - - long progressPosValuePrev = this.nowPos64; - if (this.nowPos64 == 0) { - if (this._matchFinder.GetNumAvailableBytes() == 0) { - Flush((int)this.nowPos64); - return; - } - - ReadMatchDistances(); - int posState = (int)this.nowPos64 & this._posStateMask; - this._rangeEncoder.Encode(this._isMatch, (this._state << Base.kNumPosStatesBitsMax) + posState, 0); - this._state = Base.StateUpdateChar(this._state); - byte curByte = this._matchFinder.GetIndexByte(0 - this._additionalOffset); - this._literalEncoder.GetSubCoder((int)this.nowPos64, this._previousByte).Encode(this._rangeEncoder, curByte); - this._previousByte = curByte; - this._additionalOffset--; - this.nowPos64++; - } - if (this._matchFinder.GetNumAvailableBytes() == 0) { - Flush((int)this.nowPos64); - return; - } - - while (true) { - int len = GetOptimum((int)this.nowPos64); - int pos = this.backRes; - int posState = ((int)this.nowPos64) & this._posStateMask; - int complexState = (this._state << Base.kNumPosStatesBitsMax) + posState; - if (len == 1 && pos == -1) { - this._rangeEncoder.Encode(this._isMatch, complexState, 0); - byte curByte = this._matchFinder.GetIndexByte((int)(0 - this._additionalOffset)); - LiteralEncoder.Encoder2 subCoder = this._literalEncoder.GetSubCoder((int)this.nowPos64, this._previousByte); - if (!Base.StateIsCharState(this._state)) { - byte matchByte = this._matchFinder.GetIndexByte( - (int)(0 - this._repDistances[0] - 1 - this._additionalOffset)); - subCoder.EncodeMatched(this._rangeEncoder, matchByte, curByte); - } else { - subCoder.Encode(this._rangeEncoder, curByte); - } - this._previousByte = curByte; - this._state = Base.StateUpdateChar(this._state); - } else { - this._rangeEncoder.Encode(this._isMatch, complexState, 1); - if (pos < Base.kNumRepDistances) { - this._rangeEncoder.Encode(this._isRep, this._state, 1); - if (pos == 0) { - this._rangeEncoder.Encode(this._isRepG0, this._state, 0); - if (len == 1) { - this._rangeEncoder.Encode(this._isRep0Long, complexState, 0); - } else { - this._rangeEncoder.Encode(this._isRep0Long, complexState, 1); - } - } else { - this._rangeEncoder.Encode(this._isRepG0, this._state, 1); - if (pos == 1) { - this._rangeEncoder.Encode(this._isRepG1, this._state, 0); - } else { - this._rangeEncoder.Encode(this._isRepG1, this._state, 1); - this._rangeEncoder.Encode(this._isRepG2, this._state, pos - 2); - } - } - - if (len == 1) { - this._state = Base.StateUpdateShortRep(this._state); - } else { - this._repMatchLenEncoder.Encode(this._rangeEncoder, len - Base.kMatchMinLen, posState); - this._state = Base.StateUpdateRep(this._state); - } - int distance = this._repDistances[pos]; - if (pos != 0) { - for (int i = pos; i >= 1; i--) - this._repDistances[i] = this._repDistances[i - 1]; - this._repDistances[0] = distance; - } - } else { - this._rangeEncoder.Encode(this._isRep, this._state, 0); - this._state = Base.StateUpdateMatch(this._state); - this._lenEncoder.Encode(this._rangeEncoder, len - Base.kMatchMinLen, posState); - pos -= Base.kNumRepDistances; - int posSlot = GetPosSlot(pos); - int lenToPosState = Base.GetLenToPosState(len); - this._posSlotEncoder[lenToPosState].Encode(this._rangeEncoder, posSlot); - - if (posSlot >= Base.kStartPosModelIndex) { - int footerBits = (int)((posSlot >> 1) - 1); - int baseVal = ((2 | (posSlot & 1)) << footerBits); - int posReduced = pos - baseVal; - - if (posSlot < Base.kEndPosModelIndex) - BitTreeEncoder.ReverseEncode( - this._posEncoders, - baseVal - posSlot - 1, - this._rangeEncoder, - footerBits, - posReduced); - else { - this._rangeEncoder.EncodeDirectBits( - posReduced >> Base.kNumAlignBits, - footerBits - Base.kNumAlignBits); - this._posAlignEncoder.ReverseEncode(this._rangeEncoder, posReduced & Base.kAlignMask); - this._alignPriceCount++; - } - } - int distance = pos; - for (int i = Base.kNumRepDistances - 1; i >= 1; i--) - this._repDistances[i] = this._repDistances[i - 1]; - this._repDistances[0] = distance; - this._matchPriceCount++; - } - this._previousByte = this._matchFinder.GetIndexByte(len - 1 - this._additionalOffset); - } - this._additionalOffset -= len; - this.nowPos64 += len; - if (this._additionalOffset == 0) { - // if (!_fastMode) - if (this._matchPriceCount >= (1 << 7)) - FillDistancesPrices(); - if (this._alignPriceCount >= Base.kAlignTableSize) - FillAlignPrices(); - inSize[0] = this.nowPos64; - outSize[0] = this._rangeEncoder.GetProcessedSizeAdd(); - if (this._matchFinder.GetNumAvailableBytes() == 0) { - Flush((int)this.nowPos64); - return; - } - - if (this.nowPos64 - progressPosValuePrev >= (1 << 12)) { - this._finished = false; - finished[0] = false; - return; - } - } - } // end while - } - - private void Create() { - if (this._matchFinder == null) { - BinTree bt = new BinTree(); - int numHashBytes = (this._matchFinderType == EMatchFinderTypeBT2) ? 2 : 4; - bt.SetType(numHashBytes); - this._matchFinder = bt; - } - this._literalEncoder.Create(this._numLiteralPosStateBits, this._numLiteralContextBits); - - if (this._dictionarySize == this._dictionarySizePrev && this._numFastBytesPrev == this._numFastBytes) - return; - this._matchFinder.Create(this._dictionarySize, kNumOpts, this._numFastBytes, Base.kMatchMaxLen + 1); - this._dictionarySizePrev = this._dictionarySize; - this._numFastBytesPrev = this._numFastBytes; - } - - private void FillAlignPrices() { - for (int i = 0; i < Base.kAlignTableSize; i++) - this._alignPrices[i] = this._posAlignEncoder.ReverseGetPrice(i); - this._alignPriceCount = 0; - } - - private void FillDistancesPrices() { - for (int i = Base.kStartPosModelIndex; i < Base.kNumFullDistances; i++) { - int posSlot = GetPosSlot(i); - int footerBits = (int)((posSlot >> 1) - 1); - int baseVal = ((2 | (posSlot & 1)) << footerBits); - this.tempPrices[i] = BitTreeEncoder.ReverseGetPrice( - this._posEncoders, - baseVal - posSlot - 1, - footerBits, - i - baseVal); - } - - for (int lenToPosState = 0; lenToPosState < Base.kNumLenToPosStates; lenToPosState++) { - int posSlot; - BitTreeEncoder encoder = this._posSlotEncoder[lenToPosState]; - - int st = (lenToPosState << Base.kNumPosSlotBits); - for (posSlot = 0; posSlot < this._distTableSize; posSlot++) - this._posSlotPrices[st + posSlot] = encoder.GetPrice(posSlot); - for (posSlot = Base.kEndPosModelIndex; posSlot < this._distTableSize; posSlot++) - this._posSlotPrices[st + posSlot] += (((posSlot >> 1) - 1) - Base.kNumAlignBits) << SevenZip.Compression.RangeCoder.Encoder.kNumBitPriceShiftBits; - - int st2 = lenToPosState * Base.kNumFullDistances; - int i; - for (i = 0; i < Base.kStartPosModelIndex; i++) - this._distancesPrices[st2 + i] = this._posSlotPrices[st + i]; - for (; i < Base.kNumFullDistances; i++) - this._distancesPrices[st2 + i] = this._posSlotPrices[st + GetPosSlot(i)] + this.tempPrices[i]; - } - this._matchPriceCount = 0; - } - - private void Flush(int nowPos) throws IOException { - ReleaseMFStream(); - WriteEndMarker(nowPos & this._posStateMask); - this._rangeEncoder.FlushData(); - this._rangeEncoder.FlushStream(); - } - - private int GetOptimum(int position) throws IOException { - if (this._optimumEndIndex != this._optimumCurrentIndex) { - int lenRes = this._optimum[this._optimumCurrentIndex].PosPrev - this._optimumCurrentIndex; - this.backRes = this._optimum[this._optimumCurrentIndex].BackPrev; - this._optimumCurrentIndex = this._optimum[this._optimumCurrentIndex].PosPrev; - return lenRes; - } - this._optimumCurrentIndex = this._optimumEndIndex = 0; - - int lenMain, numDistancePairs; - if (!this._longestMatchWasFound) { - lenMain = ReadMatchDistances(); - } else { - lenMain = this._longestMatchLength; - this._longestMatchWasFound = false; - } - numDistancePairs = this._numDistancePairs; - - int numAvailableBytes = this._matchFinder.GetNumAvailableBytes() + 1; - if (numAvailableBytes < 2) { - this.backRes = -1; - return 1; - } - if (numAvailableBytes > Base.kMatchMaxLen) - numAvailableBytes = Base.kMatchMaxLen; - - int repMaxIndex = 0; - int i; - for (i = 0; i < Base.kNumRepDistances; i++) { - this.reps[i] = this._repDistances[i]; - this.repLens[i] = this._matchFinder.GetMatchLen( - 0 - 1, - this.reps[i], - Base.kMatchMaxLen); - if (this.repLens[i] > this.repLens[repMaxIndex]) repMaxIndex = i; - } - if (this.repLens[repMaxIndex] >= this._numFastBytes) { - this.backRes = repMaxIndex; - int lenRes = this.repLens[repMaxIndex]; - MovePos(lenRes - 1); - return lenRes; - } - - if (lenMain >= this._numFastBytes) { - this.backRes = this._matchDistances[numDistancePairs - 1] + Base.kNumRepDistances; - MovePos(lenMain - 1); - return lenMain; - } - - byte currentByte = this._matchFinder.GetIndexByte(0 - 1); - byte matchByte = this._matchFinder.GetIndexByte(0 - this._repDistances[0] - 1 - 1); - - if (lenMain < 2 && currentByte != matchByte && this.repLens[repMaxIndex] < 2) { - this.backRes = -1; - return 1; - } - - this._optimum[0].State = this._state; - - int posState = (position & this._posStateMask); - - this._optimum[1].Price = SevenZip.Compression.RangeCoder.Encoder.GetPrice0( - this._isMatch[(this._state << Base.kNumPosStatesBitsMax) + posState]) + - this._literalEncoder.GetSubCoder(position, this._previousByte).GetPrice( - !Base.StateIsCharState(this._state), matchByte, - currentByte); - this._optimum[1].MakeAsChar(); - - int matchPrice = SevenZip.Compression.RangeCoder.Encoder.GetPrice1( - this._isMatch[(this._state << Base.kNumPosStatesBitsMax) + posState]); - int repMatchPrice = matchPrice + SevenZip.Compression.RangeCoder.Encoder.GetPrice1(this._isRep[this._state]); - - if (matchByte == currentByte) { - int shortRepPrice = repMatchPrice + GetRepLen1Price(this._state, posState); - if (shortRepPrice < this._optimum[1].Price) { - this._optimum[1].Price = shortRepPrice; - this._optimum[1].MakeAsShortRep(); - } - } - - int lenEnd = ((lenMain >= this.repLens[repMaxIndex]) ? lenMain : this.repLens[repMaxIndex]); - - if (lenEnd < 2) { - this.backRes = this._optimum[1].BackPrev; - return 1; - } - - this._optimum[1].PosPrev = 0; - - this._optimum[0].Backs0 = this.reps[0]; - this._optimum[0].Backs1 = this.reps[1]; - this._optimum[0].Backs2 = this.reps[2]; - this._optimum[0].Backs3 = this.reps[3]; - - int len = lenEnd; - do { - this._optimum[len--].Price = kIfinityPrice; - } while (len >= 2); - - for (i = 0; i < Base.kNumRepDistances; i++) { - int repLen = this.repLens[i]; - if (repLen < 2) continue; - int price = repMatchPrice + GetPureRepPrice(i, this._state, posState); - do { - int curAndLenPrice = price + this._repMatchLenEncoder.GetPrice(repLen - 2, posState); - Optimal optimum = this._optimum[repLen]; - if (curAndLenPrice < optimum.Price) { - optimum.Price = curAndLenPrice; - optimum.PosPrev = 0; - optimum.BackPrev = i; - optimum.Prev1IsChar = false; - } - } while (--repLen >= 2); - } - - int normalMatchPrice = matchPrice + SevenZip.Compression.RangeCoder.Encoder.GetPrice0(this._isRep[this._state]); - len = ((this.repLens[0] >= 2) ? this.repLens[0] + 1 : 2); - if (len <= lenMain) { - int offs = 0; - while (len > this._matchDistances[offs]) - offs += 2; - - for (;; len++) { - int distance = this._matchDistances[offs + 1]; - int curAndLenPrice = normalMatchPrice + GetPosLenPrice(distance, len, posState); - Optimal optimum = this._optimum[len]; - if (curAndLenPrice < optimum.Price) { - optimum.Price = curAndLenPrice; - optimum.PosPrev = 0; - optimum.BackPrev = distance + Base.kNumRepDistances; - optimum.Prev1IsChar = false; - } - if (len == this._matchDistances[offs]) { - offs += 2; - if (offs == numDistancePairs) break; - } - } - } - - int cur = 0; - while (true) { - cur++; - if (cur == lenEnd) return Backward(cur); - int newLen = ReadMatchDistances(); - numDistancePairs = this._numDistancePairs; - if (newLen >= this._numFastBytes) { - this._longestMatchLength = newLen; - this._longestMatchWasFound = true; - return Backward(cur); - } - - position++; - int posPrev = this._optimum[cur].PosPrev; - int state; - if (this._optimum[cur].Prev1IsChar) { - posPrev--; - if (this._optimum[cur].Prev2) { - state = this._optimum[this._optimum[cur].PosPrev2].State; - if (this._optimum[cur].BackPrev2 < Base.kNumRepDistances) { - state = Base.StateUpdateRep(state); - } else { - state = Base.StateUpdateMatch(state); - } - } else { - state = this._optimum[posPrev].State; - } - state = Base.StateUpdateChar(state); - } else { - state = this._optimum[posPrev].State; - } - - if (posPrev == cur - 1) { - if (this._optimum[cur].IsShortRep()) { - state = Base.StateUpdateShortRep(state); - } else { - state = Base.StateUpdateChar(state); - } - } else { - int pos; - if (this._optimum[cur].Prev1IsChar && this._optimum[cur].Prev2) { - posPrev = this._optimum[cur].PosPrev2; - pos = this._optimum[cur].BackPrev2; - state = Base.StateUpdateRep(state); - } else if ((pos = this._optimum[cur].BackPrev) < Base.kNumRepDistances) { - state = Base.StateUpdateRep(state); - } else { - state = Base.StateUpdateMatch(state); - } - Optimal opt = this._optimum[posPrev]; - if (pos < Base.kNumRepDistances) { - if (pos == 0) { - this.reps[0] = opt.Backs0; - this.reps[1] = opt.Backs1; - this.reps[2] = opt.Backs2; - this.reps[3] = opt.Backs3; - } else if (pos == 1) { - this.reps[0] = opt.Backs1; - this.reps[1] = opt.Backs0; - this.reps[2] = opt.Backs2; - this.reps[3] = opt.Backs3; - } else if (pos == 2) { - this.reps[0] = opt.Backs2; - this.reps[1] = opt.Backs0; - this.reps[2] = opt.Backs1; - this.reps[3] = opt.Backs3; - } else { - this.reps[0] = opt.Backs3; - this.reps[1] = opt.Backs0; - this.reps[2] = opt.Backs1; - this.reps[3] = opt.Backs2; - } - } else { - this.reps[0] = (pos - Base.kNumRepDistances); - this.reps[1] = opt.Backs0; - this.reps[2] = opt.Backs1; - this.reps[3] = opt.Backs2; - } - } - this._optimum[cur].State = state; - this._optimum[cur].Backs0 = this.reps[0]; - this._optimum[cur].Backs1 = this.reps[1]; - this._optimum[cur].Backs2 = this.reps[2]; - this._optimum[cur].Backs3 = this.reps[3]; - int curPrice = this._optimum[cur].Price; - - currentByte = this._matchFinder.GetIndexByte(0 - 1); - matchByte = this._matchFinder.GetIndexByte(0 - this.reps[0] - 1 - 1); - - posState = (position & this._posStateMask); - - int curAnd1Price = curPrice + SevenZip.Compression.RangeCoder.Encoder.GetPrice0( - this._isMatch[(state << Base.kNumPosStatesBitsMax) + posState]) + - this._literalEncoder.GetSubCoder( - position, - this._matchFinder.GetIndexByte(0 - 2) - ).GetPrice( - !Base.StateIsCharState(state), matchByte, - currentByte); - - Optimal nextOptimum = this._optimum[cur + 1]; - - boolean nextIsChar = false; - if (curAnd1Price < nextOptimum.Price) { - nextOptimum.Price = curAnd1Price; - nextOptimum.PosPrev = cur; - nextOptimum.MakeAsChar(); - nextIsChar = true; - } - - matchPrice = curPrice + SevenZip.Compression.RangeCoder.Encoder.GetPrice1( - this._isMatch[(state << Base.kNumPosStatesBitsMax) + posState]); - repMatchPrice = matchPrice + SevenZip.Compression.RangeCoder.Encoder.GetPrice1(this._isRep[state]); - - if (matchByte == currentByte && !(nextOptimum.PosPrev < cur && nextOptimum.BackPrev == 0)) { - int shortRepPrice = repMatchPrice + GetRepLen1Price(state, posState); - if (shortRepPrice <= nextOptimum.Price) { - nextOptimum.Price = shortRepPrice; - nextOptimum.PosPrev = cur; - nextOptimum.MakeAsShortRep(); - nextIsChar = true; - } - } - - int numAvailableBytesFull = this._matchFinder.GetNumAvailableBytes() + 1; - numAvailableBytesFull = Math.min(kNumOpts - 1 - cur, numAvailableBytesFull); - numAvailableBytes = numAvailableBytesFull; - - if (numAvailableBytes < 2) continue; - if (numAvailableBytes > this._numFastBytes) - numAvailableBytes = this._numFastBytes; - if (!nextIsChar && matchByte != currentByte) { - // try Literal + rep0 - int t = Math.min(numAvailableBytesFull - 1, this._numFastBytes); - int lenTest2 = this._matchFinder.GetMatchLen(0, this.reps[0], t); - if (lenTest2 >= 2) { - int state2 = Base.StateUpdateChar(state); - - int posStateNext = (position + 1) & this._posStateMask; - int nextRepMatchPrice = curAnd1Price + - SevenZip.Compression.RangeCoder.Encoder.GetPrice1( - this._isMatch[(state2 << Base.kNumPosStatesBitsMax) + posStateNext] - ) + SevenZip.Compression.RangeCoder.Encoder.GetPrice1(this._isRep[state2]); - { - int offset = cur + 1 + lenTest2; - while (lenEnd < offset) - this._optimum[++lenEnd].Price = kIfinityPrice; - - int curAndLenPrice = nextRepMatchPrice + GetRepPrice(0, lenTest2, state2, posStateNext); - Optimal optimum = this._optimum[offset]; - if (curAndLenPrice < optimum.Price) { - optimum.Price = curAndLenPrice; - optimum.PosPrev = cur + 1; - optimum.BackPrev = 0; - optimum.Prev1IsChar = true; - optimum.Prev2 = false; - } - } - } - } - - int startLen = 2; // speed optimization - - for (int repIndex = 0; repIndex < Base.kNumRepDistances; repIndex++) { - int lenTest = this._matchFinder.GetMatchLen(0 - 1, this.reps[repIndex], numAvailableBytes); - if (lenTest < 2) continue; - int lenTestTemp = lenTest; - do { - while (lenEnd < cur + lenTest) - this._optimum[++lenEnd].Price = kIfinityPrice; - int curAndLenPrice = repMatchPrice - + GetRepPrice(repIndex, lenTest, state, posState); - Optimal optimum = this._optimum[cur + lenTest]; - if (curAndLenPrice < optimum.Price) { - optimum.Price = curAndLenPrice; - optimum.PosPrev = cur; - optimum.BackPrev = repIndex; - optimum.Prev1IsChar = false; - } - } while (--lenTest >= 2); - lenTest = lenTestTemp; - - if (repIndex == 0) startLen = lenTest + 1; - - - // if (_maxMode) - if (lenTest < numAvailableBytesFull) { - int t = Math.min(numAvailableBytesFull - 1 - lenTest, this._numFastBytes); - int lenTest2 = this._matchFinder.GetMatchLen(lenTest, this.reps[repIndex], t); - if (lenTest2 >= 2) { - int state2 = Base.StateUpdateRep(state); - - int posStateNext = (position + lenTest) & this._posStateMask; - int curAndLenCharPrice = repMatchPrice + GetRepPrice(repIndex, lenTest, state, posState) + - SevenZip.Compression.RangeCoder.Encoder.GetPrice0( - this._isMatch[(state2 << Base.kNumPosStatesBitsMax) + posStateNext] - ) + this._literalEncoder.GetSubCoder( - position + lenTest, - this._matchFinder.GetIndexByte(lenTest - 1 - 1) - ).GetPrice( - true, - this._matchFinder.GetIndexByte(lenTest - 1 - (this.reps[repIndex] + 1)), - this._matchFinder.GetIndexByte(lenTest - 1)); - state2 = Base.StateUpdateChar(state2); - posStateNext = (position + lenTest + 1) & this._posStateMask; - int nextMatchPrice = curAndLenCharPrice + SevenZip.Compression.RangeCoder.Encoder.GetPrice1( - this._isMatch[(state2 << Base.kNumPosStatesBitsMax) + posStateNext]); - int nextRepMatchPrice = nextMatchPrice + SevenZip.Compression.RangeCoder.Encoder.GetPrice1( - this._isRep[state2]); - - - // for(; lenTest2 >= 2; lenTest2--) - { - int offset = lenTest + 1 + lenTest2; - while (lenEnd < cur + offset) - this._optimum[++lenEnd].Price = kIfinityPrice; - - int curAndLenPrice = nextRepMatchPrice + GetRepPrice(0, lenTest2, state2, posStateNext); - Optimal optimum = this._optimum[cur + offset]; - if (curAndLenPrice < optimum.Price) { - optimum.Price = curAndLenPrice; - optimum.PosPrev = cur + lenTest + 1; - optimum.BackPrev = 0; - optimum.Prev1IsChar = true; - optimum.Prev2 = true; - optimum.PosPrev2 = cur; - optimum.BackPrev2 = repIndex; - } - } - } - } - } - - if (newLen > numAvailableBytes) { - newLen = numAvailableBytes; - for (numDistancePairs = 0; newLen > this._matchDistances[numDistancePairs]; numDistancePairs += 2); - this._matchDistances[numDistancePairs] = newLen; - numDistancePairs += 2; - } - - if (newLen >= startLen) { - normalMatchPrice = matchPrice + SevenZip.Compression.RangeCoder.Encoder.GetPrice0(this._isRep[state]); - while (lenEnd < cur + newLen) - this._optimum[++lenEnd].Price = kIfinityPrice; - - int offs = 0; - while (startLen > this._matchDistances[offs]) - offs += 2; - - for (int lenTest = startLen;; lenTest++) { - int curBack = this._matchDistances[offs + 1]; - int curAndLenPrice = normalMatchPrice + GetPosLenPrice(curBack, lenTest, posState); - Optimal optimum = this._optimum[cur + lenTest]; - if (curAndLenPrice < optimum.Price) { - optimum.Price = curAndLenPrice; - optimum.PosPrev = cur; - optimum.BackPrev = curBack + Base.kNumRepDistances; - optimum.Prev1IsChar = false; - } - - if (lenTest == this._matchDistances[offs]) { - if (lenTest < numAvailableBytesFull) { - int t = Math.min(numAvailableBytesFull - 1 - lenTest, this._numFastBytes); - int lenTest2 = this._matchFinder.GetMatchLen(lenTest, curBack, t); - if (lenTest2 >= 2) { - int state2 = Base.StateUpdateMatch(state); - - int posStateNext = (position + lenTest) & this._posStateMask; - int curAndLenCharPrice = curAndLenPrice + SevenZip.Compression.RangeCoder.Encoder.GetPrice0( - this._isMatch[(state2 << Base.kNumPosStatesBitsMax) + posStateNext]) + - this._literalEncoder.GetSubCoder( - position + lenTest, - this._matchFinder.GetIndexByte(lenTest - 1 - 1) - ).GetPrice( - true, - this._matchFinder.GetIndexByte(lenTest - (curBack + 1) - 1), - this._matchFinder.GetIndexByte(lenTest - 1)); - state2 = Base.StateUpdateChar(state2); - posStateNext = (position + lenTest + 1) & this._posStateMask; - int nextMatchPrice = curAndLenCharPrice + SevenZip.Compression.RangeCoder.Encoder.GetPrice1( - this._isMatch[(state2 << Base.kNumPosStatesBitsMax) + posStateNext]); - int nextRepMatchPrice = nextMatchPrice + SevenZip.Compression.RangeCoder.Encoder.GetPrice1( - this._isRep[state2]); - - int offset = lenTest + 1 + lenTest2; - while (lenEnd < cur + offset) - this._optimum[++lenEnd].Price = kIfinityPrice; - - curAndLenPrice = nextRepMatchPrice + GetRepPrice(0, lenTest2, state2, posStateNext); - optimum = this._optimum[cur + offset]; - if (curAndLenPrice < optimum.Price) { - optimum.Price = curAndLenPrice; - optimum.PosPrev = cur + lenTest + 1; - optimum.BackPrev = 0; - optimum.Prev1IsChar = true; - optimum.Prev2 = true; - optimum.PosPrev2 = cur; - optimum.BackPrev2 = curBack + Base.kNumRepDistances; - } - } - } - offs += 2; - if (offs == numDistancePairs) break; - } // end if - } // end for - } // end if - } // end while - } - - private int GetPosLenPrice(int pos, int len, int posState) { - int price; - int lenToPosState = Base.GetLenToPosState(len); - if (pos < Base.kNumFullDistances) { - price = this._distancesPrices[(lenToPosState * Base.kNumFullDistances) + pos]; - } else { - price = this._posSlotPrices[(lenToPosState << Base.kNumPosSlotBits) + GetPosSlot2(pos)] + - this._alignPrices[pos & Base.kAlignMask]; - } - return price + this._lenEncoder.GetPrice(len - Base.kMatchMinLen, posState); - } - - private int GetPureRepPrice(int repIndex, int state, int posState) { - int price; - if (repIndex == 0) { - price = SevenZip.Compression.RangeCoder.Encoder.GetPrice0(this._isRepG0[state]); - price += SevenZip.Compression.RangeCoder.Encoder.GetPrice1( - this._isRep0Long[(state << Base.kNumPosStatesBitsMax) + posState]); - } else { - price = SevenZip.Compression.RangeCoder.Encoder.GetPrice1(this._isRepG0[state]); - if (repIndex == 1) { - price += SevenZip.Compression.RangeCoder.Encoder.GetPrice0(this._isRepG1[state]); - } else { - price += SevenZip.Compression.RangeCoder.Encoder.GetPrice1(this._isRepG1[state]); - price += SevenZip.Compression.RangeCoder.Encoder.GetPrice(this._isRepG2[state], repIndex - 2); - } - } - return price; - } - - private int GetRepLen1Price(int state, int posState) { - final int r1 = SevenZip.Compression.RangeCoder.Encoder.GetPrice0(this._isRepG0[state]); - final int r2 = SevenZip.Compression.RangeCoder.Encoder.GetPrice0( - this._isRep0Long[(state << Base.kNumPosStatesBitsMax) + posState]); - return r1 + r2; - } - - private int GetRepPrice(int repIndex, int len, int state, int posState) { - final int price = this._repMatchLenEncoder.GetPrice(len - Base.kMatchMinLen, posState); - return price + GetPureRepPrice(repIndex, state, posState); - } - - private void Init() { - BaseInit(); - this._rangeEncoder.Init(); - - SevenZip.Compression.RangeCoder.Encoder.InitBitModels(this._isMatch); - SevenZip.Compression.RangeCoder.Encoder.InitBitModels(this._isRep0Long); - SevenZip.Compression.RangeCoder.Encoder.InitBitModels(this._isRep); - SevenZip.Compression.RangeCoder.Encoder.InitBitModels(this._isRepG0); - SevenZip.Compression.RangeCoder.Encoder.InitBitModels(this._isRepG1); - SevenZip.Compression.RangeCoder.Encoder.InitBitModels(this._isRepG2); - SevenZip.Compression.RangeCoder.Encoder.InitBitModels(this._posEncoders); - - this._literalEncoder.Init(); - for (int i = 0; i < Base.kNumLenToPosStates; i++) - this._posSlotEncoder[i].Init(); - - this._lenEncoder.Init(1 << this._posStateBits); - this._repMatchLenEncoder.Init(1 << this._posStateBits); - - this._posAlignEncoder.Init(); - - this._longestMatchWasFound = false; - this._optimumEndIndex = 0; - this._optimumCurrentIndex = 0; - this._additionalOffset = 0; - } - - private void MovePos(int num) throws IOException { - if (num > 0) { - this._matchFinder.Skip(num); - this._additionalOffset += num; - } - } - - private int ReadMatchDistances() throws IOException { - int lenRes = 0; - this._numDistancePairs = this._matchFinder.GetMatches(this._matchDistances); - if (this._numDistancePairs > 0) { - lenRes = this._matchDistances[this._numDistancePairs - 2]; - if (lenRes == this._numFastBytes) - lenRes += this._matchFinder.GetMatchLen( - (int)lenRes - 1, - this._matchDistances[this._numDistancePairs - 1], - Base.kMatchMaxLen - lenRes); - } - this._additionalOffset++; - return lenRes; - } - - private void ReleaseMFStream() { - if (this._matchFinder != null && this._needReleaseMFStream) { - this._matchFinder.ReleaseStream(); - this._needReleaseMFStream = false; - } - } - - private void ReleaseOutStream() { - this._rangeEncoder.ReleaseStream(); - } - - private void ReleaseStreams() { - ReleaseMFStream(); - ReleaseOutStream(); - } - - public boolean SetNumFastBytes(int numFastBytes) { - if (numFastBytes < 5 || numFastBytes > Base.kMatchMaxLen) return false; - this._numFastBytes = numFastBytes; - return true; - } - - public boolean SetAlgorithm(int algorithm) { - /* - * _fastMode = (algorithm == 0); _maxMode = (algorithm >= 2); - */ - return true; - } - - public boolean SetDictionarySize(int dictionarySize) { - int kDicLogSizeMaxCompress = 29; - if (dictionarySize < (1 << Base.kDicLogSizeMin) || dictionarySize > (1 << kDicLogSizeMaxCompress)) - return false; - this._dictionarySize = dictionarySize; - int dicLogSize; - for (dicLogSize = 0; dictionarySize > (1 << dicLogSize); dicLogSize++); - this._distTableSize = dicLogSize * 2; - return true; - } - - public void SetEndMarkerMode(boolean endMarkerMode) { - this._writeEndMark = endMarkerMode; - } - - public boolean SetLcLpPb(int lc, int lp, int pb) { - if ( - lp < 0 || lp > Base.kNumLitPosStatesBitsEncodingMax || - lc < 0 || lc > Base.kNumLitContextBitsMax || - pb < 0 || pb > Base.kNumPosStatesBitsEncodingMax - ) return false; - this._numLiteralPosStateBits = lp; - this._numLiteralContextBits = lc; - this._posStateBits = pb; - this._posStateMask = (1 << this._posStateBits) - 1; - return true; - } - - public boolean SetMatchFinder(int matchFinderIndex) { - if (matchFinderIndex < 0 || matchFinderIndex > 2) return false; - int matchFinderIndexPrev = this._matchFinderType; - this._matchFinderType = matchFinderIndex; - if (this._matchFinder != null && matchFinderIndexPrev != this._matchFinderType) { - this._dictionarySizePrev = -1; - this._matchFinder = null; - } - return true; - } - - private void SetOutStream(OutputStream outStream) { - this._rangeEncoder.SetStream(outStream); - } - - private void SetStreams(InputStream inStream, OutputStream outStream, long inSize, long outSize) { - this._inStream = inStream; - this._finished = false; - Create(); - SetOutStream(outStream); - Init(); - /* if (!_fastMode) */ { - FillDistancesPrices(); - FillAlignPrices(); - } - - this._lenEncoder.SetTableSize(this._numFastBytes + 1 - Base.kMatchMinLen); - this._lenEncoder.UpdateTables(1 << this._posStateBits); - this._repMatchLenEncoder.SetTableSize(this._numFastBytes + 1 - Base.kMatchMinLen); - this._repMatchLenEncoder.UpdateTables(1 << this._posStateBits); - - this.nowPos64 = 0; - } - - private void SetWriteEndMarkerMode(boolean writeEndMarker) { - this._writeEndMark = writeEndMarker; - } - - public void WriteCoderProperties(java.io.OutputStream outStream) - throws IOException { - this.properties[0] = (byte)((this._posStateBits * 5 + this._numLiteralPosStateBits) * 9 + this._numLiteralContextBits); - for (int i = 0; i < 4; i++) - this.properties[1 + i] = (byte)(this._dictionarySize >> (8 * i)); - outStream.write(this.properties, 0, kPropSize); - } - - private void WriteEndMarker(int posState) throws IOException { - if (!this._writeEndMark) - return; - - this._rangeEncoder.Encode( - this._isMatch, - (this._state << Base.kNumPosStatesBitsMax) + posState, - 1); - this._rangeEncoder.Encode(this._isRep, this._state, 0); - this._state = Base.StateUpdateMatch(this._state); - int len = Base.kMatchMinLen; - this._lenEncoder.Encode(this._rangeEncoder, len - Base.kMatchMinLen, posState); - int posSlot = (1 << Base.kNumPosSlotBits) - 1; - int lenToPosState = Base.GetLenToPosState(len); - this._posSlotEncoder[lenToPosState].Encode(this._rangeEncoder, posSlot); - int footerBits = 30; - int posReduced = (1 << footerBits) - 1; - this._rangeEncoder.EncodeDirectBits( - posReduced >> Base.kNumAlignBits, - footerBits - Base.kNumAlignBits); - this._posAlignEncoder.ReverseEncode(this._rangeEncoder, posReduced & Base.kAlignMask); - } - - class LenEncoder { - - private short[] _choice = new short[2]; - private BitTreeEncoder[] _lowCoder = new BitTreeEncoder[Base.kNumPosStatesEncodingMax]; - private BitTreeEncoder[] _midCoder = new BitTreeEncoder[Base.kNumPosStatesEncodingMax]; - private BitTreeEncoder _highCoder = new BitTreeEncoder(Base.kNumHighLenBits); - - public LenEncoder() { - for (int posState = 0; posState < Base.kNumPosStatesEncodingMax; posState++) { - this._lowCoder[posState] = new BitTreeEncoder(Base.kNumLowLenBits); - this._midCoder[posState] = new BitTreeEncoder(Base.kNumMidLenBits); - } - } - - public void Encode( - SevenZip.Compression.RangeCoder.Encoder rangeEncoder, - int symbol, - int posState) throws IOException { - if (symbol < Base.kNumLowLenSymbols) { - rangeEncoder.Encode(this._choice, 0, 0); - this._lowCoder[posState].Encode(rangeEncoder, symbol); - } else { - symbol -= Base.kNumLowLenSymbols; - rangeEncoder.Encode(this._choice, 0, 1); - if (symbol < Base.kNumMidLenSymbols) { - rangeEncoder.Encode(this._choice, 1, 0); - this._midCoder[posState].Encode(rangeEncoder, symbol); - } else { - rangeEncoder.Encode(this._choice, 1, 1); - this._highCoder.Encode(rangeEncoder, symbol - Base.kNumMidLenSymbols); - } - } - } - - public void Init(int numPosStates) { - SevenZip.Compression.RangeCoder.Encoder.InitBitModels(this._choice); - for (int posState = 0; posState < numPosStates; posState++) { - this._lowCoder[posState].Init(); - this._midCoder[posState].Init(); - } - this._highCoder.Init(); - } - - public void SetPrices(int posState, int numSymbols, int[] prices, int st) { - int a0 = SevenZip.Compression.RangeCoder.Encoder.GetPrice0(this._choice[0]); - int a1 = SevenZip.Compression.RangeCoder.Encoder.GetPrice1(this._choice[0]); - int b0 = a1 + SevenZip.Compression.RangeCoder.Encoder.GetPrice0(this._choice[1]); - int b1 = a1 + SevenZip.Compression.RangeCoder.Encoder.GetPrice1(this._choice[1]); - int i = 0; - for (; i < Base.kNumLowLenSymbols; i++) { - if (i >= numSymbols) - return; - prices[st + i] = a0 + this._lowCoder[posState].GetPrice(i); - } - for (; i < Base.kNumLowLenSymbols + Base.kNumMidLenSymbols; i++) { - if (i >= numSymbols) - return; - prices[st + i] = b0 + this._midCoder[posState].GetPrice(i - Base.kNumLowLenSymbols); - } - for (; i < numSymbols; i++) - prices[st + i] = b1 + this._highCoder.GetPrice(i - Base.kNumLowLenSymbols - Base.kNumMidLenSymbols); - } - } - - class LenPriceTableEncoder extends LenEncoder { - - private int[] _prices = new int[Base.kNumLenSymbols << Base.kNumPosStatesBitsEncodingMax]; - private int[] _counters = new int[Base.kNumPosStatesEncodingMax]; - private int _tableSize; - - public void Encode( - SevenZip.Compression.RangeCoder.Encoder rangeEncoder, - int symbol, - int posState) throws IOException { - super.Encode(rangeEncoder, symbol, posState); - if (--this._counters[posState] == 0) UpdateTable(posState); - } - - public int GetPrice(int symbol, int posState) { - return this._prices[posState * Base.kNumLenSymbols + symbol]; - } - - public void SetTableSize(int tableSize) { - this._tableSize = tableSize; - } - - private void UpdateTable(int posState) { - SetPrices(posState, this._tableSize, this._prices, posState * Base.kNumLenSymbols); - this._counters[posState] = this._tableSize; - } - - public void UpdateTables(int numPosStates) { - for (int posState = 0; posState < numPosStates; posState++) - UpdateTable(posState); - } - } - - private class LiteralEncoder { - - private Encoder2[] m_Coders; - private int m_NumPrevBits; - private int m_NumPosBits; - private int m_PosMask; - - public void Create(int numPosBits, int numPrevBits) { - if (this.m_Coders != null && this.m_NumPrevBits == numPrevBits && this.m_NumPosBits == numPosBits) - return; - this.m_NumPosBits = numPosBits; - this.m_PosMask = (1 << numPosBits) - 1; - this.m_NumPrevBits = numPrevBits; - int numStates = 1 << (this.m_NumPrevBits + this.m_NumPosBits); - this.m_Coders = new Encoder2[numStates]; - for (int i = 0; i < numStates; i++) - this.m_Coders[i] = new Encoder2(); - } - - public Encoder2 GetSubCoder(int pos, byte prevByte) { - final int index = ((pos & this.m_PosMask) << this.m_NumPrevBits) + ((prevByte & 0xFF) >>> (8 - this.m_NumPrevBits)); - return this.m_Coders[index]; - } - - public void Init() { - int numStates = 1 << (this.m_NumPrevBits + this.m_NumPosBits); - for (int i = 0; i < numStates; i++) - this.m_Coders[i].Init(); - } - - private class Encoder2 { - - short[] m_Encoders = new short[0x300]; - - public void Encode( - SevenZip.Compression.RangeCoder.Encoder rangeEncoder, - byte symbol) throws IOException { - int context = 1; - for (int i = 7; i >= 0; i--) { - int bit = ((symbol >> i) & 1); - rangeEncoder.Encode(this.m_Encoders, context, bit); - context = (context << 1) | bit; - } - } - - public void EncodeMatched( - SevenZip.Compression.RangeCoder.Encoder rangeEncoder, - byte matchByte, - byte symbol) throws IOException { - int context = 1; - boolean same = true; - for (int i = 7; i >= 0; i--) { - int bit = ((symbol >> i) & 1); - int state = context; - if (same) { - int matchBit = ((matchByte >> i) & 1); - state += ((1 + matchBit) << 8); - same = (matchBit == bit); - } - rangeEncoder.Encode(this.m_Encoders, state, bit); - context = (context << 1) | bit; - } - } - - public int GetPrice(boolean matchMode, byte matchByte, byte symbol) { - int price = 0; - int context = 1; - int i = 7; - if (matchMode) { - for (; i >= 0; i--) { - int matchBit = (matchByte >> i) & 1; - int bit = (symbol >> i) & 1; - price += SevenZip.Compression.RangeCoder.Encoder.GetPrice( - this.m_Encoders[((1 + matchBit) << 8) + context], - bit); - context = (context << 1) | bit; - if (matchBit != bit) { - i--; - break; - } - } - } - for (; i >= 0; i--) { - int bit = (symbol >> i) & 1; - price += SevenZip.Compression.RangeCoder.Encoder.GetPrice(this.m_Encoders[context], bit); - context = (context << 1) | bit; - } - return price; - } - - public void Init() { - SevenZip.Compression.RangeCoder.Encoder - .InitBitModels(this.m_Encoders); - } - } - } - - private class Optimal { - - public int State; - public boolean Prev1IsChar; - public boolean Prev2; - public int PosPrev2; - public int BackPrev2; - public int Price; - public int PosPrev; - public int BackPrev; - public int Backs0; - public int Backs1; - public int Backs2; - public int Backs3; - - public boolean IsShortRep() { - return (this.BackPrev == 0); - } - - public void MakeAsChar() { - this.BackPrev = -1; - this.Prev1IsChar = false; - } - - public void MakeAsShortRep() { - this.BackPrev = 0;; - this.Prev1IsChar = false; - } - } -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/Compression/RangeCoder/BitDecoder.java b/libbuild/J7Zip-modified/src/SevenZip/Compression/RangeCoder/BitDecoder.java deleted file mode 100644 index 0e325301bb..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Compression/RangeCoder/BitDecoder.java +++ /dev/null @@ -1,38 +0,0 @@ -package SevenZip.Compression.RangeCoder; - -import SevenZip.Compression.RangeCoder.Decoder; - - -public class BitDecoder extends BitModel -{ - public BitDecoder(int num) { - super(num); - } - public int Decode(Decoder decoder) throws java.io.IOException - { - int newBound = (decoder.Range >>> kNumBitModelTotalBits) * this.Prob; - if ((decoder.Code ^ 0x80000000) < (newBound ^ 0x80000000)) - { - decoder.Range = newBound; - this.Prob += (kBitModelTotal - this.Prob) >>> numMoveBits; - if ((decoder.Range & kTopMask) == 0) - { - decoder.Code = (decoder.Code << 8) | decoder.bufferedStream.read(); - decoder.Range <<= 8; - } - return 0; - } - else - { - decoder.Range -= newBound; - decoder.Code -= newBound; - this.Prob -= (this.Prob) >>> numMoveBits; - if ((decoder.Range & kTopMask) == 0) - { - decoder.Code = (decoder.Code << 8) | decoder.bufferedStream.read(); - decoder.Range <<= 8; - } - return 1; - } - } -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/Compression/RangeCoder/BitModel.java b/libbuild/J7Zip-modified/src/SevenZip/Compression/RangeCoder/BitModel.java deleted file mode 100644 index 053ff1c5d4..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Compression/RangeCoder/BitModel.java +++ /dev/null @@ -1,29 +0,0 @@ -package SevenZip.Compression.RangeCoder; - - -public class BitModel -{ - - public static final int kTopMask = ~((1 << 24) - 1); - public static final int kNumBitModelTotalBits = 11; - public static final int kBitModelTotal = (1 << kNumBitModelTotalBits); - - int numMoveBits; - - int Prob; - - public BitModel(int num) { - numMoveBits = num; - } - /* - public void UpdateModel(UInt32 symbol) - { - if (symbol == 0) - Prob += (kBitModelTotal - Prob) >> numMoveBits; - else - Prob -= (Prob) >> numMoveBits; - } - */ - public void Init() { Prob = kBitModelTotal / 2; } - -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/Compression/RangeCoder/BitTreeDecoder.java b/libbuild/J7Zip-modified/src/SevenZip/Compression/RangeCoder/BitTreeDecoder.java deleted file mode 100644 index 0db6722277..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Compression/RangeCoder/BitTreeDecoder.java +++ /dev/null @@ -1,57 +0,0 @@ -package SevenZip.Compression.RangeCoder; - -import SevenZip.Compression.RangeCoder.Decoder; - -public class BitTreeDecoder -{ - short[] Models; - int NumBitLevels; - - public BitTreeDecoder(int numBitLevels) - { - NumBitLevels = numBitLevels; - Models = new short[1 << numBitLevels]; - } - - public void Init() - { - Decoder.InitBitModels(Models); - } - - public int Decode(Decoder rangeDecoder) throws java.io.IOException - { - int m = 1; - for (int bitIndex = NumBitLevels; bitIndex != 0; bitIndex--) - m = (m << 1) + rangeDecoder.DecodeBit(Models, m); - return m - (1 << NumBitLevels); - } - - public int ReverseDecode(Decoder rangeDecoder) throws java.io.IOException - { - int m = 1; - int symbol = 0; - for (int bitIndex = 0; bitIndex < NumBitLevels; bitIndex++) - { - int bit = rangeDecoder.DecodeBit(Models, m); - m <<= 1; - m += bit; - symbol |= (bit << bitIndex); - } - return symbol; - } - - public static int ReverseDecode(short[] Models, int startIndex, - Decoder rangeDecoder, int NumBitLevels) throws java.io.IOException - { - int m = 1; - int symbol = 0; - for (int bitIndex = 0; bitIndex < NumBitLevels; bitIndex++) - { - int bit = rangeDecoder.DecodeBit(Models, startIndex + m); - m <<= 1; - m += bit; - symbol |= (bit << bitIndex); - } - return symbol; - } -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/Compression/RangeCoder/BitTreeEncoder.java b/libbuild/J7Zip-modified/src/SevenZip/Compression/RangeCoder/BitTreeEncoder.java deleted file mode 100644 index 067c8bf167..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Compression/RangeCoder/BitTreeEncoder.java +++ /dev/null @@ -1,102 +0,0 @@ -package SevenZip.Compression.RangeCoder; -import java.io.IOException; - -import SevenZip.Compression.RangeCoder.Decoder; -import SevenZip.Compression.RangeCoder.Encoder; - -public class BitTreeEncoder -{ - short[] Models; - int NumBitLevels; - - public BitTreeEncoder(int numBitLevels) - { - NumBitLevels = numBitLevels; - Models = new short[1 << numBitLevels]; - } - - public void Init() - { - Decoder.InitBitModels(Models); - } - - public void Encode(Encoder rangeEncoder, int symbol) throws IOException - { - int m = 1; - for (int bitIndex = NumBitLevels; bitIndex != 0; ) - { - bitIndex--; - int bit = (symbol >>> bitIndex) & 1; - rangeEncoder.Encode(Models, m, bit); - m = (m << 1) | bit; - } - } - - public void ReverseEncode(Encoder rangeEncoder, int symbol) throws IOException - { - int m = 1; - for (int i = 0; i < NumBitLevels; i++) - { - int bit = symbol & 1; - rangeEncoder.Encode(Models, m, bit); - m = (m << 1) | bit; - symbol >>= 1; - } - } - - public int GetPrice(int symbol) - { - int price = 0; - int m = 1; - for (int bitIndex = NumBitLevels; bitIndex != 0; ) - { - bitIndex--; - int bit = (symbol >>> bitIndex) & 1; - price += Encoder.GetPrice(Models[m], bit); - m = (m << 1) + bit; - } - return price; - } - - public int ReverseGetPrice(int symbol) - { - int price = 0; - int m = 1; - for (int i = NumBitLevels; i != 0; i--) - { - int bit = symbol & 1; - symbol >>>= 1; - price += Encoder.GetPrice(Models[m], bit); - m = (m << 1) | bit; - } - return price; - } - - public static int ReverseGetPrice(short[] Models, int startIndex, - int NumBitLevels, int symbol) - { - int price = 0; - int m = 1; - for (int i = NumBitLevels; i != 0; i--) - { - int bit = symbol & 1; - symbol >>>= 1; - price += Encoder.GetPrice(Models[startIndex + m], bit); - m = (m << 1) | bit; - } - return price; - } - - public static void ReverseEncode(short[] Models, int startIndex, - Encoder rangeEncoder, int NumBitLevels, int symbol) throws IOException - { - int m = 1; - for (int i = 0; i < NumBitLevels; i++) - { - int bit = symbol & 1; - rangeEncoder.Encode(Models, startIndex + m, bit); - m = (m << 1) | bit; - symbol >>= 1; - } - } -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/Compression/RangeCoder/Decoder.java b/libbuild/J7Zip-modified/src/SevenZip/Compression/RangeCoder/Decoder.java deleted file mode 100644 index 3cc0223a21..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Compression/RangeCoder/Decoder.java +++ /dev/null @@ -1,101 +0,0 @@ -package SevenZip.Compression.RangeCoder; -import java.io.IOException; - -public class Decoder -{ - static final int kTopMask = ~((1 << 24) - 1); - - static final int kNumBitModelTotalBits = 11; - static final int kBitModelTotal = (1 << kNumBitModelTotalBits); - static final int kNumMoveBits = 5; - - int Range; - int Code; - - // boolean _wasFinished; - // long _processedSize; - - // public boolean WasFinished() { return _wasFinished; } - - // public java.io.InputStream Stream; - - public SevenZip.Common.InBuffer bufferedStream = new SevenZip.Common.InBuffer(); - - int read() throws IOException { - return bufferedStream.read(); - } - - public void Create(int bufferSize) { bufferedStream.Create(bufferSize); } - - public long GetProcessedSize() { - return bufferedStream.GetProcessedSize(); - } - - public final void SetStream(java.io.InputStream stream) - { - bufferedStream.SetStream(stream); - } - - public final void ReleaseStream() throws IOException - { - bufferedStream.ReleaseStream(); - } - - public final void Init() throws IOException - { - bufferedStream.Init(); - Code = 0; - Range = -1; - for (int i = 0; i < 5; i++) { - Code = (Code << 8) | this.read(); - } - - } - - public final int DecodeDirectBits(int numTotalBits) throws IOException - { - int result = 0; - for (int i = numTotalBits; i != 0; i--) - { - Range >>>= 1; - int t = ((Code - Range) >>> 31); - Code -= Range & (t - 1); - result = (result << 1) | (1 - t); - - if ((Range & kTopMask) == 0) - { - Code = (Code << 8) | this.read(); - Range <<= 8; - } - } - return result; - } - - public int DecodeBit(short []probs, int index) throws IOException { - int prob = probs[index]; - int newBound = (Range >>> kNumBitModelTotalBits) * prob; - if ((Code ^ 0x80000000) < (newBound ^ 0x80000000)) { - Range = newBound; - probs[index] = (short)(prob + ((kBitModelTotal - prob) >>> kNumMoveBits)); - if ((Range & kTopMask) == 0) { - Code = (Code << 8) | this.read(); - Range <<= 8; - } - return 0; - } else { - Range -= newBound; - Code -= newBound; - probs[index] = (short)(prob - ((prob) >>> kNumMoveBits)); - if ((Range & kTopMask) == 0) { - Code = (Code << 8) | this.read(); - Range <<= 8; - } - return 1; - } - } - - public static void InitBitModels(short[] probs) { - for (int i = 0; i < probs.length; i++) - probs[i] = (kBitModelTotal >>> 1); - } -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/Compression/RangeCoder/Encoder.java b/libbuild/J7Zip-modified/src/SevenZip/Compression/RangeCoder/Encoder.java deleted file mode 100644 index 48485aba61..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/Compression/RangeCoder/Encoder.java +++ /dev/null @@ -1,153 +0,0 @@ -package SevenZip.Compression.RangeCoder; -import java.io.IOException; - -import SevenZip.Compression.RangeCoder.Encoder; - -public class Encoder -{ - static final int kTopMask = ~((1 << 24) - 1); - - static final int kNumBitModelTotalBits = 11; - static final int kBitModelTotal = (1 << kNumBitModelTotalBits); - static final int kNumMoveBits = 5; - - java.io.OutputStream Stream; - - long Low; - int Range; - int _cacheSize; - int _cache; - - long _position; - - public void SetStream(java.io.OutputStream stream) - { - Stream = stream; - } - - public void ReleaseStream() - { - Stream = null; - } - - public void Init() - { - _position = 0; - Low = 0; - Range = -1; - _cacheSize = 1; - _cache = 0; - } - - public void FlushData() throws IOException - { - for (int i = 0; i < 5; i++) - ShiftLow(); - } - - public void FlushStream() throws IOException - { - Stream.flush(); - } - - public void ShiftLow() throws IOException - { - int LowHi = (int)(Low >>> 32); - if (LowHi != 0 || Low < 0xFF000000L) - { - _position += _cacheSize; - int temp = _cache; - do - { - Stream.write(temp + LowHi); - temp = 0xFF; - } - while(--_cacheSize != 0); - _cache = (((int)Low) >>> 24); - } - _cacheSize++; - Low = (Low & 0xFFFFFF) << 8; - } - - public void EncodeDirectBits(int v, int numTotalBits) throws IOException - { - for (int i = numTotalBits - 1; i >= 0; i--) - { - Range >>>= 1; - if (((v >>> i) & 1) == 1) - Low += Range; - if ((Range & Encoder.kTopMask) == 0) - { - Range <<= 8; - ShiftLow(); - } - } - } - - - public long GetProcessedSizeAdd() - { - return _cacheSize + _position + 4; - } - - - - static final int kNumMoveReducingBits = 2; - public static final int kNumBitPriceShiftBits = 6; - - public static void InitBitModels(short []probs) - { - for (int i = 0; i < probs.length; i++) - probs[i] = (kBitModelTotal >>> 1); - } - - public void Encode(short []probs, int index, int symbol) throws IOException - { - int prob = probs[index]; - int newBound = (Range >>> kNumBitModelTotalBits) * prob; - if (symbol == 0) - { - Range = newBound; - probs[index] = (short)(prob + ((kBitModelTotal - prob) >>> kNumMoveBits)); - } - else - { - Low += (newBound & 0xFFFFFFFFL); - Range -= newBound; - probs[index] = (short)(prob - ((prob) >>> kNumMoveBits)); - } - if ((Range & kTopMask) == 0) - { - Range <<= 8; - ShiftLow(); - } - } - - private static int[] ProbPrices = new int[kBitModelTotal >>> kNumMoveReducingBits]; - - static - { - int kNumBits = (kNumBitModelTotalBits - kNumMoveReducingBits); - for (int i = kNumBits - 1; i >= 0; i--) - { - int start = 1 << (kNumBits - i - 1); - int end = 1 << (kNumBits - i); - for (int j = start; j < end; j++) - ProbPrices[j] = (i << kNumBitPriceShiftBits) + - (((end - j) << kNumBitPriceShiftBits) >>> (kNumBits - i - 1)); - } - } - - static public int GetPrice(int Prob, int symbol) - { - return ProbPrices[(((Prob - symbol) ^ ((-symbol))) & (kBitModelTotal - 1)) >>> kNumMoveReducingBits]; - } - static public int GetPrice0(int Prob) - { - return ProbPrices[Prob >>> kNumMoveReducingBits]; - } - static public int GetPrice1(int Prob) - { - return ProbPrices[(kBitModelTotal - Prob) >>> kNumMoveReducingBits]; - } -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/HRESULT.java b/libbuild/J7Zip-modified/src/SevenZip/HRESULT.java deleted file mode 100644 index 2836542df3..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/HRESULT.java +++ /dev/null @@ -1,11 +0,0 @@ -package SevenZip; - -public class HRESULT { - public static final int S_OK = 0; - public static final int S_FALSE = 1; - - public static final int E_NOTIMPL = 0x80004001; - public static final int E_FAIL = 0x80004005; - public static final int E_INVALIDARG = 0x80070057; -} - diff --git a/libbuild/J7Zip-modified/src/SevenZip/ICodeProgress.java b/libbuild/J7Zip-modified/src/SevenZip/ICodeProgress.java deleted file mode 100644 index 290bd2d024..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/ICodeProgress.java +++ /dev/null @@ -1,6 +0,0 @@ -package SevenZip; - -public interface ICodeProgress -{ - public void SetProgress(long inSize, long outSize); -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/ICompressCoder.java b/libbuild/J7Zip-modified/src/SevenZip/ICompressCoder.java deleted file mode 100644 index dbab994e6d..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/ICompressCoder.java +++ /dev/null @@ -1,13 +0,0 @@ -package SevenZip; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; - -public interface ICompressCoder { - - void Code( - InputStream inStream, // , ISequentialInStream - OutputStream outStream, // ISequentialOutStream - long outSize, ICompressProgressInfo progress) throws IOException; -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/ICompressCoder2.java b/libbuild/J7Zip-modified/src/SevenZip/ICompressCoder2.java deleted file mode 100644 index aa8224f8e2..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/ICompressCoder2.java +++ /dev/null @@ -1,20 +0,0 @@ -package SevenZip; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.Vector; - -public interface ICompressCoder2 { - - public int Code( - Vector inStreams, - //Object useless1, // const UInt64 ** /* inSizes */, - int numInStreams, - Vector outStreams, - //Object useless2, // const UInt64 ** /* outSizes */, - int numOutStreams, - ICompressProgressInfo progress) throws IOException; - - public void close() throws java.io.IOException ; // destructor -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/ICompressFilter.java b/libbuild/J7Zip-modified/src/SevenZip/ICompressFilter.java deleted file mode 100644 index 514b3f5419..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/ICompressFilter.java +++ /dev/null @@ -1,12 +0,0 @@ -package SevenZip; - -public interface ICompressFilter { - int Init(); - int Filter(byte [] data, int size); - // Filter return outSize (UInt32) - // if (outSize <= size): Filter have converted outSize bytes - // if (outSize > size): Filter have not converted anything. - // and it needs at least outSize bytes to convert one block - // (it's for crypto block algorithms). - -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/ICompressGetInStreamProcessedSize.java b/libbuild/J7Zip-modified/src/SevenZip/ICompressGetInStreamProcessedSize.java deleted file mode 100644 index 4f2901a944..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/ICompressGetInStreamProcessedSize.java +++ /dev/null @@ -1,6 +0,0 @@ -package SevenZip; - -public interface ICompressGetInStreamProcessedSize { - public long GetInStreamProcessedSize(); -} - diff --git a/libbuild/J7Zip-modified/src/SevenZip/ICompressProgressInfo.java b/libbuild/J7Zip-modified/src/SevenZip/ICompressProgressInfo.java deleted file mode 100644 index 8702418fab..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/ICompressProgressInfo.java +++ /dev/null @@ -1,6 +0,0 @@ -package SevenZip; - -public interface ICompressProgressInfo { - public static final long INVALID = -1; - void SetRatioInfo(long inSize, long outSize); -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/ICompressSetInStream.java b/libbuild/J7Zip-modified/src/SevenZip/ICompressSetInStream.java deleted file mode 100644 index 719fac5727..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/ICompressSetInStream.java +++ /dev/null @@ -1,9 +0,0 @@ -package SevenZip; - -import java.io.InputStream; - -public interface ICompressSetInStream { - public void SetInStream(InputStream inStream); - public void ReleaseInStream() throws java.io.IOException ; -} - diff --git a/libbuild/J7Zip-modified/src/SevenZip/ICompressSetOutStream.java b/libbuild/J7Zip-modified/src/SevenZip/ICompressSetOutStream.java deleted file mode 100644 index 91675a2edd..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/ICompressSetOutStream.java +++ /dev/null @@ -1,7 +0,0 @@ -package SevenZip; - -public interface ICompressSetOutStream { - public int SetOutStream(java.io.OutputStream inStream); - public int ReleaseOutStream() throws java.io.IOException; -} - diff --git a/libbuild/J7Zip-modified/src/SevenZip/ICompressSetOutStreamSize.java b/libbuild/J7Zip-modified/src/SevenZip/ICompressSetOutStreamSize.java deleted file mode 100644 index 998242b257..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/ICompressSetOutStreamSize.java +++ /dev/null @@ -1,7 +0,0 @@ -package SevenZip; - -public interface ICompressSetOutStreamSize { - public static final int INVALID_OUTSIZE=-1; - public void SetOutStreamSize(long outSize); -} - diff --git a/libbuild/J7Zip-modified/src/SevenZip/IInStream.java b/libbuild/J7Zip-modified/src/SevenZip/IInStream.java deleted file mode 100644 index bc3c3f4c39..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/IInStream.java +++ /dev/null @@ -1,11 +0,0 @@ -package SevenZip; - -public abstract class IInStream extends java.io.InputStream -{ - static public final int STREAM_SEEK_SET = 0; - static public final int STREAM_SEEK_CUR = 1; - // static public final int STREAM_SEEK_END = 2; - public abstract long Seek(long offset, int seekOrigin) throws java.io.IOException ; - -} - diff --git a/libbuild/J7Zip-modified/src/SevenZip/IProgress.java b/libbuild/J7Zip-modified/src/SevenZip/IProgress.java deleted file mode 100644 index 9d3df4f418..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/IProgress.java +++ /dev/null @@ -1,7 +0,0 @@ -package SevenZip; - -public interface IProgress { - public void SetTotal(long total); - public void SetCompleted(long completeValue); -} - diff --git a/libbuild/J7Zip-modified/src/SevenZip/J7zip.java b/libbuild/J7Zip-modified/src/SevenZip/J7zip.java deleted file mode 100644 index 6edec78147..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/J7zip.java +++ /dev/null @@ -1,162 +0,0 @@ -package SevenZip; - -import SevenZip.Archive.SevenZip.Handler; -import SevenZip.Archive.SevenZipEntry; -import SevenZip.Archive.IArchiveExtractCallback; -import SevenZip.Archive.IInArchive; - -import java.io.IOException; -import java.text.DateFormat; - -import java.util.Vector; - -public class J7zip { - - static void PrintHelp() { - System.out.println( - "\nUsage: JZip [...]\n" + - " l : Lists files\n" + - " t : Tests archive.7z\n" + - " x : eXtracts files\n"); - } - - static void listing(IInArchive archive,Vector listOfNames,boolean techMode) { - - if (!techMode) { - System.out.println(" Date Time Attr Size Compressed Name"); - System.out.println("-------------- ----- ------------ ------------ ------------"); - } - - long size = 0; - long packSize = 0; - long nbFiles = 0; - - for(int i = 0; i < archive.size() ; i++) { - SevenZipEntry item = archive.getEntry(i); - - DateFormat formatter = DateFormat.getDateTimeInstance(DateFormat.SHORT , DateFormat.SHORT ); - String str_tm = formatter.format(new java.util.Date(item.getTime())); - - if (listOfNames.contains(item.getName())) { - if (techMode) { - System.out.println("Path = " + item.getName()); - System.out.println("Size = " + item.getSize()); - System.out.println("Packed Size = " + item.getCompressedSize()); - System.out.println("Modified = " + str_tm); - System.out.println(" Attributes : " + item.getAttributesString()); - long crc = item.getCrc(); - if (crc != -1) - System.out.println("CRC = " + Long.toHexString(crc).toUpperCase()); - else - System.out.println("CRC ="); - System.out.println("Method = " + item.getMethods() ); - System.out.println("" ); - - } else { - System.out.print(str_tm + " " + item.getAttributesString()); - - System.out.print(item.getSize()); - - System.out.print(item.getCompressedSize()); - - System.out.println(" " + item.getName()); - } - - size += item.getSize(); - packSize += item.getCompressedSize(); - nbFiles ++; - } - } - - if (!techMode) { - System.out.println("-------------- ----- ------------ ------------ ------------"); - System.out.print(" " + size + packSize + " " + nbFiles); - } - } - - static void testOrExtract(IInArchive archive, Vector listOfNames,int mode) throws Exception { - - ArchiveExtractCallback extractCallbackSpec = new ArchiveExtractCallback(); - IArchiveExtractCallback extractCallback = extractCallbackSpec; - extractCallbackSpec.Init(archive); - extractCallbackSpec.PasswordIsDefined = false; - - try { - int len = 0; - int arrays [] = null; - - if (listOfNames.size() >= 1) { - arrays = new int[listOfNames.size()]; - for(int i = 0 ; i < archive.size() ; i++) { - if (listOfNames.contains(archive.getEntry(i).getName())) { - arrays[len++] = i; - } - } - } - - if (len == 0) { - archive.Extract(null, -1, mode , extractCallback); - } else { - archive.Extract(arrays, len, mode, extractCallback); - } - - if (extractCallbackSpec.NumErrors == 0) - System.out.println("Ok Done"); - else - System.out.println(" " + extractCallbackSpec.NumErrors + " errors"); - } catch (IOException e) { - System.out.println("IO error : " + e.getLocalizedMessage()); - } - } - - public static void main(String[] args) throws Exception { - System.out.println("\nJ7zip 4.43 ALPHA 2 (" + Runtime.getRuntime().availableProcessors() + " CPUs)"); - - if (args.length < 2) { - PrintHelp(); - return ; - } - - final int MODE_LISTING = 0; - final int MODE_TESTING = 1; - final int MODE_EXTRACT = 2; - - int mode = -1; - - Vector listOfNames = new Vector(); - for (int i = 2;i < args.length ; i++) - listOfNames.add(args[i]); - - if (args[0].equals("l")) { - mode = MODE_LISTING; - } else if (args[0].equals("t")) { - mode = MODE_TESTING; - } else if (args[0].equals("x")) { - mode = MODE_EXTRACT; - } else { - PrintHelp(); - return ; - } - - String filename = args[1]; - - MyRandomAccessFile istream = new MyRandomAccessFile(filename,"r"); - - IInArchive archive = new Handler(istream); - - - switch(mode) { - case MODE_LISTING: - listing(archive,listOfNames,false); - break; - case MODE_TESTING: - testOrExtract(archive,listOfNames,IInArchive.NExtract_NAskMode_kTest); - break; - case MODE_EXTRACT: - testOrExtract(archive,listOfNames,IInArchive.NExtract_NAskMode_kExtract); - break; - } - - archive.close(); - } -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/LzmaAlone.java b/libbuild/J7Zip-modified/src/SevenZip/LzmaAlone.java deleted file mode 100644 index 2731610e7a..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/LzmaAlone.java +++ /dev/null @@ -1,250 +0,0 @@ -package SevenZip; - -public class LzmaAlone -{ - static public class CommandLine - { - public static final int kEncode = 0; - public static final int kDecode = 1; - public static final int kBenchmak = 2; - - public int Command = -1; - public int NumBenchmarkPasses = 10; - - public int DictionarySize = 1 << 23; - public boolean DictionarySizeIsDefined = false; - - public int Lc = 3; - public int Lp = 0; - public int Pb = 2; - - public int Fb = 128; - public boolean FbIsDefined = false; - - public boolean Eos = false; - - public int Algorithm = 2; - public int MatchFinder = 1; - - public String InFile; - public String OutFile; - - boolean ParseSwitch(String s) - { - if (s.startsWith("d")) - { - DictionarySize = 1 << Integer.parseInt(s.substring(1)); - DictionarySizeIsDefined = true; - } - else if (s.startsWith("fb")) - { - Fb = Integer.parseInt(s.substring(2)); - FbIsDefined = true; - } - else if (s.startsWith("a")) - Algorithm = Integer.parseInt(s.substring(1)); - else if (s.startsWith("lc")) - Lc = Integer.parseInt(s.substring(2)); - else if (s.startsWith("lp")) - Lp = Integer.parseInt(s.substring(2)); - else if (s.startsWith("pb")) - Pb = Integer.parseInt(s.substring(2)); - else if (s.startsWith("eos")) - Eos = true; - else if (s.startsWith("mf")) - { - String mfs = s.substring(2); - if (mfs.equals("bt2")) - MatchFinder = 0; - else if (mfs.equals("bt4")) - MatchFinder = 1; - else if (mfs.equals("bt4b")) - MatchFinder = 2; - else - return false; - } - else - return false; - return true; - } - - public boolean Parse(String[] args) throws Exception - { - int pos = 0; - boolean switchMode = true; - for (int i = 0; i < args.length; i++) - { - String s = args[i]; - if (s.length() == 0) - return false; - if (switchMode) - { - if (s.compareTo("--") == 0) - { - switchMode = false; - continue; - } - if (s.charAt(0) == '-') - { - String sw = s.substring(1).toLowerCase(); - if (sw.length() == 0) - return false; - try - { - if (!ParseSwitch(sw)) - return false; - } - catch (NumberFormatException e) - { - return false; - } - continue; - } - } - if (pos == 0) - { - if (s.equalsIgnoreCase("e")) - Command = kEncode; - else if (s.equalsIgnoreCase("d")) - Command = kDecode; - else if (s.equalsIgnoreCase("b")) - Command = kBenchmak; - else - return false; - } - else if(pos == 1) - { - if (Command == kBenchmak) - { - try - { - NumBenchmarkPasses = Integer.parseInt(s); - if (NumBenchmarkPasses < 1) - return false; - } - catch (NumberFormatException e) - { - return false; - } - } - else - InFile = s; - } - else if(pos == 2) - OutFile = s; - else - return false; - pos++; - continue; - } - return true; - } - } - - - static void PrintHelp() - { - System.out.println( - "\nUsage: LZMA [...] inputFile outputFile\n" + - " e: encode file\n" + - " d: decode file\n" + - " b: Benchmark\n" + - "\n" + - // " -a{N}: set compression mode - [0, 1], default: 1 (max)\n" + - " -d{N}: set dictionary - [0,28], default: 23 (8MB)\n" + - " -fb{N}: set number of fast bytes - [5, 273], default: 128\n" + - " -lc{N}: set number of literal context bits - [0, 8], default: 3\n" + - " -lp{N}: set number of literal pos bits - [0, 4], default: 0\n" + - " -pb{N}: set number of pos bits - [0, 4], default: 2\n" + - " -mf{MF_ID}: set Match Finder: [bt2, bt4], default: bt4\n" + - " -eos: write End Of Stream marker\n" - ); - } - - public static void main(String[] args) throws Exception - { - System.out.println("\nLZMA (Java) 4.42 Copyright (c) 1999-2006 Igor Pavlov 2006-05-15\n"); - - if (args.length < 1) - { - PrintHelp(); - return; - } - - CommandLine params = new CommandLine(); - if (!params.Parse(args)) - { - System.out.println("\nIncorrect command"); - return; - } - - if (params.Command == CommandLine.kBenchmak) - { - int dictionary = (1 << 21); - if (params.DictionarySizeIsDefined) - dictionary = params.DictionarySize; - if (params.MatchFinder > 1) - throw new Exception("Unsupported match finder"); - SevenZip.LzmaBench.LzmaBenchmark(params.NumBenchmarkPasses, dictionary); - } - else if (params.Command == CommandLine.kEncode || params.Command == CommandLine.kDecode) - { - java.io.File inFile = new java.io.File(params.InFile); - java.io.File outFile = new java.io.File(params.OutFile); - - java.io.BufferedInputStream inStream = new java.io.BufferedInputStream(new java.io.FileInputStream(inFile)); - java.io.BufferedOutputStream outStream = new java.io.BufferedOutputStream(new java.io.FileOutputStream(outFile)); - - boolean eos = false; - if (params.Eos) - eos = true; - if (params.Command == CommandLine.kEncode) - { - SevenZip.Compression.LZMA.Encoder encoder = new SevenZip.Compression.LZMA.Encoder(); - if (!encoder.SetAlgorithm(params.Algorithm)) - throw new Exception("Incorrect compression mode"); - if (!encoder.SetDictionarySize(params.DictionarySize)) - throw new Exception("Incorrect dictionary size"); - if (!encoder.SetNumFastBytes(params.Fb)) - throw new Exception("Incorrect -fb value"); - if (!encoder.SetMatchFinder(params.MatchFinder)) - throw new Exception("Incorrect -mf value"); - if (!encoder.SetLcLpPb(params.Lc, params.Lp, params.Pb)) - throw new Exception("Incorrect -lc or -lp or -pb value"); - encoder.SetEndMarkerMode(eos); - encoder.WriteCoderProperties(outStream); - long fileSize; - if (eos) - fileSize = -1; - else - fileSize = inFile.length(); - for (int i = 0; i < 8; i++) - outStream.write((int)(fileSize >>> (8 * i)) & 0xFF); - encoder.Code(inStream, outStream, -1, -1, null); - } - else - { - int propertiesSize = 5; - byte[] properties = new byte[propertiesSize]; - if (inStream.read(properties, 0, propertiesSize) != propertiesSize) - throw new Exception("input .lzma file is too short"); - SevenZip.Compression.LZMA.Decoder decoder = new SevenZip.Compression.LZMA.Decoder(properties); - long outSize = 0; - for (int i = 0; i < 8; i++) - { - int v = inStream.read(); - if (v < 0) - throw new Exception("Can't read stream size"); - outSize |= ((long)v) << (8 * i); - } - decoder.Code(inStream, outStream, outSize, null); - } - outStream.flush(); - outStream.close(); - inStream.close(); - } - else - throw new Exception("Incorrect command"); - return; - } -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/LzmaBench.java b/libbuild/J7Zip-modified/src/SevenZip/LzmaBench.java deleted file mode 100644 index 9310fc5925..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/LzmaBench.java +++ /dev/null @@ -1,388 +0,0 @@ -package SevenZip; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; - -public class LzmaBench -{ - static final int kAdditionalSize = (1 << 21); - static final int kCompressedAdditionalSize = (1 << 10); - - static class CRandomGenerator - { - int A1; - int A2; - public CRandomGenerator() { Init(); } - public void Init() { A1 = 362436069; A2 = 521288629; } - public int GetRnd() - { - return - ((A1 = 36969 * (A1 & 0xffff) + (A1 >>> 16)) << 16) ^ - ((A2 = 18000 * (A2 & 0xffff) + (A2 >>> 16))); - } - }; - - static class CBitRandomGenerator - { - CRandomGenerator RG = new CRandomGenerator(); - int Value; - int NumBits; - public void Init() - { - Value = 0; - NumBits = 0; - } - public int GetRnd(int numBits) - { - int result; - if (NumBits > numBits) - { - result = Value & ((1 << numBits) - 1); - Value >>>= numBits; - NumBits -= numBits; - return result; - } - numBits -= NumBits; - result = (Value << numBits); - Value = RG.GetRnd(); - result |= Value & (((int)1 << numBits) - 1); - Value >>>= numBits; - NumBits = 32 - numBits; - return result; - } - }; - - static class CBenchRandomGenerator - { - CBitRandomGenerator RG = new CBitRandomGenerator(); - int Pos; - int Rep0; - - public int BufferSize; - public byte[] Buffer = null; - - public CBenchRandomGenerator() { } - public void Set(int bufferSize) - { - Buffer = new byte[bufferSize]; - Pos = 0; - BufferSize = bufferSize; - } - int GetRndBit() { return RG.GetRnd(1); } - int GetLogRandBits(int numBits) - { - int len = RG.GetRnd(numBits); - return RG.GetRnd((int)len); - } - int GetOffset() - { - if (GetRndBit() == 0) - return GetLogRandBits(4); - return (GetLogRandBits(4) << 10) | RG.GetRnd(10); - } - int GetLen1() { return RG.GetRnd(1 + (int)RG.GetRnd(2)); } - int GetLen2() { return RG.GetRnd(2 + (int)RG.GetRnd(2)); } - public void Generate() - { - RG.Init(); - Rep0 = 1; - while (Pos < BufferSize) - { - if (GetRndBit() == 0 || Pos < 1) - Buffer[Pos++] = (byte)(RG.GetRnd(8)); - else - { - int len; - if (RG.GetRnd(3) == 0) - len = 1 + GetLen1(); - else - { - do - Rep0 = GetOffset(); - while (Rep0 >= Pos); - Rep0++; - len = 2 + GetLen2(); - } - for (int i = 0; i < len && Pos < BufferSize; i++, Pos++) - Buffer[Pos] = Buffer[Pos - Rep0]; - } - } - } - }; - - static class CrcOutStream extends java.io.OutputStream - { - public CRC CRC = new CRC(); - - public void Init() - { - CRC.Init(); - } - public int GetDigest() - { - return CRC.GetDigest(); - } - public void write(byte[] b) - { - CRC.Update(b); - } - public void write(byte[] b, int off, int len) - { - CRC.Update(b, off, len); - } - public void write(int b) - { - CRC.UpdateByte(b); - } - }; - - static class MyOutputStream extends java.io.OutputStream - { - byte[] _buffer; - int _size; - int _pos; - - public MyOutputStream(byte[] buffer) - { - _buffer = buffer; - _size = _buffer.length; - } - - public void reset() - { - _pos = 0; - } - - public void write(int b) throws IOException - { - if (_pos >= _size) - throw new IOException("Error"); - _buffer[_pos++] = (byte)b; - } - - public int size() - { - return _pos; - } - }; - - static class MyInputStream extends java.io.InputStream - { - byte[] _buffer; - int _size; - int _pos; - - public MyInputStream(byte[] buffer, int size) - { - _buffer = buffer; - _size = size; - } - - public void reset() - { - _pos = 0; - } - - public int read() - { - if (_pos >= _size) - return -1; - return _buffer[_pos++] & 0xFF; - } - }; - - static class CProgressInfo implements ICodeProgress - { - public long ApprovedStart; - public long InSize; - public long Time; - public void Init() - { InSize = 0; } - public void SetProgress(long inSize, long outSize) - { - if (inSize >= ApprovedStart && InSize == 0) - { - Time = System.currentTimeMillis(); - InSize = inSize; - } - } - } - static final int kSubBits = 8; - - static int GetLogSize(int size) - { - for (int i = kSubBits; i < 32; i++) - for (int j = 0; j < (1 << kSubBits); j++) - if (size <= ((1) << i) + (j << (i - kSubBits))) - return (i << kSubBits) + j; - return (32 << kSubBits); - } - - static long MyMultDiv64(long value, long elapsedTime) - { - long freq = 1000; // ms - long elTime = elapsedTime; - while (freq > 1000000) - { - freq >>>= 1; - elTime >>>= 1; - } - if (elTime == 0) - elTime = 1; - return value * freq / elTime; - } - - static long GetCompressRating(int dictionarySize, long elapsedTime, long size) - { - long t = GetLogSize(dictionarySize) - (18 << kSubBits); - long numCommandsForOne = 1060 + ((t * t * 10) >> (2 * kSubBits)); - long numCommands = (long)(size) * numCommandsForOne; - return MyMultDiv64(numCommands, elapsedTime); - } - - static long GetDecompressRating(long elapsedTime, long outSize, long inSize) - { - long numCommands = inSize * 220 + outSize * 20; - return MyMultDiv64(numCommands, elapsedTime); - } - - static long GetTotalRating( - int dictionarySize, - long elapsedTimeEn, long sizeEn, - long elapsedTimeDe, - long inSizeDe, long outSizeDe) - { - return (GetCompressRating(dictionarySize, elapsedTimeEn, sizeEn) + - GetDecompressRating(elapsedTimeDe, inSizeDe, outSizeDe)) / 2; - } - - static void PrintValue(long v) - { - String s = ""; - s += v; - for (int i = 0; i + s.length() < 6; i++) - System.out.print(" "); - System.out.print(s); - } - - static void PrintRating(long rating) - { - PrintValue(rating / 1000000); - System.out.print(" MIPS"); - } - - static void PrintResults( - int dictionarySize, - long elapsedTime, - long size, - boolean decompressMode, long secondSize) - { - long speed = MyMultDiv64(size, elapsedTime); - PrintValue(speed / 1024); - System.out.print(" KB/s "); - long rating; - if (decompressMode) - rating = GetDecompressRating(elapsedTime, size, secondSize); - else - rating = GetCompressRating(dictionarySize, elapsedTime, size); - PrintRating(rating); - } - - static public int LzmaBenchmark(int numIterations, int dictionarySize) throws Exception - { - if (numIterations <= 0) - return 0; - if (dictionarySize < (1 << 18)) - { - System.out.println("\nError: dictionary size for benchmark must be >= 18 (256 KB)"); - return 1; - } - System.out.print("\n Compressing Decompressing\n\n"); - - SevenZip.Compression.LZMA.Encoder encoder = new SevenZip.Compression.LZMA.Encoder(); - - if (!encoder.SetDictionarySize(dictionarySize)) - throw new Exception("Incorrect dictionary size"); - - int kBufferSize = dictionarySize + kAdditionalSize; - int kCompressedBufferSize = (kBufferSize / 2) + kCompressedAdditionalSize; - - ByteArrayOutputStream propStream = new ByteArrayOutputStream(); - encoder.WriteCoderProperties(propStream); - SevenZip.Compression.LZMA.Decoder decoder = new SevenZip.Compression.LZMA.Decoder(propStream.toByteArray()); - - CBenchRandomGenerator rg = new CBenchRandomGenerator(); - - rg.Set(kBufferSize); - rg.Generate(); - CRC crc = new CRC(); - crc.Init(); - crc.Update(rg.Buffer, 0, rg.BufferSize); - - CProgressInfo progressInfo = new CProgressInfo(); - progressInfo.ApprovedStart = dictionarySize; - - long totalBenchSize = 0; - long totalEncodeTime = 0; - long totalDecodeTime = 0; - long totalCompressedSize = 0; - - MyInputStream inStream = new MyInputStream(rg.Buffer, rg.BufferSize); - - byte[] compressedBuffer = new byte[kCompressedBufferSize]; - MyOutputStream compressedStream = new MyOutputStream(compressedBuffer); - CrcOutStream crcOutStream = new CrcOutStream(); - MyInputStream inputCompressedStream = null; - int compressedSize = 0; - for (int i = 0; i < numIterations; i++) - { - progressInfo.Init(); - inStream.reset(); - compressedStream.reset(); - encoder.Code(inStream, compressedStream, -1, -1, progressInfo); - long encodeTime = System.currentTimeMillis() - progressInfo.Time; - - if (i == 0) - { - compressedSize = compressedStream.size(); - inputCompressedStream = new MyInputStream(compressedBuffer, compressedSize); - } - else if (compressedSize != compressedStream.size()) - throw (new Exception("Encoding error")); - - if (progressInfo.InSize == 0) - throw (new Exception("Internal ERROR 1282")); - - long decodeTime = 0; - for (int j = 0; j < 2; j++) - { - inputCompressedStream.reset(); - crcOutStream.Init(); - - long outSize = kBufferSize; - long startTime = System.currentTimeMillis(); - decoder.Code(inputCompressedStream, crcOutStream, outSize, null); - decodeTime = System.currentTimeMillis() - startTime; - if (crcOutStream.GetDigest() != crc.GetDigest()) - throw (new Exception("CRC Error")); - } - long benchSize = kBufferSize - (long)progressInfo.InSize; - PrintResults(dictionarySize, encodeTime, benchSize, false, 0); - System.out.print(" "); - PrintResults(dictionarySize, decodeTime, kBufferSize, true, compressedSize); - System.out.println(); - - totalBenchSize += benchSize; - totalEncodeTime += encodeTime; - totalDecodeTime += decodeTime; - totalCompressedSize += compressedSize; - } - System.out.println("---------------------------------------------------"); - PrintResults(dictionarySize, totalEncodeTime, totalBenchSize, false, 0); - System.out.print(" "); - PrintResults(dictionarySize, totalDecodeTime, - kBufferSize * (long)numIterations, true, totalCompressedSize); - System.out.println(" Average"); - return 0; - } -} diff --git a/libbuild/J7Zip-modified/src/SevenZip/MyRandomAccessFile.java b/libbuild/J7Zip-modified/src/SevenZip/MyRandomAccessFile.java deleted file mode 100644 index f3a88b8b05..0000000000 --- a/libbuild/J7Zip-modified/src/SevenZip/MyRandomAccessFile.java +++ /dev/null @@ -1,45 +0,0 @@ -package SevenZip; - -import java.io.File; -import java.io.IOException; -import java.io.RandomAccessFile; - -public class MyRandomAccessFile extends SevenZip.IInStream { - - RandomAccessFile _file; - - public MyRandomAccessFile(File file, String mode) throws IOException { - this(file.getAbsolutePath(), mode); - } - - public MyRandomAccessFile(String filename,String mode) throws IOException { - _file = new RandomAccessFile(filename,mode); - } - - public long Seek(long offset, int seekOrigin) throws IOException { - if (seekOrigin == STREAM_SEEK_SET) { - _file.seek(offset); - } - else if (seekOrigin == STREAM_SEEK_CUR) { - _file.seek(offset + _file.getFilePointer()); - } - return _file.getFilePointer(); - } - - public int read() throws IOException { - return _file.read(); - } - - public int read(byte [] data, int off, int size) throws IOException { - return _file.read(data,off,size); - } - - public int read(byte [] data, int size) throws IOException { - return _file.read(data,0,size); - } - - public void close() throws IOException { - _file.close(); - _file = null; - } -} \ No newline at end of file