Grok  9.5.0
Public Member Functions | Static Public Member Functions | Public Attributes | Private Member Functions | Private Attributes | List of all members
grk::BufferedStream Struct Reference

#include <BufferedStream.h>

Inheritance diagram for grk::BufferedStream:
grk::IBufferedStream

Public Member Functions

 BufferedStream (uint8_t *buffer, size_t buffer_size, bool l_is_input)
 
grk_streamgetWrapper (void)
 
void setUserData (void *data, grk_stream_free_user_data_fn freeUserDataFun)
 
void * getUserData (void)
 
void setUserDataLength (uint64_t len)
 
uint32_t getStatus (void)
 
void setReadFunction (grk_stream_read_fn fn)
 
void setZeroCopyReadFunction (grk_stream_zero_copy_read_fn fn)
 
void setWriteFunction (grk_stream_write_fn fn)
 
void setSeekFunction (grk_stream_seek_fn fn)
 
size_t read (uint8_t *buffer, size_t p_size)
 Reads some bytes from the stream. More...
 
bool writeShort (uint16_t value)
 
bool write24 (uint32_t value)
 
bool writeInt (uint32_t value)
 
bool write64 (uint64_t value)
 
bool writeByte (uint8_t value)
 
size_t writeBytes (const uint8_t *buffer, size_t p_size)
 Write bytes to stream (no correction for endian!). More...
 
bool flush ()
 Flush stream to disk. More...
 
bool skip (int64_t p_size)
 Skip bytes in stream. More...
 
uint64_t tell (void)
 Tells byte offset of stream (similar to ftell). More...
 
uint64_t numBytesLeft (void)
 Get the number of bytes left before end of stream. More...
 
bool seek (uint64_t offset)
 Seek bytes from the stream (absolute) More...
 
bool hasSeek ()
 Check if stream is seekable. More...
 
bool supportsZeroCopy ()
 
uint8_t * getZeroCopyPtr ()
 
- Public Member Functions inherited from grk::IBufferedStream
virtual ~IBufferedStream ()=default
 

Static Public Member Functions

static BufferedStreamgetImpl (grk_stream *stream)
 

Public Attributes

friend GrkObjectWrapperImpl< BufferedStream >
 

Private Member Functions

 ~BufferedStream ()
 
bool write_skip (int64_t p_size)
 Skip bytes in write stream. More...
 
bool read_skip (int64_t p_size)
 Skip bytes in read stream. More...
 
bool read_seek (uint64_t offset)
 Absolute seek in read stream. More...
 
bool write_seek (uint64_t offset)
 Absolute seek in write stream. More...
 
void writeIncrement (size_t p_size)
 
template<typename TYPE >
bool write (TYPE value, uint8_t numBytes)
 
void invalidate_buffer ()
 
bool isMemStream ()
 

Private Attributes

grk_object obj
 
void * m_user_data
 user data More...
 
grk_stream_free_user_data_fn m_free_user_data_fn
 Pointer to function to free m_user_data (nullptr at initialization) when destroying the stream. More...
 
uint64_t m_user_data_length
 User data length. More...
 
grk_stream_read_fn m_read_fn
 Pointer to actual read function (nullptr at initialization). More...
 
grk_stream_zero_copy_read_fn m_zero_copy_read_fn
 Pointer to actual zero copy read function (nullptr at initialization). More...
 
grk_stream_write_fn m_write_fn
 Pointer to actual write function (nullptr at initialization). More...
 
grk_stream_seek_fn m_seek_fn
 Pointer to actual seek function (if available). More...
 
uint32_t m_status
 Stream status flags. More...
 
grkBufferU8m_buf
 
size_t m_buffered_bytes
 
size_t m_read_bytes_seekable
 
uint64_t m_stream_offset
 

Constructor & Destructor Documentation

◆ BufferedStream()

grk::BufferedStream::BufferedStream ( uint8_t *  buffer,
size_t  buffer_size,
bool  l_is_input 
)

References m_buf, obj, and _grk_object::wrapper.

◆ ~BufferedStream()

grk::BufferedStream::~BufferedStream ( )
private

Member Function Documentation

◆ flush()

bool grk::BufferedStream::flush ( )
virtual

◆ getImpl()

BufferedStream * grk::BufferedStream::getImpl ( grk_stream stream)
static

◆ getStatus()

uint32_t grk::BufferedStream::getStatus ( void  )

References m_status.

◆ getUserData()

void * grk::BufferedStream::getUserData ( void  )

References m_user_data.

◆ getWrapper()

grk_stream * grk::BufferedStream::getWrapper ( void  )

References obj.

◆ getZeroCopyPtr()

uint8_t * grk::BufferedStream::getZeroCopyPtr ( )
virtual

◆ hasSeek()

bool grk::BufferedStream::hasSeek ( void  )
virtual

Check if stream is seekable.

Implements grk::IBufferedStream.

References m_seek_fn.

◆ invalidate_buffer()

void grk::BufferedStream::invalidate_buffer ( )
private

◆ isMemStream()

bool grk::BufferedStream::isMemStream ( )
private

◆ numBytesLeft()

uint64_t grk::BufferedStream::numBytesLeft ( void  )
virtual

Get the number of bytes left before end of stream.

Returns
Number of bytes left before the end of the stream.

Implements grk::IBufferedStream.

References m_stream_offset, and m_user_data_length.

◆ read()

size_t grk::BufferedStream::read ( uint8_t *  buffer,
size_t  p_size 
)
virtual

Reads some bytes from the stream.

Parameters
bufferpointer to the data buffer that will receive the data.
p_sizenumber of bytes to read.
Returns
the number of bytes read

Implements grk::IBufferedStream.

References grk::grkBuffer< T, A >::buf, grk::grkBuffer< T, A >::currPtr(), grk::GRK_ERROR(), GROK_STREAM_STATUS_END, grk::grkBuffer< T, A >::incrementOffset(), invalidate_buffer(), grk::grkBuffer< T, A >::len, m_buf, m_buffered_bytes, m_read_bytes_seekable, m_read_fn, m_status, m_stream_offset, m_user_data, m_user_data_length, and supportsZeroCopy().

◆ read_seek()

bool grk::BufferedStream::read_seek ( uint64_t  offset)
private

◆ read_skip()

bool grk::BufferedStream::read_skip ( int64_t  p_size)
private

Skip bytes in read stream.

Parameters
p_sizethe number of bytes to skip.
Returns
true if successful, otherwise false

References m_stream_offset, and read_seek().

Referenced by skip().

◆ seek()

bool grk::BufferedStream::seek ( uint64_t  offset)
virtual

Seek bytes from the stream (absolute)

Parameters
offsetthe number of bytes to skip.
Returns
true if successful, otherwise false

Implements grk::IBufferedStream.

References GROK_STREAM_STATUS_INPUT, m_status, read_seek(), and write_seek().

◆ setReadFunction()

void grk::BufferedStream::setReadFunction ( grk_stream_read_fn  fn)

References m_read_fn.

◆ setSeekFunction()

void grk::BufferedStream::setSeekFunction ( grk_stream_seek_fn  fn)

References m_seek_fn.

◆ setUserData()

void grk::BufferedStream::setUserData ( void *  data,
grk_stream_free_user_data_fn  freeUserDataFun 
)

References m_free_user_data_fn, and m_user_data.

◆ setUserDataLength()

void grk::BufferedStream::setUserDataLength ( uint64_t  len)

References m_user_data_length.

◆ setWriteFunction()

void grk::BufferedStream::setWriteFunction ( grk_stream_write_fn  fn)

References m_write_fn.

◆ setZeroCopyReadFunction()

void grk::BufferedStream::setZeroCopyReadFunction ( grk_stream_zero_copy_read_fn  fn)

References m_zero_copy_read_fn.

◆ skip()

bool grk::BufferedStream::skip ( int64_t  p_size)
virtual

Skip bytes in stream.

Parameters
p_sizethe number of bytes to skip.
Returns
true if successful, otherwise false

Implements grk::IBufferedStream.

References GROK_STREAM_STATUS_INPUT, m_status, read_skip(), and write_skip().

◆ supportsZeroCopy()

bool grk::BufferedStream::supportsZeroCopy ( )
virtual

Implements grk::IBufferedStream.

References GROK_STREAM_STATUS_INPUT, isMemStream(), and m_status.

Referenced by read().

◆ tell()

uint64_t grk::BufferedStream::tell ( void  )
virtual

Tells byte offset of stream (similar to ftell).

Returns
the current position of the stream.

Implements grk::IBufferedStream.

References m_stream_offset.

◆ write()

template<typename TYPE >
bool grk::BufferedStream::write ( TYPE  value,
uint8_t  numBytes 
)
private

◆ write24()

bool grk::BufferedStream::write24 ( uint32_t  value)
virtual

Implements grk::IBufferedStream.

◆ write64()

bool grk::BufferedStream::write64 ( uint64_t  value)
virtual

Implements grk::IBufferedStream.

◆ write_seek()

bool grk::BufferedStream::write_seek ( uint64_t  offset)
private

Absolute seek in write stream.

Parameters
offsetabsolute offset
Returns
true if successful, otherwise false

References flush(), GROK_STREAM_STATUS_ERROR, invalidate_buffer(), isMemStream(), m_buf, m_seek_fn, m_status, m_stream_offset, m_user_data, and grk::grkBuffer< T, A >::offset.

Referenced by seek(), and write_skip().

◆ write_skip()

bool grk::BufferedStream::write_skip ( int64_t  p_size)
private

Skip bytes in write stream.

Parameters
p_sizethe number of bytes to skip.
Returns
true if successful, otherwise false

References m_stream_offset, and write_seek().

Referenced by skip().

◆ writeByte()

bool grk::BufferedStream::writeByte ( uint8_t  value)
virtual

Implements grk::IBufferedStream.

References writeBytes().

◆ writeBytes()

size_t grk::BufferedStream::writeBytes ( const uint8_t *  buffer,
size_t  p_size 
)
virtual

Write bytes to stream (no correction for endian!).

Parameters
bufferpointer to the data buffer holds the data to be written.
p_sizenumber of bytes to write.
Returns
the number of bytes written

Implements grk::IBufferedStream.

References grk::grkBuffer< T, A >::currPtr(), flush(), GROK_STREAM_STATUS_ERROR, isMemStream(), grk::grkBuffer< T, A >::len, m_buf, m_buffered_bytes, m_status, m_stream_offset, m_user_data, m_write_fn, grk::grkBuffer< T, A >::offset, and writeIncrement().

Referenced by writeByte().

◆ writeIncrement()

void grk::BufferedStream::writeIncrement ( size_t  p_size)
private

◆ writeInt()

bool grk::BufferedStream::writeInt ( uint32_t  value)
virtual

Implements grk::IBufferedStream.

◆ writeShort()

bool grk::BufferedStream::writeShort ( uint16_t  value)
virtual

Implements grk::IBufferedStream.

Member Data Documentation

◆ GrkObjectWrapperImpl< BufferedStream >

friend grk::BufferedStream::GrkObjectWrapperImpl< BufferedStream >

◆ m_buf

grkBufferU8* grk::BufferedStream::m_buf
private

◆ m_buffered_bytes

size_t grk::BufferedStream::m_buffered_bytes
private

◆ m_free_user_data_fn

grk_stream_free_user_data_fn grk::BufferedStream::m_free_user_data_fn
private

Pointer to function to free m_user_data (nullptr at initialization) when destroying the stream.

If pointer is nullptr the function is not called and the m_user_data is not freed (even if it isn't nullptr).

Referenced by setUserData(), and ~BufferedStream().

◆ m_read_bytes_seekable

size_t grk::BufferedStream::m_read_bytes_seekable
private

◆ m_read_fn

grk_stream_read_fn grk::BufferedStream::m_read_fn
private

Pointer to actual read function (nullptr at initialization).

Referenced by read(), and setReadFunction().

◆ m_seek_fn

grk_stream_seek_fn grk::BufferedStream::m_seek_fn
private

Pointer to actual seek function (if available).

Referenced by hasSeek(), read_seek(), setSeekFunction(), write(), and write_seek().

◆ m_status

uint32_t grk::BufferedStream::m_status
private

◆ m_stream_offset

uint64_t grk::BufferedStream::m_stream_offset
private

◆ m_user_data

void* grk::BufferedStream::m_user_data
private

◆ m_user_data_length

uint64_t grk::BufferedStream::m_user_data_length
private

User data length.

Currently set to size of file for file read stream, and size of buffer for buffer read/write stream

Referenced by numBytesLeft(), read(), read_seek(), and setUserDataLength().

◆ m_write_fn

grk_stream_write_fn grk::BufferedStream::m_write_fn
private

Pointer to actual write function (nullptr at initialization).

Referenced by flush(), setWriteFunction(), and writeBytes().

◆ m_zero_copy_read_fn

grk_stream_zero_copy_read_fn grk::BufferedStream::m_zero_copy_read_fn
private

Pointer to actual zero copy read function (nullptr at initialization).

Referenced by setZeroCopyReadFunction().

◆ obj

grk_object grk::BufferedStream::obj
private

Referenced by BufferedStream(), and getWrapper().


The documentation for this struct was generated from the following files: