Public Member Functions | List of all members
cpp3ds::InputStream Class Referenceabstract

Abstract class for custom file input streams. More...

#include <InputStream.hpp>

Inheritance diagram for cpp3ds::InputStream:
cpp3ds::FileInputStream cpp3ds::MemoryInputStream

Public Member Functions

virtual ~InputStream ()
 Virtual destructor. More...
 
virtual Int64 read (void *data, Int64 size)=0
 Read data from the stream. More...
 
virtual Int64 seek (Int64 position)=0
 Change the current reading position. More...
 
virtual Int64 tell ()=0
 Get the current reading position in the stream. More...
 
virtual Int64 getSize ()=0
 Return the size of the stream. More...
 

Detailed Description

Abstract class for custom file input streams.

This class allows users to define their own file input sources from which SFML can load resources.

SFML resource classes like cpp3ds::Texture and cpp3ds::SoundBuffer provide loadFromFile and loadFromMemory functions, which read data from conventional sources. However, if you have data coming from a different source (over a network, embedded, encrypted, compressed, etc) you can derive your own class from cpp3ds::InputStream and load SFML resources with their loadFromStream function.

Usage example:

// custom stream class that reads from inside a zip file
class ZipStream : public cpp3ds::InputStream
{
public :
ZipStream(std::string archive);
bool open(std::string filename);
Int64 read(void* data, Int64 size);
Int64 seek(Int64 position);
Int64 tell();
Int64 getSize();
private :
...
};
// now you can load textures...
ZipStream stream("resources.zip");
stream.open("images/img.png");
texture.loadFromStream(stream);
// musics...
ZipStream stream("resources.zip");
stream.open("musics/msc.ogg");
music.openFromStream(stream);
// etc.

Definition at line 40 of file InputStream.hpp.

Constructor & Destructor Documentation

virtual cpp3ds::InputStream::~InputStream ( )
inlinevirtual

Virtual destructor.

Definition at line 48 of file InputStream.hpp.

Member Function Documentation

virtual Int64 cpp3ds::InputStream::getSize ( )
pure virtual

Return the size of the stream.

Returns
The total number of bytes available in the stream, or -1 on error

Implemented in cpp3ds::FileInputStream, and cpp3ds::MemoryInputStream.

virtual Int64 cpp3ds::InputStream::read ( void *  data,
Int64  size 
)
pure virtual

Read data from the stream.

After reading, the stream's reading position must be advanced by the amount of bytes read.

Parameters
dataBuffer where to copy the read data
sizeDesired number of bytes to read
Returns
The number of bytes actually read, or -1 on error

Implemented in cpp3ds::FileInputStream, and cpp3ds::MemoryInputStream.

virtual Int64 cpp3ds::InputStream::seek ( Int64  position)
pure virtual

Change the current reading position.

Parameters
positionThe position to seek to, from the beginning
Returns
The position actually sought to, or -1 on error

Implemented in cpp3ds::FileInputStream, and cpp3ds::MemoryInputStream.

virtual Int64 cpp3ds::InputStream::tell ( )
pure virtual

Get the current reading position in the stream.

Returns
The current position, or -1 on error.

Implemented in cpp3ds::FileInputStream, and cpp3ds::MemoryInputStream.


The documentation for this class was generated from the following file: