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

Byte input-output stream. More...

#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)
 
 ~BufferedStream ()
 
size_t read (uint8_t *p_buffer, size_t p_size)
 Reads some bytes from the stream. More...
 
size_t read_data_zero_copy (uint8_t **p_buffer, size_t p_size)
 
bool write_byte (uint8_t value)
 
bool write_short (uint16_t value)
 
bool write_24 (uint32_t value)
 
bool write_int (uint32_t value)
 
bool write_64 (uint64_t value)
 
size_t write_bytes (const uint8_t *p_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 get_number_byte_left (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 has_seek ()
 Check if stream is seekable. More...
 
bool supportsZeroCopy ()
 
uint8_t * getCurrentPtr ()
 
- Public Member Functions inherited from grk::IBufferedStream
virtual ~IBufferedStream ()
 

Public Attributes

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...
 

Private Member Functions

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 write_increment (size_t p_size)
 
template<typename TYPE >
bool write (TYPE value, uint8_t numBytes)
 
void invalidate_buffer ()
 
bool isMemStream ()
 

Private Attributes

grk_bufm_buf
 
size_t m_buffered_bytes
 
size_t m_read_bytes_seekable
 
uint64_t m_stream_offset
 

Detailed Description

Byte input-output stream.

Constructor & Destructor Documentation

◆ BufferedStream()

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

References m_buf.

◆ ~BufferedStream()

grk::BufferedStream::~BufferedStream ( )

Member Function Documentation

◆ flush()

bool grk::BufferedStream::flush ( )
virtual

◆ get_number_byte_left()

uint64_t grk::BufferedStream::get_number_byte_left ( 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.

Referenced by grk::jp2_read_box_hdr(), and grk::TileProcessor::prepare_sod_decoding().

◆ getCurrentPtr()

uint8_t * grk::BufferedStream::getCurrentPtr ( )

◆ has_seek()

bool grk::BufferedStream::has_seek ( 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

◆ read()

size_t grk::BufferedStream::read ( uint8_t *  p_buffer,
size_t  p_size 
)

Reads some bytes from the stream.

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

References grk::grk_buffer< T >::buf, grk::grk_buffer< T >::curr_ptr(), grk::GRK_ERROR(), GROK_STREAM_STATUS_END, grk::grk_buffer< T >::incr_offset(), invalidate_buffer(), grk::grk_buffer< T >::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().

Referenced by grk::jp2_read_box_hdr(), and grk::TileProcessor::prepare_sod_decoding().

◆ read_data_zero_copy()

size_t grk::BufferedStream::read_data_zero_copy ( uint8_t **  p_buffer,
size_t  p_size 
)

◆ 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 success, 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().

Referenced by grk::TileLengthMarkers::write_end(), and grk::PacketLengthMarkers::write_marker_length().

◆ 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 success, otherwise false

Implements grk::IBufferedStream.

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

Referenced by grk::TileLengthMarkers::write_begin(), and grk::PacketLengthMarkers::write_marker_header().

◆ supportsZeroCopy()

bool grk::BufferedStream::supportsZeroCopy ( )

◆ tell()

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

◆ write()

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

◆ write_24()

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

◆ write_64()

bool grk::BufferedStream::write_64 ( uint64_t  value)

◆ write_byte()

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

◆ write_bytes()

size_t grk::BufferedStream::write_bytes ( const uint8_t *  p_buffer,
size_t  p_size 
)
virtual

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

Parameters
p_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::grk_buffer< T >::curr_ptr(), flush(), GROK_STREAM_STATUS_ERROR, isMemStream(), grk::grk_buffer< T >::len, m_buf, m_buffered_bytes, m_status, m_stream_offset, m_user_data, m_write_fn, grk::grk_buffer< T >::offset, and write_increment().

Referenced by grk::T2Compress::compress_packet(), grk::j2k_write_mct_record(), grk::PacketLengthMarkers::write(), and write_byte().

◆ write_increment()

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

◆ write_int()

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

◆ write_seek()

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

Absolute seek in write stream.

Parameters
offsetabsolute offset
Returns
true if success, 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::grk_buffer< T >::offset.

Referenced by seek(), and write_skip().

◆ write_short()

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

◆ 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 success, otherwise false

References m_stream_offset, and write_seek().

Referenced by skip().

Member Data Documentation

◆ m_buf

grk_buf* 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

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 ~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

Pointer to actual read function (nullptr at initialization).

Referenced by read().

◆ m_seek_fn

grk_stream_seek_fn grk::BufferedStream::m_seek_fn

Pointer to actual seek function (if available).

Referenced by has_seek(), read_seek(), write(), and write_seek().

◆ m_status

uint32_t grk::BufferedStream::m_status

◆ m_stream_offset

uint64_t grk::BufferedStream::m_stream_offset
private

◆ m_user_data

void* grk::BufferedStream::m_user_data

◆ m_user_data_length

uint64_t grk::BufferedStream::m_user_data_length

User data length.

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

Referenced by get_number_byte_left(), read(), read_data_zero_copy(), and read_seek().

◆ m_write_fn

grk_stream_write_fn grk::BufferedStream::m_write_fn

Pointer to actual write function (nullptr at initialization).

Referenced by flush(), and write_bytes().

◆ m_zero_copy_read_fn

grk_stream_zero_copy_read_fn grk::BufferedStream::m_zero_copy_read_fn

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

Referenced by read_data_zero_copy().


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