Nebula
|
#include <memorystream.h>
Implements a stream class which writes to and reads from system RAM.
Memory streams provide memory mapping for fast direct read/write access.
Inherits IO::Stream.
Inherited by Http::HttpNzStream, Http::HttpStream, and IO::EmbeddedMemoryStream.
Public Member Functions | |
MemoryStream () | |
constructor | |
virtual | ~MemoryStream () |
destructor | |
virtual bool | CanRead () const |
memory streams support reading | |
virtual bool | CanWrite () const |
memory streams support writing | |
virtual bool | CanSeek () const |
memory streams support seeking | |
virtual bool | CanBeMapped () const |
memory streams are mappable | |
virtual void | SetSize (Size s) |
set new size of the stream in bytes | |
virtual Size | GetSize () const |
get the size of the stream in bytes | |
virtual Position | GetPosition () const |
get the current position of the read/write cursor | |
virtual bool | Open () |
open the stream | |
virtual void | Close () |
close the stream | |
virtual void | Write (const void *ptr, Size numBytes) |
directly write to the stream | |
virtual Size | Read (void *ptr, Size numBytes) |
directly read from the stream | |
virtual void | Seek (Offset offset, SeekOrigin origin) |
seek in stream | |
virtual bool | Eof () const |
return true if end-of-stream reached | |
virtual void * | Map () |
map for direct memory-access | |
virtual void * | MemoryMap () |
map for direct memory-access | |
virtual void | Unmap () |
unmap a mapped stream | |
void * | GetRawPointer () const |
get a direct "raw" pointer to the data | |
Public Member Functions inherited from IO::Stream | |
Stream () | |
constructor | |
virtual | ~Stream () |
destructor | |
void | SetURI (const URI &u) |
set stream location as URI | |
const URI & | GetURI () const |
get stream URI | |
void | SetAccessMode (AccessMode m) |
set the access mode of the stream (default is ReadAccess) | |
AccessMode | GetAccessMode () const |
get the access mode of the stream | |
void | SetAccessPattern (AccessPattern p) |
set the prefered access pattern (default is Sequential) | |
AccessPattern | GetAccessPattern () const |
get the prefered access pattern | |
void | SetMediaType (const MediaType &t) |
set optional media type of stream content | |
const MediaType & | GetMediaType () const |
get optional media type | |
bool | IsOpen () const |
return true if currently open | |
virtual void | Flush () |
flush unsaved data | |
virtual void | MemoryUnmap () |
unmap memory stream | |
bool | IsMapped () const |
return true if stream is currently mapped to memory | |
Public Member Functions inherited from Core::RefCounted | |
RefCounted () | |
constructor | |
int | GetRefCount () const |
get the current refcount | |
void | AddRef () |
increment refcount by one | |
void | Release () |
decrement refcount and destroy object if refcount is zero | |
bool | IsInstanceOf (const Rtti &rtti) const |
return true if this object is instance of given class | |
bool | IsInstanceOf (const Util::String &className) const |
return true if this object is instance of given class by string | |
bool | IsInstanceOf (const Util::FourCC &classFourCC) const |
return true if this object is instance of given class by fourcc | |
bool | IsA (const Rtti &rtti) const |
return true if this object is instance of given class, or a derived class | |
bool | IsA (const Util::String &rttiName) const |
return true if this object is instance of given class, or a derived class, by string | |
bool | IsA (const Util::FourCC &rttiFourCC) const |
return true if this object is instance of given class, or a derived class, by fourcc | |
const Util::String & | GetClassName () const |
get the class name | |
Util::FourCC | GetClassFourCC () const |
get the class FourCC code | |
Protected Member Functions | |
void | Realloc (Size s) |
re-allocate the memory buffer | |
bool | HasRoom (Size numBytes) const |
return true if there's enough space for n more bytes | |
void | MakeRoom (Size numBytes) |
make room for at least n more bytes | |
Protected Member Functions inherited from Core::RefCounted | |
virtual | ~RefCounted () |
destructor (called when refcount reaches zero) | |
Protected Attributes | |
Size | capacity |
Size | size |
Position | position |
unsigned char * | buffer |
Protected Attributes inherited from IO::Stream | |
URI | uri |
AccessMode | accessMode |
AccessPattern | accessPattern |
bool | isOpen |
bool | isMapped |
MediaType | mediaType |
Static Protected Attributes | |
static const Size | InitialSize = 256 |
Private Member Functions | |
__DeclareClass (MemoryStream) | |
Additional Inherited Members | |
Public Types inherited from IO::Stream | |
enum | AccessMode { ReadAccess , WriteAccess , AppendAccess , ReadWriteAccess } |
access modes More... | |
enum | AccessPattern { Random , Sequential } |
access prefered pattern More... | |
enum | SeekOrigin { Begin , Current , End } |
seek origins More... | |
typedef int64_t | Position |
typedefs | |
typedef int64_t | Offset |
typedef int64_t | Size |
Static Public Member Functions inherited from Core::RefCounted | |
static void | DumpRefCountingLeaks () |
dump refcounting leaks, call at end of application (NEBULA_DEBUG builds only!) | |
IO::MemoryStream::MemoryStream | ( | ) |
constructor
|
virtual |
destructor
|
private |
|
virtual |
memory streams are mappable
Reimplemented from IO::Stream.
|
virtual |
memory streams support reading
Reimplemented from IO::Stream.
|
virtual |
memory streams support seeking
Reimplemented from IO::Stream.
|
virtual |
memory streams support writing
Reimplemented from IO::Stream.
Reimplemented in IO::EmbeddedMemoryStream.
|
virtual |
close the stream
Close the stream.
The contents of the stream will remain intact until destruction of the object, so that the same data may be accessed or modified during a later session.
Reimplemented from IO::Stream.
|
virtual |
return true if end-of-stream reached
Reimplemented from IO::Stream.
|
virtual |
get the current position of the read/write cursor
Reimplemented from IO::Stream.
void * IO::MemoryStream::GetRawPointer | ( | ) | const |
get a direct "raw" pointer to the data
Get a direct pointer to the raw data.
This is a convenience method and only works for memory streams. NOTE: writing new data to the stream may/will result in an invalid pointer, don't keep the returned pointer around between writes!
|
virtual |
get the size of the stream in bytes
Reimplemented from IO::Stream.
|
protected |
return true if there's enough space for n more bytes
|
protected |
make room for at least n more bytes
This method makes room for at least N more bytes.
The actually allocated memory buffer will be greater then that. This operation involves a copy of existing data.
|
virtual |
map for direct memory-access
Map the stream for direct memory access.
This is much faster then reading/writing, but less flexible. A mapped stream cannot grow, instead the allowed memory range is determined by GetSize(). The read/writer must take special care to not read or write past the memory buffer boundaries!
Reimplemented from IO::Stream.
|
virtual |
map for direct memory-access
Reimplemented from IO::Stream.
|
virtual |
open the stream
Open the stream for reading or writing.
The stream may already contain data if it has been opened/closed before.
Reimplemented from IO::Stream.
Reimplemented in Http::HttpNzStream, Http::HttpStream, and IO::EmbeddedMemoryStream.
|
virtual |
directly read from the stream
Reimplemented from IO::Stream.
|
protected |
re-allocate the memory buffer
This (re-)allocates the memory buffer to a new size.
If the new size is smaller then the existing size, the buffer contents will be clipped.
|
virtual |
seek in stream
Reimplemented from IO::Stream.
|
virtual |
set new size of the stream in bytes
Reimplemented from IO::Stream.
|
virtual |
|
virtual |
directly write to the stream
Reimplemented from IO::Stream.
|
protected |
|
protected |
|
staticprotected |
|
protected |
|
protected |