30 #include <boost/noncopyable.hpp>
34 # include <boost/iostreams/concepts.hpp>
35 # include <boost/iostreams/stream.hpp>
49 #ifdef CINDER_LITTLE_ENDIAN
67 virtual off_t
tell()
const = 0;
124 void read( fs::path *
p );
132 virtual off_t
size()
const = 0;
133 virtual bool isEof()
const = 0;
158 static IStreamFileRef create( FILE *file,
bool ownsFile =
true, int32_t defaultBufferSize = 2048 );
173 IStreamFile( FILE *aFile,
bool aOwnsFile =
true, int32_t aDefaultBufferSize = 2048 );
175 virtual void IORead(
void *
t,
size_t size );
197 virtual off_t
tell()
const;
234 IoStreamFile( FILE *aFile,
bool aOwnsFile =
true, int32_t aDefaultBufferSize = 2048 );
236 virtual void IORead(
void *
t,
size_t size );
238 virtual void IOWrite(
const void *
t,
size_t size );
271 const void*
getData() {
return reinterpret_cast<const void*
>(
mData ); }
274 IStreamMem(
const void *aData,
size_t aDataSize );
276 virtual void IORead(
void *
t,
size_t size );
292 virtual off_t
tell()
const {
return static_cast<off_t
>(
mOffset ); }
351 std::streamsize
read(
char *
s, std::streamsize
n )
356 return (std::streamsize)
mStream->readDataAvailable( s, (
size_t)n );
372 std::streamsize
write(
const char *
s, std::streamsize
n )
374 mStream->writeData( s, (
size_t)n );
387 typedef boost::iostreams::seekable_device_tag
category;
391 std::streamsize
read(
char *
s, std::streamsize
n )
393 return static_cast<std::streamsize
>(
mStream->readDataAvailable( s, (
size_t)n ) );
396 std::streamsize
write(
const char *
s, std::streamsize
n )
398 mStream->writeData( s, (
size_t)n );
402 boost::iostreams::stream_offset
seek( boost::iostreams::stream_offset off, std::ios_base::seekdir way)
404 if( way == std::ios_base::beg ) {
405 mStream->seekAbsolute( (off_t)off );
407 else if( way == std::ios_base::cur ) {
408 mStream->seekRelative( (off_t)off );
411 mStream->seekAbsolute( -(off_t)off );
void seekRelative(off_t relativeOffset)
Moves the current position of the stream by relativeOffset bytes.
Definition: Stream.cpp:227
off_t tell() const
Returns the current position of the stream measured in bytes **/.
Definition: Stream.cpp:354
virtual void seekAbsolute(off_t absoluteOffset)
Sets the current position of the stream to byte absoluteOffset. A negative offset is relative to the ...
Definition: Stream.cpp:289
virtual void IOWrite(const void *t, size_t size)
Definition: Stream.cpp:515
void seekRelative(off_t relativeOffset)
Moves the current position of the stream by relativeOffset bytes.
Definition: Stream.cpp:347
std::streamsize write(const char *s, std::streamsize n)
Definition: Stream.h:396
IStreamMem(const void *aData, size_t aDataSize)
Definition: Stream.cpp:427
FILE * mFile
Definition: Stream.h:240
~IStreamFile()
Definition: Stream.cpp:176
std::shared_ptr< class IStreamFile > IStreamFileRef
Definition: Stream.h:153
~OStreamMem()
Definition: Stream.cpp:495
size_t readDataAvailable(void *dest, size_t maxSize)
Definition: Stream.cpp:333
void enable(GLenum state)
Enables the OpenGL State state. Equivalent to calling to glEnable( state );.
Definition: dx.h:198
void seekAbsolute(off_t absoluteOffset)
Sets the current position of the stream to byte absoluteOffset. A negative offset is relative to the ...
Definition: Stream.cpp:218
void readEndian(T *t, uint8_t endian)
Definition: Stream.h:116
size_t readDataAvailable(void *dest, size_t maxSize)
Definition: Stream.cpp:184
std::streamsize write(const char *s, std::streamsize n)
Definition: Stream.h:372
static IStreamFileRef create(FILE *file, bool ownsFile=true, int32_t defaultBufferSize=2048)
Creates a new IStreamFileRef from a C-style file pointer FILE as returned by fopen(). If ownsFile the returned stream will destroy the stream upon its own destruction.
Definition: Stream.cpp:162
virtual void IOWrite(const void *t, size_t size)
Definition: Stream.cpp:302
size_t mOffset
Definition: Stream.h:305
GLsizei const GLchar ** string
Definition: GLee.h:2427
int32_t mBufferSize
Definition: Stream.h:242
std::shared_ptr< uint8_t > mBuffer
Definition: Stream.h:181
std::string readLine()
Definition: Stream.cpp:124
boost::iostreams::sink_tag category
Definition: Stream.h:368
virtual off_t tell() const
Returns the current position of the stream measured in bytes **/.
Definition: Stream.h:292
void write(const std::string &s)
Writes null-terminated string, including terminator.
Definition: Stream.h:87
virtual size_t readDataAvailable(void *dest, size_t maxSize)=0
std::shared_ptr< class OStream > OStreamRef
Definition: Stream.h:107
std::shared_ptr< uint8_t > mBuffer
Definition: Stream.h:243
size_t mDataSize
Definition: Stream.h:304
bool isEof() const
Definition: Stream.cpp:372
char char_type
Definition: Stream.h:367
off_t mBufferFileOffset
Definition: Stream.h:245
static const int MINIMUM_BUFFER_SIZE
Definition: Stream.h:140
GLuint src
Definition: GLee.h:10873
bool mOwnsFile
Definition: Stream.h:210
static uint8_t getNativeEndianness()
Returns the platform's endianness as a StreamBase::Endianness.
Definition: Stream.h:47
FILE * mFile
Definition: Stream.h:178
GLsizei GLsizei GLenum GLenum const GLvoid * data
Definition: GLee.h:1011
virtual ~OStream()
Definition: Stream.h:84
OStream()
Definition: Stream.h:101
void read(T *t)
Definition: Stream.h:114
off_t mBufferFileOffset
Definition: Stream.h:183
off_t tell() const
Returns the current position of the stream measured in bytes **/.
Definition: Stream.cpp:234
IStreamFile(FILE *aFile, bool aOwnsFile=true, int32_t aDefaultBufferSize=2048)
Definition: Stream.cpp:167
IStreamStateRestore(IStreamCinder &aStream)
Definition: Stream.h:312
std::shared_ptr< IoStream > IoStreamRef
Definition: Stream.h:150
void seekAbsolute(off_t absoluteOffset)
Sets the current position of the stream to byte absoluteOffset. A negative offset is relative to the ...
Definition: Stream.cpp:338
cinder_stream_sink(OStreamRef aStream)
Definition: Stream.h:370
fs::path mFileName
Definition: Stream.h:78
void writeData(const void *src, size_t size)
Definition: Stream.cpp:155
OStreamMem(size_t bufferSizeHint)
Definition: Stream.cpp:488
cinder_stream_source(cinder::IStreamRef aStream)
Definition: Stream.h:349
IStreamCinder()
Definition: Stream.h:136
static IStreamMemRef create(const void *data, size_t size)
Creates a new IStreamMemRef from the memory pointed to by data which is of size size bytes...
Definition: Stream.cpp:422
boost::iostreams::stream< cinder_stream_sink > cinder_ostream
Definition: Stream.h:382
~IStreamStateRestore()
Definition: Stream.h:313
size_t readDataImpl(void *dest, size_t maxSize)
Definition: Stream.cpp:189
bool mDeleteOnDestroy
Definition: Stream.h:79
virtual ~IoStream()
Definition: Stream.h:148
off_t mBufferOffset
Definition: Stream.h:244
IoStreamFileRef readWriteFileStream(const fs::path &path)
Opens a path for read-write access as a stream.
Definition: Stream.cpp:563
virtual void seekAbsolute(off_t absoluteOffset)
Sets the current position of the stream to byte absoluteOffset. A negative offset is relative to the ...
Definition: Stream.cpp:500
IoStreamFile(FILE *aFile, bool aOwnsFile=true, int32_t aDefaultBufferSize=2048)
Definition: Stream.cpp:316
static OStreamFileRef create(FILE *file, bool ownsFile=true)
Creates a new OStreamFileRef from a C-style file pointer FILE as returned by fopen(). If ownsFile the returned stream will destroy the stream upon its own destruction.
Definition: Stream.cpp:266
boost::iostreams::source_tag category
Definition: Stream.h:347
size_t mBufferSize
Definition: Stream.h:180
boost::iostreams::seekable_device_tag category
Definition: Stream.h:387
IStreamFileRef loadFileStream(const fs::path &path)
Opens the file lcoated at path for read access as a stream.
Definition: Stream.cpp:528
std::shared_ptr< IStreamCinder > IStreamRef
Definition: Stream.h:142
Endianness
Definition: Stream.h:44
off_t size() const
Definition: Stream.cpp:359
virtual ~StreamBase()
Definition: Stream.h:42
StreamBase()
Definition: Stream.h:76
virtual ~IStreamCinder()
Definition: Stream.h:111
virtual void seekRelative(off_t relativeOffset)=0
Moves the current position of the stream by relativeOffset bytes.
std::shared_ptr< class IoStreamFile > IoStreamFileRef
Definition: Stream.h:214
virtual off_t size() const =0
virtual off_t tell() const
Returns the current position of the stream measured in bytes **/.
Definition: Stream.cpp:284
static IoStreamFileRef create(FILE *file, bool ownsFile=true, int32_t defaultBufferSize=2048)
Creates a new IoStreamFileRef from a C-style file pointer FILE as returned by fopen(). If ownsFile the returned stream will destroy the stream upon its own destruction.
Definition: Stream.cpp:311
std::streamsize read(char *s, std::streamsize n)
Definition: Stream.h:351
bool isEof() const
Definition: Stream.cpp:252
void * mBuffer
Definition: Stream.h:303
const void * getData()
Returns a pointer to the data which the stream wraps.
Definition: Stream.h:271
char char_type
Definition: Stream.h:386
GLuint buffer
Definition: GLee.h:2065
off_t mSize
Definition: Stream.h:184
void readBig(T *t)
Definition: Stream.cpp:85
size_t mDataSize
Definition: Stream.h:279
GLenum GLsizei n
Definition: GLee.h:5780
virtual bool isEof() const =0
void seekAbsolute(off_t absoluteOffset)
Sets the current position of the stream to byte absoluteOffset. A negative offset is relative to the ...
Definition: Stream.cpp:452
void setDeleteOnDestroy(bool enable=true)
Sets whether the Stream has been requested to destroy its source upon its own destruction. For example, IStreamFile will delete its source file. Ignored in some types of streams. Defaults to false.
Definition: Stream.h:64
FILE * getFILE()
Definition: Stream.h:231
bool mSizeCached
Definition: Stream.h:185
off_t mSize
Definition: Stream.h:246
Buffer loadStreamBuffer(IStreamRef is)
Loads the contents of a stream into a Buffer.
Definition: Stream.cpp:596
void writeLittle(T t)
Definition: Stream.cpp:55
void seekRelative(off_t relativeOffset)
Moves the current position of the stream by relativeOffset bytes.
Definition: Stream.cpp:461
static OStreamMemRef create(size_t bufferSizeHint=4096)
Definition: Stream.h:288
FILE * mFile
Definition: Stream.h:209
~IoStreamFile()
Definition: Stream.cpp:325
boost::iostreams::stream_offset seek(boost::iostreams::stream_offset off, std::ios_base::seekdir way)
Definition: Stream.h:402
virtual void seekRelative(off_t relativeOffset)
Moves the current position of the stream by relativeOffset bytes.
Definition: Stream.cpp:297
virtual void IORead(void *t, size_t size)
Definition: Stream.cpp:478
FILE * getFILE()
Definition: Stream.h:201
off_t size() const
Definition: Stream.cpp:239
char char_type
Definition: Stream.h:346
std::streamsize read(char *s, std::streamsize n)
Definition: Stream.h:391
GLfloat GLfloat p
Definition: GLee.h:8473
std::shared_ptr< class IStreamMem > IStreamMemRef
Definition: Stream.h:251
void readFixedString(char *t, size_t maxSize, bool nullTerminate)
Definition: Stream.cpp:108
void readData(void *dest, size_t size)
Definition: Stream.cpp:145
bool isEof() const
Returns whether the stream is currently pointed at the end of the file.
Definition: Stream.cpp:473
FILE * getFILE()
Definition: Stream.h:170
virtual void IOWrite(const void *t, size_t size)
Definition: Stream.cpp:413
const uint8_t * mData
Definition: Stream.h:278
size_t readDataAvailable(void *dest, size_t maxSize)
Definition: Stream.cpp:437
~IStreamMem()
Definition: Stream.cpp:433
IStreamRef mStream
Definition: Stream.h:360
~OStreamFile()
Definition: Stream.cpp:276
void * getBuffer()
Definition: Stream.h:296
void setFileName(const fs::path &aFileName)
Sets the file name of the path from which a Stream originated when relevant. Empty string when undefi...
Definition: Stream.h:59
boost::iostreams::stream< cinder_stream_bidirectional_device > cinder_iostream
Definition: Stream.h:420
std::shared_ptr< class OStreamMem > OStreamMemRef
Definition: Stream.h:284
IoStreamRef mStream
Definition: Stream.h:417
off_t mBufferOffset
Definition: Stream.h:182
std::shared_ptr< class OStreamFile > OStreamFileRef
Definition: Stream.h:189
virtual void IORead(void *t, size_t size)
Definition: Stream.cpp:377
void write(T t)
Definition: Stream.h:89
bool mSizeCached
Definition: Stream.h:247
size_t readDataImpl(void *dest, size_t maxSize)
Definition: Stream.cpp:384
bool getDeleteOnDestroy() const
Returns whether the Stream has been requested to destroy its source upon its own destruction. For example, IStreamFile will delete its source file. Ignored in some types of streams. Defaults to false.
Definition: Stream.h:62
OStreamRef mStream
Definition: Stream.h:379
boost::iostreams::stream< cinder_stream_source > cinder_istream
Definition: Stream.h:363
size_t mOffset
Definition: Stream.h:280
Definition: Exception.h:32
const fs::path & getFileName() const
Returns the file name of the path from which a Stream originated when relevant. Empty string when und...
Definition: Stream.h:57
void writeEndian(T t, uint8_t endian)
Definition: Stream.h:91
IoStream()
Definition: Stream.h:147
void writeBig(T t)
Definition: Stream.cpp:44
virtual void seekRelative(off_t relativeOffset)
Moves the current position of the stream by relativeOffset bytes.
Definition: Stream.cpp:510
OStreamFile(FILE *aFile, bool aOwnsFile=true)
Definition: Stream.cpp:271
GLdouble GLdouble t
Definition: GLee.h:1426
GLdouble s
Definition: GLee.h:1378
BufferT< float > Buffer
Definition: Buffer.h:285
virtual void IORead(void *t, size_t size)
Definition: Stream.cpp:257
off_t size() const
Returns the total length of stream in bytes.
Definition: Stream.h:265
void loadStreamMemory(IStreamRef is, std::shared_ptr< uint8_t > *resultData, size_t *resultDataSize)
Loads the contents of a stream into a contiguous block of memory, pointed to by resultData. The size of this block is stored in resultDataSize.
Definition: Stream.cpp:579
bool mOwnsFile
Definition: Stream.h:179
virtual void IOWrite(const void *t, size_t size)=0
int32_t mDefaultBufferSize
Definition: Stream.h:242
virtual void seekAbsolute(off_t absoluteOffset)=0
Sets the current position of the stream to byte absoluteOffset. A negative offset is relative to the ...
cinder_stream_bidirectional_device(cinder::IoStreamRef aStream)
Definition: Stream.h:389
bool mOwnsFile
Definition: Stream.h:241
GLsizeiptr size
Definition: GLee.h:2089
virtual off_t tell() const =0
Returns the current position of the stream measured in bytes **/.
size_t mDefaultBufferSize
Definition: Stream.h:180
OStreamFileRef writeFileStream(const fs::path &path, bool createParents=true)
Opens the file located at path for write access as a stream, and creates it if it does not exist...
Definition: Stream.cpp:544
virtual void IORead(void *t, size_t size)=0
void readLittle(T *t)
Definition: Stream.cpp:96
off_t tell() const
Returns the current offset into the stream in bytes.
Definition: Stream.cpp:468