int MemoryStream::Read(void* dest, unsigned int length) { if (length + Pos > size) { return GEM_ERROR; } ieByte* p = ( ieByte* ) ptr + Pos; memcpy( dest, p, length ); if (Encrypted) { ReadDecrypted( dest, length ); } Pos += length; return GEM_OK; }
int MemoryStream::Read(void* dest, unsigned int length) { //we don't allow partial reads anyway, so it isn't a problem that //i don't adjust length here (partial reads are evil) if (Pos+length>size ) { return GEM_ERROR; } memcpy(dest, data + Pos + (Encrypted ? 2 : 0), length); if (Encrypted) { ReadDecrypted( dest, length ); } Pos += length; return length; }
int CachedFileStream::Read(void* dest, unsigned int length) { //we don't allow partial reads anyway, so it isn't a problem that //i don't adjust length here (partial reads are evil) if (Pos+length>size ) { return GEM_ERROR; } unsigned int c = (unsigned int) _fread( dest, 1, length, str ); if (c != length) { return GEM_ERROR; } if (Encrypted) { ReadDecrypted( dest, c ); } Pos += c; return c; }
int SlicedStream::Read(void* dest, unsigned int length) { //we don't allow partial reads anyway, so it isn't a problem that //i don't adjust length here (partial reads are evil) if (Pos+length>size ) { return GEM_ERROR; } //str->Seek(startpos + Pos + (Encrypted ? 2 : 0), GEM_STREAM_START); unsigned int c = (unsigned int) str->Read(dest, length); if (c != length) { return GEM_ERROR; } if (Encrypted) { ReadDecrypted( dest, c ); } Pos += c; return c; }
int FileStream::Read(void* dest, unsigned int length) { if (!opened) { return GEM_ERROR; } //we don't allow partial reads anyway, so it isn't a problem that //i don't adjust length here (partial reads are evil) if (Pos+length>size ) { return GEM_ERROR; } size_t c = str->Read(dest, length); if (c != length) { return GEM_ERROR; } if (Encrypted) { ReadDecrypted( dest, c ); } Pos += c; return c; }