MrSID Decode SDK for Raster Reference Manual
9.0.0.3864
|
holds a memory buffer of variable size More...
#include <lt_ioDynamicMemStream.h>
Public Types | |
Memory Allocation and Deallocation Functions | |
typedef void *(* | Allocator )(size_t) |
typedef void(* | Deallocator )(void *) |
typedef void *(* | Reallocator )(void *, size_t) |
Public Member Functions | |
LTIODynamicMemStream () | |
virtual | ~LTIODynamicMemStream () |
virtual bool | isEOF () |
Test for end-of-stream. | |
virtual bool | isOpen () |
Test for stream openness. | |
virtual LT_STATUS | open () |
Opens the stream. | |
virtual LT_STATUS | close () |
Closes the stream. | |
virtual lt_uint32 | read (lt_uint8 *pDest, lt_uint32 numBytes) |
Retrieve the specified number of bytes from the data source and place them in pDest. | |
virtual lt_uint32 | write (const lt_uint8 *pSrc, lt_uint32 numBytes) |
Store the specified number of bytes in the data source. | |
virtual LT_STATUS | seek (lt_int64 offset, LTIOSeekDir origin) |
Moves the data access position to origin + offset. | |
virtual lt_int64 | tell () |
Returns the current data access position as an offset from the start of the data. | |
virtual LTIOStreamInf * | duplicate () |
Clone the stream. | |
virtual LT_STATUS | getLastError () const |
Get status code of last error event. | |
virtual const char * | getID () const |
Get a URI describing the stream object. | |
Initialization functions | |
virtual LT_STATUS | initialize (lt_uint32 size=4096, float growthRate=2) |
Initializes the stream. | |
virtual LT_STATUS | initialize (lt_uint32 size, Allocator allo, Deallocator deallo, Reallocator reallo=NULL, float growthRate=2) |
Initializes the stream, with custom memory management. | |
Memory Management | |
Allocator | getAllocator () const |
Returns the allocator function pointer. | |
Deallocator | getDeallocator () const |
Returns the deallocator function pointer. | |
Reallocator | getReallocator () const |
Returns the reallocator function pointer. | |
const lt_uint8 * | getData () const |
Get the underlying buffer. | |
LT_STATUS | detachAndClose (lt_uint8 *&data) |
Detach the underlying buffer from the stream, and closes the stream. | |
lt_uint64 | size () const |
Returns the number of bytes which are in the stream. | |
Protected Member Functions | |
bool | grow (lt_uint32 numBytes) |
extend size of data buffer if required | |
void * | defaultRealloc (void *, size_t) |
Protected Attributes | |
lt_uint8 * | m_data |
pointer to buffer | |
lt_uint32 | m_initialSize |
initial size of buffer | |
lt_uint32 | m_bufferSize |
size of buffer as allocated | |
lt_uint32 | m_userSize |
size of buffer as accessible by user | |
lt_uint32 | m_cur |
current position | |
bool | m_isOpen |
openness | |
Allocator | m_alloc |
allocator function | |
Deallocator | m_dealloc |
deallocator | |
Reallocator | m_realloc |
reallocator | |
LT_STATUS | m_lastError |
bool | m_isEOF |
float | m_growthRate |
the factor of growth of the memory [1-2): |
Unlike LTIOMemStream, which uses a fixed-size buffer, this class will grow its buffer as you write past the end of it. It is most suitable for use as an internal "temp stream". The stream is initially empty.
The stream cannot hold more than 2^32 bytes of data.
Definition at line 33 of file lt_ioDynamicMemStream.h.
typedef void*(* LTIODynamicMemStream::Allocator)(size_t) |
Definition at line 43 of file lt_ioDynamicMemStream.h.
typedef void(* LTIODynamicMemStream::Deallocator)(void *) |
Definition at line 44 of file lt_ioDynamicMemStream.h.
typedef void*(* LTIODynamicMemStream::Reallocator)(void *, size_t) |
Definition at line 45 of file lt_ioDynamicMemStream.h.
virtual LTIODynamicMemStream::~LTIODynamicMemStream | ( | ) | [virtual] |
virtual LT_STATUS LTIODynamicMemStream::close | ( | ) | [virtual] |
Puts the stream in a state that does not allow data access. May free up resources, but only in such a way that doesn't inhibit successful future calls to open()
LT_STS_Success | On success, or if the stream is already closed. |
LT_STS_Failure | Otherwise. |
Implements LTIOStreamInf.
void* LTIODynamicMemStream::defaultRealloc | ( | void * | , |
size_t | |||
) | [protected] |
The caller is responsible for deallocating the buffer. (Note that you must use the Deallocator method, not delete[].)
data | receives pointer to underlying buffer |
virtual LTIOStreamInf* LTIODynamicMemStream::duplicate | ( | ) | [virtual] |
Create new stream of the same type with the same initialization parameters. The transmission of these parameters is the responsibility of the derived type. The new stream should initially return false for isOpen().
NULL | the stream could not be duplicated; valid LTIOStreamInf* otherwise. |
Implements LTIOStreamInf.
Allocator LTIODynamicMemStream::getAllocator | ( | ) | const [inline] |
Definition at line 101 of file lt_ioDynamicMemStream.h.
const lt_uint8* LTIODynamicMemStream::getData | ( | ) | const [inline] |
The pointer is guaranteed to be good until the next call to write(), or close()
Definition at line 121 of file lt_ioDynamicMemStream.h.
Deallocator LTIODynamicMemStream::getDeallocator | ( | ) | const [inline] |
Definition at line 106 of file lt_ioDynamicMemStream.h.
virtual const char* LTIODynamicMemStream::getID | ( | ) | const [virtual] |
This function returns a UTF-8, null-terminated string which is a URI describing the origin of the stream object -- for example, "file://foo.txt" or "lt_memstream:". This string is only intended for diagnostic purposes, i.e. it may not be valid to pass it to the ctor in an attempt to reopen the stream.
uri | the uri string |
Implements LTIOStreamInf.
virtual LT_STATUS LTIODynamicMemStream::getLastError | ( | ) | const [virtual] |
read(), write(), tell(), and duplicate() do not explicitly return status codes in the event of an error. When an error has occurred, this function returns the appropriate status code. Note calling this function after a successful I/O operation will return an undefined value.
status | the error code |
Implements LTIOStreamInf.
Reallocator LTIODynamicMemStream::getReallocator | ( | ) | const [inline] |
Definition at line 111 of file lt_ioDynamicMemStream.h.
bool LTIODynamicMemStream::grow | ( | lt_uint32 | numBytes | ) | [protected] |
virtual LT_STATUS LTIODynamicMemStream::initialize | ( | lt_uint32 | size = 4096 , |
float | growthRate = 2 |
||
) | [virtual] |
size | initial size of buffer in bytes |
growthRate | factor of growth Valid Values: [1-2) |
virtual LT_STATUS LTIODynamicMemStream::initialize | ( | lt_uint32 | size, |
Allocator | allo, | ||
Deallocator | deallo, | ||
Reallocator | reallo = NULL , |
||
float | growthRate = 2 |
||
) | [virtual] |
The allocator function should return NULL in the event of failure, as opposed to throwing an exception -- that is, be like malloc() and not like new.
size | initial size of buffer in bytes |
allo | user-defined memory allocator |
deallo | user-defined memory deallocator |
reallo | user-defined memory reallocator |
growthRate | factor of growth Valid Values: [1-2) |
virtual bool LTIODynamicMemStream::isEOF | ( | ) | [virtual] |
Returns true after the first read operation that attempts to read past the end of the stream. It returns false if the current position is not end of stream.
true | end of stream |
false | otherwise |
Implements LTIOStreamInf.
virtual bool LTIODynamicMemStream::isOpen | ( | ) | [virtual] |
true | The stream is open |
false | otherwise |
Implements LTIOStreamInf.
virtual LT_STATUS LTIODynamicMemStream::open | ( | ) | [virtual] |
Opening a stream puts it in a state that allows data access based on cached initialization parameters.
LT_STS_IOStreamUninitialized | The stream has not been initialized with enough information to open the stream |
LT_STS_IOStreamInvalidState | The stream is already open |
LT_STS_Success | On success. |
LT_STS_Failure | Failure. |
other | Implementations may return other codes |
Implements LTIOStreamInf.
virtual lt_uint32 LTIODynamicMemStream::read | ( | lt_uint8 * | pDest, |
lt_uint32 | numBytes | ||
) | [virtual] |
pDest | buffer in which to store read data |
numBytes | number of bytes to read from stream |
numBytes | The number of bytes actually read |
Implements LTIOStreamInf.
virtual LT_STATUS LTIODynamicMemStream::seek | ( | lt_int64 | offset, |
LTIOSeekDir | origin | ||
) | [virtual] |
offset | number of bytes from origin at which to the next read or write will take place |
origin | place in stream from which to seek |
LT_STS_IOStreamUnsupported | The stream is not seekable |
LT_STS_IOStreamInvalidArgs | The offset and origin do not specify a valid location in the stream |
LT_STS_Success | On success |
LT_STS_Failure | Otherwise |
other | Implementations may return other codes |
Implements LTIOStreamInf.
lt_uint64 LTIODynamicMemStream::size | ( | ) | const [inline] |
This may be smaller than the amount actually allocated.
Definition at line 143 of file lt_ioDynamicMemStream.h.
virtual lt_int64 LTIODynamicMemStream::tell | ( | ) | [virtual] |
postion | Number of bytes from the start of the data |
-1 | On error. |
other | Implementations may return other codes |
Implements LTIOStreamInf.
virtual lt_uint32 LTIODynamicMemStream::write | ( | const lt_uint8 * | pSrc, |
lt_uint32 | numBytes | ||
) | [virtual] |
pSrc | buffer from which to store data |
numBytes | number of bytes to write to stream |
numBytes | number of bytes actually written |
Implements LTIOStreamInf.
Allocator LTIODynamicMemStream::m_alloc [protected] |
Definition at line 174 of file lt_ioDynamicMemStream.h.
lt_uint32 LTIODynamicMemStream::m_bufferSize [protected] |
Definition at line 162 of file lt_ioDynamicMemStream.h.
lt_uint32 LTIODynamicMemStream::m_cur [protected] |
Definition at line 168 of file lt_ioDynamicMemStream.h.
lt_uint8* LTIODynamicMemStream::m_data [protected] |
Definition at line 156 of file lt_ioDynamicMemStream.h.
Deallocator LTIODynamicMemStream::m_dealloc [protected] |
Definition at line 177 of file lt_ioDynamicMemStream.h.
float LTIODynamicMemStream::m_growthRate [protected] |
Definition at line 189 of file lt_ioDynamicMemStream.h.
lt_uint32 LTIODynamicMemStream::m_initialSize [protected] |
Definition at line 159 of file lt_ioDynamicMemStream.h.
bool LTIODynamicMemStream::m_isEOF [protected] |
Definition at line 186 of file lt_ioDynamicMemStream.h.
bool LTIODynamicMemStream::m_isOpen [protected] |
Definition at line 171 of file lt_ioDynamicMemStream.h.
LT_STATUS LTIODynamicMemStream::m_lastError [protected] |
Definition at line 184 of file lt_ioDynamicMemStream.h.
Reallocator LTIODynamicMemStream::m_realloc [protected] |
Definition at line 180 of file lt_ioDynamicMemStream.h.
lt_uint32 LTIODynamicMemStream::m_userSize [protected] |
Definition at line 165 of file lt_ioDynamicMemStream.h.