All Downloads are FREE. Search and download functionalities are using the official Maven repository.

lowentry.ue4.classes.bitdata.reader.BitBufferDataReader Maven / Gradle / Ivy

There is a newer version: 9.9.9.DELETED
Show newest version
package lowentry.ue4.classes.bitdata.reader;


import java.nio.ByteBuffer;

import lowentry.ue4.classes.BitDataReader;
import lowentry.ue4.library.LowEntry;


public class BitBufferDataReader extends BitDataReader
{
	protected final ByteBuffer	bytes;
	
	protected final int			subLength;
	
	
	public BitBufferDataReader(ByteBuffer bytes)
	{
		this.bytes = bytes;
		if(bytes == null)
		{
			this.subLength = 0;
		}
		else
		{
			this.subLength = bytes.remaining();
		}
	}
	public BitBufferDataReader(ByteBuffer bytes, int length)
	{
		this.bytes = bytes;
		if((bytes == null) || (length < 0))
		{
			this.subLength = 0;
		}
		else
		{
			this.subLength = length;
		}
	}
	
	
	protected BitBufferDataReader(ByteBuffer bytes, int subLength, int position)
	{
		this.bytes = bytes;
		this.subLength = subLength;
		this.position = position;
	}
	
	@Override
	public BitDataReader getClone()
	{
		return new BitBufferDataReader(bytes, subLength, position);
	}
	
	
	@Override
	protected int getTotalCountImplementation()
	{
		return subLength;
	}
	
	@Override
	public byte getByteImplementation(int index)
	{
		return bytes.get(index);
	}
	
	
	@Override
	protected String getStringUtf8Implementation(int index, int length)
	{
		if(bytes.hasArray())
		{
			return LowEntry.bytesToStringUtf8(bytes.array(), bytes.arrayOffset() + index, length);
		}
		byte[] b = new byte[length];
		bytes.get(b, index, length);
		return LowEntry.bytesToStringUtf8(b);
	}
	
	@Override
	protected String getStringLatin1Implementation(int index, int length)
	{
		if(bytes.hasArray())
		{
			return LowEntry.bytesToStringLatin1(bytes.array(), bytes.arrayOffset() + index, length);
		}
		byte[] b = new byte[length];
		bytes.get(b, index, length);
		return LowEntry.bytesToStringLatin1(b);
	}
	
	@Override
	protected byte[] getByteArrayImplementation(int index, int length)
	{
		if(bytes.hasArray())
		{
			return LowEntry.bytesSubArray(bytes.array(), bytes.arrayOffset() + index, length);
		}
		byte[] b = new byte[length];
		bytes.get(b, index, length);
		return b;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy