Class ContiguousBuffer
- java.lang.Object
-
- net.haesleinhuepf.clij.coremem.buffers.ContiguousBuffer
-
- All Implemented Interfaces:
SizedInBytes
public class ContiguousBuffer extends Object implements SizedInBytes
ContiguousBuffer is a more handy way to read and write to and from instances of ContiguousMemoryInterface. It holds a 'position' that is automatically incremented for read and writes of different primitive types. This position can be moved, pushed and popped. Range checks are only performed for block memory copies or sets, writing or reading for single primitive types is not protected.- Author:
- royer
-
-
Constructor Summary
Constructors Constructor Description ContiguousBuffer(ContiguousMemoryInterface pContiguousMemoryInterface)Constructs a ContiguousBuffer by wrapping a ContiguousMemoryInterface.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static ContiguousBufferallocate(long pLengthInBytes)Allocates a ContiguousBuffer (using OffHeapMemory) of given length.voidclearStack()Clears the position stack.voidfillBytes(byte pByte)Fills the remaining space in the buffer with a given byte.ContiguousMemoryInterfacegetContiguousMemory()Returns the underlying ContiguousMemoryInterface.longgetSizeInBytes()Return this memory object's size in bytes.booleanhasRemaining(long pNumberOfBytes)Returns true if there are pNumberOfBytes remaining bytes to read.booleanhasRemainingByte()Returns true if there are enough remaining bytes to read a single byte.booleanhasRemainingChar()Returns true if there are enough remaining bytes to read a single char.booleanhasRemainingDouble()Returns true if there are enough remaining bytes to read a single double.booleanhasRemainingFloat()Returns true if there are enough remaining bytes to read a single float.booleanhasRemainingInt()Returns true if there are enough remaining bytes to read a single int.booleanhasRemainingLong()Returns true if there are enough remaining bytes to read a single long.booleanhasRemainingShort()Returns true if there are enough remaining bytes to read a single short.booleanisPositionValid()Checks whether the current position is valid.voidpopPosition()Pops position at the top of the stack and sets it as the new current position.voidpushPosition()Pushes current position to stack.bytereadByte()Reads a single byte.charreadChar()Reads a single char.doublereadDouble()Reads a single double.floatreadFloat()Reads a single float.intreadInt()Reads a single int.longreadLong()Reads a single long.shortreadShort()Reads a single short.longremainingBytes()Returns the remaining bytes that can be written from the current position.voidrewind()Rewinds the position to the first valid position in the buffer.voidsetPosition(long pNewPosition)Sets the current position to a new value.voidskipBytes(long pNumberOfBytesToSkip)Skips multiple bytes.voidskipChars(long pNumberOfCharsToSkip)Skips multiple chars.voidskipDoubles(long pNumberOfDoublesToSkip)Skips multiple doubles.voidskipFloats(long pNumberOfFloatsToSkip)Skips multiple floats.voidskipInts(long pNumberofIntsToSkip)Skips multiple ints.voidskipLongs(long pNumberOfLongsToSkip)Skips multiple longs.voidskipShorts(long pNumberOfShortsToSkip)Skips multiple shorts.StringtoString()static ContiguousBufferwrap(ContiguousMemoryInterface pContiguousMemoryInterface)Wraps a ContiguousMemoryInterface with a ContiguousBuffer.voidwriteByte(byte pByte)Write a single byte.voidwriteBytes(long pNumberOfBytes, byte pByte)Write a sequence of identical bytes into this buffer.voidwriteChar(char pChar)Write a single char.voidwriteContiguousBuffer(ContiguousBuffer pContiguousBuffer)Writes the entire contents of a ContiguousBuffer into this buffer.voidwriteContiguousMemory(ContiguousMemoryInterface pContiguousMemoryInterface)Writes the entire contents of a ContiguousMemoryInterface into this buffer.voidwriteDouble(double pDouble)Write a single double.voidwriteFloat(float pFloat)Write a single float.voidwriteInt(int pInt)Write a single int.voidwriteLong(long pLong)Write a single long.voidwriteShort(short pShort)Write a single short.
-
-
-
Constructor Detail
-
ContiguousBuffer
public ContiguousBuffer(ContiguousMemoryInterface pContiguousMemoryInterface)
Constructs a ContiguousBuffer by wrapping a ContiguousMemoryInterface.- Parameters:
pContiguousMemoryInterface- contiguous memory to wrap
-
-
Method Detail
-
allocate
public static ContiguousBuffer allocate(long pLengthInBytes)
Allocates a ContiguousBuffer (using OffHeapMemory) of given length.- Parameters:
pLengthInBytes- length in bytes- Returns:
- contiguous buffer
-
wrap
public static ContiguousBuffer wrap(ContiguousMemoryInterface pContiguousMemoryInterface)
Wraps a ContiguousMemoryInterface with a ContiguousBuffer.- Parameters:
pContiguousMemoryInterface- contiguous memory to wrap- Returns:
- contiguous buffer
-
getContiguousMemory
public ContiguousMemoryInterface getContiguousMemory()
Returns the underlying ContiguousMemoryInterface.- Returns:
- contiguous memory
-
getSizeInBytes
public long getSizeInBytes()
Description copied from interface:SizedInBytesReturn this memory object's size in bytes.- Specified by:
getSizeInBytesin interfaceSizedInBytes- Returns:
- size in bytes.
-
setPosition
public void setPosition(long pNewPosition)
Sets the current position to a new value.- Parameters:
pNewPosition- new position value.
-
rewind
public void rewind()
Rewinds the position to the first valid position in the buffer.
-
clearStack
public void clearStack()
Clears the position stack.
-
pushPosition
public void pushPosition()
Pushes current position to stack.
-
popPosition
public void popPosition()
Pops position at the top of the stack and sets it as the new current position.
-
isPositionValid
public boolean isPositionValid()
Checks whether the current position is valid.- Returns:
- true if valid, false otherwise.
-
remainingBytes
public long remainingBytes()
Returns the remaining bytes that can be written from the current position.- Returns:
- remaining bytes
-
hasRemainingByte
public boolean hasRemainingByte()
Returns true if there are enough remaining bytes to read a single byte.- Returns:
- true if at least byte remains
-
hasRemainingChar
public boolean hasRemainingChar()
Returns true if there are enough remaining bytes to read a single char.- Returns:
- true if at least char remains
-
hasRemainingShort
public boolean hasRemainingShort()
Returns true if there are enough remaining bytes to read a single short.- Returns:
- true if at least short remains
-
hasRemainingInt
public boolean hasRemainingInt()
Returns true if there are enough remaining bytes to read a single int.- Returns:
- true if at least int remains
-
hasRemainingLong
public boolean hasRemainingLong()
Returns true if there are enough remaining bytes to read a single long.- Returns:
- true if at least long remains
-
hasRemainingFloat
public boolean hasRemainingFloat()
Returns true if there are enough remaining bytes to read a single float.- Returns:
- true if at least float remains
-
hasRemainingDouble
public boolean hasRemainingDouble()
Returns true if there are enough remaining bytes to read a single double.- Returns:
- true if at least double remains
-
hasRemaining
public boolean hasRemaining(long pNumberOfBytes)
Returns true if there are pNumberOfBytes remaining bytes to read.- Parameters:
pNumberOfBytes- number of bytes that would remain- Returns:
- true if pNumberOfBytes remain in the buffer to read.
-
writeContiguousBuffer
public void writeContiguousBuffer(ContiguousBuffer pContiguousBuffer)
Writes the entire contents of a ContiguousBuffer into this buffer. The position for _both buffers- is incremented accordingly.- Parameters:
pContiguousBuffer- buffer
-
writeContiguousMemory
public void writeContiguousMemory(ContiguousMemoryInterface pContiguousMemoryInterface)
Writes the entire contents of a ContiguousMemoryInterface into this buffer. The position is incremented accordingly.- Parameters:
pContiguousMemoryInterface- memory
-
fillBytes
public void fillBytes(byte pByte)
Fills the remaining space in the buffer with a given byte.- Parameters:
pByte- byte value.
-
writeBytes
public void writeBytes(long pNumberOfBytes, byte pByte)Write a sequence of identical bytes into this buffer. The position is incremented accordingly.- Parameters:
pNumberOfBytes- number of bytes to writepByte- byte to write repeatedly.
-
writeByte
public void writeByte(byte pByte)
Write a single byte. The position is incremented accordingly.- Parameters:
pByte- value
-
writeShort
public void writeShort(short pShort)
Write a single short. The position is incremented accordingly.- Parameters:
pShort- value
-
writeChar
public void writeChar(char pChar)
Write a single char. The position is incremented accordingly.- Parameters:
pChar- value
-
writeInt
public void writeInt(int pInt)
Write a single int. The position is incremented accordingly.- Parameters:
pInt- value
-
writeLong
public void writeLong(long pLong)
Write a single long. The position is incremented accordingly.- Parameters:
pLong- value
-
writeFloat
public void writeFloat(float pFloat)
Write a single float. The position is incremented accordingly.- Parameters:
pFloat- value
-
writeDouble
public void writeDouble(double pDouble)
Write a single double. The position is incremented accordingly.- Parameters:
pDouble- value
-
readByte
public byte readByte()
Reads a single byte. The position is incremented accordingly.- Returns:
- value
-
readShort
public short readShort()
Reads a single short. The position is incremented accordingly.- Returns:
- value
-
readChar
public char readChar()
Reads a single char. The position is incremented accordingly.- Returns:
- value
-
readInt
public int readInt()
Reads a single int. The position is incremented accordingly.- Returns:
- value
-
readLong
public long readLong()
Reads a single long. The position is incremented accordingly.- Returns:
- value
-
readFloat
public float readFloat()
Reads a single float. The position is incremented accordingly.- Returns:
- value
-
readDouble
public double readDouble()
Reads a single double. The position is incremented accordingly.- Returns:
- value
-
skipBytes
public void skipBytes(long pNumberOfBytesToSkip)
Skips multiple bytes. The position is incremented accordingly.- Parameters:
pNumberOfBytesToSkip- number of bytes to skip
-
skipShorts
public void skipShorts(long pNumberOfShortsToSkip)
Skips multiple shorts. The position is incremented accordingly.- Parameters:
pNumberOfShortsToSkip- number of shorts to skip
-
skipChars
public void skipChars(long pNumberOfCharsToSkip)
Skips multiple chars. The position is incremented accordingly.- Parameters:
pNumberOfCharsToSkip- number of chars to skip
-
skipInts
public void skipInts(long pNumberofIntsToSkip)
Skips multiple ints. The position is incremented accordingly.- Parameters:
pNumberofIntsToSkip- number of ints to skip
-
skipLongs
public void skipLongs(long pNumberOfLongsToSkip)
Skips multiple longs. The position is incremented accordingly.- Parameters:
pNumberOfLongsToSkip- number of longs to skip
-
skipFloats
public void skipFloats(long pNumberOfFloatsToSkip)
Skips multiple floats. The position is incremented accordingly.- Parameters:
pNumberOfFloatsToSkip- number of floats to skip
-
skipDoubles
public void skipDoubles(long pNumberOfDoublesToSkip)
Skips multiple doubles. The position is incremented accordingly.- Parameters:
pNumberOfDoublesToSkip- number of doubles to skip
-
-