mirror of
https://github.com/libSDL2pp/libSDL2pp.git
synced 2025-08-03 10:55:57 -04:00

Streams do not generally work well with RWops because * streams have separate read and write pointers * ostream doesn't allow you to determine how many bytes were actually written * istream and ostream have separate set of functions Try my best to support streams in RWops though, engaging some template magic: * provide separate template implementations of all operations which depend on whether stream is an istream or ostream. This allows to e.g. return 0 immediately for an attempt to write() to istream. * disallow StreamRWops for classes which are both istream and ostream to not run into ambiguity of separate read/write pointers * for read failure, but partially read object back to the stream to not lose data for following read (not sure that e.g. fread behaves so though; I'll anyway expect user to Seek() after read or write failure) * for write failure, there's no way to avoid leaking partial data to the stream In general, it is best to use this container as read-only. Also add tests for StreamRWops