package org.j7zip.SevenZip.Archive.SevenZip; import org.j7zip.Common.ByteBuffer; import org.j7zip.Common.ObjectVector; import org.j7zip.SevenZip.HRESULT; class StreamSwitch { InArchive _archive; boolean _needRemove; public StreamSwitch() { _needRemove = false; } public void close() { Remove(); } void Remove() { if (_needRemove) { _archive.DeleteByteStream(); _needRemove = false; } } void Set(InArchive archive, ByteBuffer byteBuffer) { Set(archive, byteBuffer.data(), byteBuffer.GetCapacity()); } void Set(InArchive archive, byte [] data, int size) { Remove(); _archive = archive; _archive.AddByteStream(data, size); _needRemove = true; } int Set(InArchive archive, ObjectVector<ByteBuffer> dataVector) throws java.io.IOException { Remove(); int external = archive.ReadByte(); if (external != 0) { int dataIndex = archive.ReadNum(); Set(archive, dataVector.get(dataIndex)); } return HRESULT.S_OK; } }