1
| | #include <iostream>
#include <vector>
using namespace std;
typedef std::vector<unsigned char> ByteStream;
struct ByteStreamHandle
{
ByteStreamHandle(const ByteStream& inStream)
: stream(inStream),
position(0)
{
}
const ByteStream& stream;
long position;
};
unsigned int streamRead(void* buffer, unsigned int size, unsigned int count, void* handle)
{
ByteStreamHandle* byteStream = (ByteStreamHandle*)handle;
const unsigned char* rawStream = &byteStream->stream[0];
long begin = byteStream->position;
long end = min(static_cast<long>(byteStream->stream.size()), static_cast<long>(begin + (size*count)));
copy(rawStream+begin, rawStream+end, (char*)buffer);
|