1#ifndef SDL3PP_IOSTREAM_H_
2#define SDL3PP_IOSTREAM_H_
4#include <SDL3/SDL_iostream.h>
5#include "SDL3pp_properties.h"
6#include "SDL3pp_stdinc.h"
48 SDL_IO_STATUS_NOT_READY;
51 SDL_IO_STATUS_READONLY;
54 SDL_IO_STATUS_WRITEONLY;
109 constexpr IOStream(std::nullptr_t =
nullptr) noexcept
110 : m_resource(
nullptr)
122 : m_resource(resource)
386 std::swap(m_resource, other.m_resource);
402 m_resource =
nullptr;
410 constexpr explicit operator bool() const noexcept {
return !!m_resource; }
553 std::string
Read(
size_t size = -1)
556 auto curSize = SDL_GetIOSize(
get());
557 if ((curSize < 0 || pos < 0)) {
558 if (size ==
size_t(-1))
return {};
559 }
else if (curSize - pos <= 0) {
561 }
else if (curSize - pos < size) {
562 size = curSize - pos;
564 std::string result(size, 0);
565 auto actualSize =
Read(result);
566 if (actualSize < size) result.resize(actualSize);
639 size_t print(std::string_view fmt,
auto... args)
641 return Write(std::vformat(fmt, std::make_format_args(args...)));
651 size_t println(std::string_view fmt,
auto... args)
654 std::vformat(fmt, std::make_format_args(args...)) +
"\n";
655 return Write(result);
678 size_t printf(SDL_PRINTF_FORMAT_STRING
const char* fmt, ...)
709 size_t vprintf(SDL_PRINTF_FORMAT_STRING
const char* fmt, va_list ap);
768 auto data =
static_cast<T*
>(SDL_LoadFile_IO(
get(), &datasize,
false));
1090 if (
Uint8 value; SDL_ReadU8(
get(), &value))
return value;
1110 if (
Sint8 value; SDL_ReadS8(
get(), &value))
return value;
1134 if (
Uint16 value; SDL_ReadU16LE(
get(), &value))
return value;
1158 if (
Sint16 value; SDL_ReadS16LE(
get(), &value))
return value;
1182 if (
Uint16 value; SDL_ReadU16BE(
get(), &value))
return value;
1206 if (
Sint16 value; SDL_ReadS16BE(
get(), &value))
return value;
1230 if (
Uint32 value; SDL_ReadU32LE(
get(), &value))
return value;
1254 if (
Sint32 value; SDL_ReadS32LE(
get(), &value))
return value;
1278 if (
Uint32 value; SDL_ReadU32BE(
get(), &value))
return value;
1302 if (
Sint32 value; SDL_ReadS32BE(
get(), &value))
return value;
1326 if (
Uint64 value; SDL_ReadU64LE(
get(), &value))
return value;
1350 if (
Sint64 value; SDL_ReadS64LE(
get(), &value))
return value;
1374 if (
Uint64 value; SDL_ReadU64BE(
get(), &value))
return value;
1398 if (
Sint64 value; SDL_ReadS64BE(
get(), &value))
return value;
1776 return IOStream(SDL_IOFromFile(file, mode));
1784namespace prop::IOStream {
1786constexpr auto WINDOWS_HANDLE_POINTER =
1787 SDL_PROP_IOSTREAM_WINDOWS_HANDLE_POINTER;
1789constexpr auto STDIO_FILE_POINTER = SDL_PROP_IOSTREAM_STDIO_FILE_POINTER;
1791constexpr auto FILE_DESCRIPTOR_NUMBER =
1792 SDL_PROP_IOSTREAM_FILE_DESCRIPTOR_NUMBER;
1794constexpr auto ANDROID_AASSET_POINTER =
1795 SDL_PROP_IOSTREAM_ANDROID_AASSET_POINTER;
1797constexpr auto MEMORY_POINTER = SDL_PROP_IOSTREAM_MEMORY_POINTER;
1799constexpr auto MEMORY_SIZE_NUMBER = SDL_PROP_IOSTREAM_MEMORY_SIZE_NUMBER;
1801#if SDL_VERSION_ATLEAST(3, 4, 0)
1803constexpr auto MEMORY_FREE_FUNC_POINTER =
1804 SDL_PROP_IOSTREAM_MEMORY_FREE_FUNC_POINTER;
1808constexpr auto DYNAMIC_MEMORY_POINTER =
1809 SDL_PROP_IOSTREAM_DYNAMIC_MEMORY_POINTER;
1811constexpr auto DYNAMIC_CHUNKSIZE_NUMBER =
1812 SDL_PROP_IOSTREAM_DYNAMIC_CHUNKSIZE_NUMBER;
2036 return {
CheckError(SDL_GetIOProperties(context))};
2064 return SDL_GetIOStatus(context);
2118 return SDL_SeekIO(context, offset, whence);
2250 SDL_PRINTF_FORMAT_STRING
const char* fmt,
2257 result = SDL_IOvprintf(context, fmt, ap);
2282 SDL_PRINTF_FORMAT_STRING
const char* fmt,
2285 return SDL_IOvprintf(context, fmt, ap);
2339 size_t datasize = 0;
2340 auto data =
static_cast<char*
>(SDL_LoadFile_IO(src, &datasize, closeio));
2370 size_t datasize = 0;
2371 auto data =
static_cast<T*
>(SDL_LoadFile(file, &datasize));
2395 size_t datasize = 0;
2396 auto data =
static_cast<char*
>(SDL_LoadFile(file, &datasize));
The read/write operation structure.
Definition: SDL3pp_iostream.h:104
Sint8 ReadS8()
Use this function to read a signed byte from an IOStream.
std::optional< Sint8 > TryReadS8()
Use this function to read a byte from an IOStreamRef.
Definition: SDL3pp_iostream.h:1108
std::optional< Sint16 > TryReadS16LE()
Use this function to read 16 bits of little-endian data from an IOStreamRef and return in native form...
Definition: SDL3pp_iostream.h:1156
constexpr IOStream(const IOStream &other) noexcept=default
Copy constructor.
std::optional< Uint64 > TryReadU64BE()
Use this function to read 64 bits of big-endian data from an IOStreamRef and return in native format.
Definition: SDL3pp_iostream.h:1372
constexpr IOStreamRaw release() noexcept
Retrieves underlying IOStreamRaw and clear this.
Definition: SDL3pp_iostream.h:399
std::optional< Uint16 > TryReadU16BE()
Use this function to read 16 bits of big-endian data from an IOStreamRef and return in native format.
Definition: SDL3pp_iostream.h:1180
constexpr IOStream(std::nullptr_t=nullptr) noexcept
Default ctor.
Definition: SDL3pp_iostream.h:109
~IOStream()
Destructor.
Definition: SDL3pp_iostream.h:381
std::optional< Sint32 > TryReadS32LE()
Use this function to read 32 bits of little-endian data from an IOStreamRef and return in native form...
Definition: SDL3pp_iostream.h:1252
std::optional< Uint16 > TryReadU16LE()
Use this function to read 16 bits of little-endian data from an IOStreamRef and return in native form...
Definition: SDL3pp_iostream.h:1132
constexpr IOStreamRaw get() const noexcept
Retrieves underlying IOStreamRaw.
Definition: SDL3pp_iostream.h:396
OwnArray< T > LoadFileAs()
Load all the data from an SDL data stream.
Definition: SDL3pp_iostream.h:765
std::optional< Sint16 > TryReadS16BE()
Use this function to read 16 bits of big-endian data from an IOStreamRef and return in native format.
Definition: SDL3pp_iostream.h:1204
size_t printf(SDL_PRINTF_FORMAT_STRING const char *fmt,...)
Print to an IOStream data stream.
Definition: SDL3pp_iostream.h:678
constexpr IOStream & operator=(const IOStream &other) noexcept=default
Assignment operator.
Uint8 ReadU8()
Use this function to read a byte from an IOStream.
std::optional< Uint64 > TryReadU64LE()
Use this function to read 64 bits of little-endian data from an IOStreamRef and return in native form...
Definition: SDL3pp_iostream.h:1324
constexpr IOStream(IOStream &&other) noexcept
Move constructor.
Definition: SDL3pp_iostream.h:132
size_t print(std::string_view fmt, auto... args)
Prints formatted string.
Definition: SDL3pp_iostream.h:639
std::optional< Uint32 > TryReadU32LE()
Use this function to read 32 bits of little-endian data from an IOStreamRef and return in native form...
Definition: SDL3pp_iostream.h:1228
std::optional< Uint8 > TryReadU8()
Use this function to read a byte from an IOStreamRef.
Definition: SDL3pp_iostream.h:1088
constexpr IOStream & operator=(IOStream &&other) noexcept
Assignment operator.
Definition: SDL3pp_iostream.h:384
std::optional< Uint32 > TryReadU32BE()
Use this function to read 32 bits of big-endian data from an IOStreamRef and return in native format.
Definition: SDL3pp_iostream.h:1276
std::optional< Sint32 > TryReadS32BE()
Use this function to read 32 bits of big-endian data from an IOStreamRef and return in native format.
Definition: SDL3pp_iostream.h:1300
std::optional< Sint64 > TryReadS64BE()
Use this function to read 64 bits of big-endian data from an IOStreamRef and return in native format.
Definition: SDL3pp_iostream.h:1396
constexpr IOStream(const IOStreamRaw resource) noexcept
Constructs from IOStreamRef.
Definition: SDL3pp_iostream.h:121
size_t println(std::string_view fmt, auto... args)
Prints formatted string.
Definition: SDL3pp_iostream.h:651
constexpr auto operator<=>(const IOStream &other) const noexcept=default
Comparison.
std::optional< Sint64 > TryReadS64LE()
Use this function to read 64 bits of little-endian data from an IOStreamRef and return in native form...
Definition: SDL3pp_iostream.h:1348
std::string Read(size_t size=-1)
Read from a data source.
Definition: SDL3pp_iostream.h:553
Base class for SDL memory allocated array wrap.
Definition: SDL3pp_ownPtr.h:44
Source byte stream.
Definition: SDL3pp_strings.h:240
constexpr size_t size_bytes() const
Retrieves contained size in bytes.
Definition: SDL3pp_strings.h:304
constexpr const char * data() const
Retrieves contained data.
Definition: SDL3pp_strings.h:307
Helpers to use C++ strings parameters.
Definition: SDL3pp_strings.h:43
Target byte stream.
Definition: SDL3pp_strings.h:326
constexpr char * data() const
Retrieves contained data.
Definition: SDL3pp_strings.h:412
constexpr size_t size_bytes() const
Retrieves contained size in bytes.
Definition: SDL3pp_strings.h:409
constexpr void CheckError(bool result)
Check and throw if returned value from SDL is an error.
Definition: SDL3pp_error.h:197
void WriteS16BE(IOStreamRef dst, Sint16 value)
Use this function to write 16 bits in native format to an IOStream as big-endian data.
Definition: SDL3pp_iostream.h:2965
Sint64 GetSize() const
Use this function to get the size of the data stream in an IOStream.
Definition: SDL3pp_iostream.h:2088
IOStream IOFromMem(TargetBytes mem)
Use this function to prepare a read-write memory buffer for use with IOStream.
Definition: SDL3pp_iostream.h:1859
size_t ReadIO(IOStreamRef context, TargetBytes buf)
Read from a data source.
Definition: SDL3pp_iostream.h:2175
void FlushIO(IOStreamRef context)
Flush any buffered data in the stream.
Definition: SDL3pp_iostream.h:2311
void WriteS64BE(IOStreamRef dst, Sint64 value)
Use this function to write 64 bits in native format to an IOStream as big-endian data.
Definition: SDL3pp_iostream.h:3165
void WriteU32LE(Uint32 value)
Use this function to write 32 bits in native format to an IOStream as little-endian data.
Definition: SDL3pp_iostream.h:2995
void WriteS32BE(Sint32 value)
Use this function to write 32 bits in native format to an IOStream as big-endian data.
Definition: SDL3pp_iostream.h:3070
void WriteS32LE(Sint32 value)
Use this function to write 32 bits in native format to an IOStream as little-endian data.
Definition: SDL3pp_iostream.h:3020
StringResult LoadFile(StringParam file)
Load all the data from a file path.
Definition: SDL3pp_iostream.h:2393
void WriteU64LE(IOStreamRef dst, Uint64 value)
Use this function to write 64 bits in native format to an IOStream as little-endian data.
Definition: SDL3pp_iostream.h:3090
void WriteU64BE(Uint64 value)
Use this function to write 64 bits in native format to an IOStream as big-endian data.
Definition: SDL3pp_iostream.h:3145
void WriteU64BE(IOStreamRef dst, Uint64 value)
Use this function to write 64 bits in native format to an IOStream as big-endian data.
Definition: SDL3pp_iostream.h:3140
IOStream OpenIO(const IOStreamInterface &iface, void *userdata)
Create a custom IOStream.
Definition: SDL3pp_iostream.h:1980
PropertiesRef GetIOProperties(IOStreamRef context)
Get the properties associated with an IOStream.
Definition: SDL3pp_iostream.h:2034
Uint16 ReadU16BE()
Use this function to read 16 bits of big-endian data from an IOStream and return in native format.
Definition: SDL3pp_iostream.h:2576
SDL_IOStream * IOStreamRaw
Alias to raw representation for IOStream.
Definition: SDL3pp_iostream.h:27
void WriteU32BE(IOStreamRef dst, Uint32 value)
Use this function to write 32 bits in native format to an IOStream as big-endian data.
Definition: SDL3pp_iostream.h:3040
void SaveFile(SourceBytes data)
Save all the data into an SDL data stream.
Definition: SDL3pp_iostream.h:2421
size_t WriteIO(IOStreamRef context, SourceBytes buf)
Write to an IOStream data stream.
Definition: SDL3pp_iostream.h:2218
void WriteU8(IOStreamRef dst, Uint8 value)
Use this function to write a byte to an IOStream.
Definition: SDL3pp_iostream.h:2850
void WriteU32BE(Uint32 value)
Use this function to write 32 bits in native format to an IOStream as big-endian data.
Definition: SDL3pp_iostream.h:3045
Sint64 TellIO(IOStreamRef context)
Determine the current read/write offset in an IOStream data stream.
Definition: SDL3pp_iostream.h:2144
Sint32 ReadS32BE()
Use this function to read 32 bits of big-endian data from an IOStream and return in native format.
Definition: SDL3pp_iostream.h:2721
void SaveFile_IO(IOStreamRef src, SourceBytes data, bool closeio=true)
Save all the data into an SDL data stream.
Definition: SDL3pp_iostream.h:2416
Sint64 ReadS64BE(IOStreamRef src)
Use this function to read 64 bits of big-endian data from an IOStream and return in native format.
Definition: SDL3pp_iostream.h:2830
void WriteS16LE(Sint16 value)
Use this function to write 16 bits in native format to an IOStream as little-endian data.
Definition: SDL3pp_iostream.h:2920
void WriteS8(Sint8 value)
Use this function to write a signed byte to an IOStream.
Definition: SDL3pp_iostream.h:2873
void WriteS32LE(IOStreamRef dst, Sint32 value)
Use this function to write 32 bits in native format to an IOStream as little-endian data.
Definition: SDL3pp_iostream.h:3015
size_t IOprintf(IOStreamRef context, SDL_PRINTF_FORMAT_STRING const char *fmt,...)
Print to an IOStream data stream.
Definition: SDL3pp_iostream.h:2249
Uint32 ReadU32BE(IOStreamRef src)
Use this function to read 32 bits of big-endian data from an IOStream and return in native format.
Definition: SDL3pp_iostream.h:2685
void Flush()
Flush any buffered data in the stream.
Definition: SDL3pp_iostream.h:2313
IOStream IOFromConstMem(SourceBytes mem)
Use this function to prepare a read-only memory buffer for use with IOStream.
Definition: SDL3pp_iostream.h:1912
SDL_IOWhence IOWhence
Possible whence values for IOStream seeking.
Definition: SDL3pp_iostream.h:64
Sint32 ReadS32LE(IOStreamRef src)
Use this function to read 32 bits of little-endian data from an IOStream and return in native format.
Definition: SDL3pp_iostream.h:2656
Sint32 ReadS32BE(IOStreamRef src)
Use this function to read 32 bits of big-endian data from an IOStream and return in native format.
Definition: SDL3pp_iostream.h:2714
size_t vprintf(SDL_PRINTF_FORMAT_STRING const char *fmt, va_list ap)
Print to an IOStream data stream.
Definition: SDL3pp_iostream.h:2288
Uint16 ReadU16LE()
Use this function to read 16 bits of little-endian data from an IOStream and return in native format.
Definition: SDL3pp_iostream.h:2518
void WriteS32BE(IOStreamRef dst, Sint32 value)
Use this function to write 32 bits in native format to an IOStream as big-endian data.
Definition: SDL3pp_iostream.h:3065
Uint32 ReadU32LE()
Use this function to read 32 bits of little-endian data from an IOStream and return in native format.
Definition: SDL3pp_iostream.h:2634
IOStream IOFromDynamicMem()
Use this function to create an IOStream that is backed by dynamically allocated memory.
Definition: SDL3pp_iostream.h:1949
void Close()
Close and free an allocated IOStream structure.
Definition: SDL3pp_iostream.h:2021
OwnArray< T > LoadFileAs(StringParam file)
Load all the data from a file path.
Definition: SDL3pp_iostream.h:2368
void WriteS64BE(Sint64 value)
Use this function to write 64 bits in native format to an IOStream as big-endian data.
Definition: SDL3pp_iostream.h:3170
Uint8 ReadU8(IOStreamRef src)
Use this function to read a byte from an IOStream.
Definition: SDL3pp_iostream.h:2461
constexpr IOStatus IO_STATUS_ERROR
Read or write I/O error.
Definition: SDL3pp_iostream.h:42
Uint16 ReadU16LE(IOStreamRef src)
Use this function to read 16 bits of little-endian data from an IOStream and return in native format.
Definition: SDL3pp_iostream.h:2511
void WriteS16BE(Sint16 value)
Use this function to write 16 bits in native format to an IOStream as big-endian data.
Definition: SDL3pp_iostream.h:2970
static IOStream Open(const IOStreamInterface &iface, void *userdata)
Create a custom IOStream.
Definition: SDL3pp_iostream.h:1985
void WriteS64LE(IOStreamRef dst, Sint64 value)
Use this function to write 64 bits in native format to an IOStream as little-endian data.
Definition: SDL3pp_iostream.h:3115
Uint32 ReadU32BE()
Use this function to read 32 bits of big-endian data from an IOStream and return in native format.
Definition: SDL3pp_iostream.h:2692
IOStream IOFromFile(StringParam file, StringParam mode)
Use this function to create a new IOStream structure for reading from and/or writing to a named file.
Definition: SDL3pp_iostream.h:1774
constexpr IOStatus IO_STATUS_EOF
End of file.
Definition: SDL3pp_iostream.h:45
void WriteS16LE(IOStreamRef dst, Sint16 value)
Use this function to write 16 bits in native format to an IOStream as little-endian data.
Definition: SDL3pp_iostream.h:2915
IOStatus GetIOStatus(IOStreamRef context)
Query the stream status of an IOStream.
Definition: SDL3pp_iostream.h:2062
Sint64 GetIOSize(IOStreamRef context)
Use this function to get the size of the data stream in an IOStream.
Definition: SDL3pp_iostream.h:2083
Sint64 Seek(Sint64 offset, IOWhence whence)
Seek within an IOStream data stream.
Definition: SDL3pp_iostream.h:2121
Uint32 ReadU32LE(IOStreamRef src)
Use this function to read 32 bits of little-endian data from an IOStream and return in native format.
Definition: SDL3pp_iostream.h:2627
size_t Write(SourceBytes buf)
Write to an IOStream data stream.
Definition: SDL3pp_iostream.h:2223
void WriteS8(IOStreamRef dst, Sint8 value)
Use this function to write a signed byte to an IOStream.
Definition: SDL3pp_iostream.h:2868
Sint64 Tell() const
Determine the current read/write offset in an IOStream data stream.
Definition: SDL3pp_iostream.h:2146
Sint64 ReadS64LE(IOStreamRef src)
Use this function to read 64 bits of little-endian data from an IOStream and return in native format.
Definition: SDL3pp_iostream.h:2772
size_t IOvprintf(IOStreamRef context, SDL_PRINTF_FORMAT_STRING const char *fmt, va_list ap)
Print to an IOStream data stream.
Definition: SDL3pp_iostream.h:2281
void WriteU16BE(Uint16 value)
Use this function to write 16 bits in native format to an IOStream as big-endian data.
Definition: SDL3pp_iostream.h:2945
Sint32 ReadS32LE()
Use this function to read 32 bits of little-endian data from an IOStream and return in native format.
Definition: SDL3pp_iostream.h:2663
Sint16 ReadS16BE()
Use this function to read 16 bits of big-endian data from an IOStream and return in native format.
Definition: SDL3pp_iostream.h:2605
constexpr IOStatus IO_STATUS_WRITEONLY
Tried to read a write-only buffer.
Definition: SDL3pp_iostream.h:53
Uint16 ReadU16BE(IOStreamRef src)
Use this function to read 16 bits of big-endian data from an IOStream and return in native format.
Definition: SDL3pp_iostream.h:2569
Sint8 ReadS8(IOStreamRef src)
Use this function to read a signed byte from an IOStream.
Definition: SDL3pp_iostream.h:2484
Sint16 ReadS16BE(IOStreamRef src)
Use this function to read 16 bits of big-endian data from an IOStream and return in native format.
Definition: SDL3pp_iostream.h:2598
void WriteU16LE(IOStreamRef dst, Uint16 value)
Use this function to write 16 bits in native format to an IOStream as little-endian data.
Definition: SDL3pp_iostream.h:2890
Sint64 SeekIO(IOStreamRef context, Sint64 offset, IOWhence whence)
Seek within an IOStream data stream.
Definition: SDL3pp_iostream.h:2116
Sint64 ReadS64BE()
Use this function to read 64 bits of big-endian data from an IOStream and return in native format.
Definition: SDL3pp_iostream.h:2837
static IOStream FromDynamicMem()
Use this function to create an IOStream that is backed by dynamically allocated memory.
Definition: SDL3pp_iostream.h:1951
void WriteU32LE(IOStreamRef dst, Uint32 value)
Use this function to write 32 bits in native format to an IOStream as little-endian data.
Definition: SDL3pp_iostream.h:2990
static IOStream FromConstMem(SourceBytes mem)
Use this function to prepare a read-only memory buffer for use with IOStream.
Definition: SDL3pp_iostream.h:1917
StringResult LoadFile()
Load all the data from an SDL data stream.
Definition: SDL3pp_iostream.h:2344
void WriteU16LE(Uint16 value)
Use this function to write 16 bits in native format to an IOStream as little-endian data.
Definition: SDL3pp_iostream.h:2895
Uint64 ReadU64BE(IOStreamRef src)
Use this function to read 64 bits of big-endian data from an IOStream and return in native format.
Definition: SDL3pp_iostream.h:2801
void SaveFile(StringParam file, SourceBytes data)
Save all the data into a file path.
Definition: SDL3pp_iostream.h:2440
Uint64 ReadU64LE()
Use this function to read 64 bits of little-endian data from an IOStream and return in native format.
Definition: SDL3pp_iostream.h:2750
Sint16 ReadS16LE(IOStreamRef src)
Use this function to read 16 bits of little-endian data from an IOStream and return in native format.
Definition: SDL3pp_iostream.h:2540
constexpr IOWhence IO_SEEK_CUR
Seek relative to current read point.
Definition: SDL3pp_iostream.h:69
SDL_IOStreamInterface IOStreamInterface
The function pointers that drive an IOStream.
Definition: SDL3pp_iostream.h:89
void WriteU8(Uint8 value)
Use this function to write a byte to an IOStream.
Definition: SDL3pp_iostream.h:2855
StringResult LoadFile_IO(IOStreamRef src, bool closeio=true)
Load all the data from an SDL data stream.
Definition: SDL3pp_iostream.h:2337
Uint64 ReadU64BE()
Use this function to read 64 bits of big-endian data from an IOStream and return in native format.
Definition: SDL3pp_iostream.h:2808
SDL_IOStatus IOStatus
IOStream status, set by a read or write operation.
Definition: SDL3pp_iostream.h:37
Sint64 ReadS64LE()
Use this function to read 64 bits of little-endian data from an IOStream and return in native format.
Definition: SDL3pp_iostream.h:2779
Uint64 ReadU64LE(IOStreamRef src)
Use this function to read 64 bits of little-endian data from an IOStream and return in native format.
Definition: SDL3pp_iostream.h:2743
void WriteU16BE(IOStreamRef dst, Uint16 value)
Use this function to write 16 bits in native format to an IOStream as big-endian data.
Definition: SDL3pp_iostream.h:2940
constexpr IOStatus IO_STATUS_READONLY
Tried to write a read-only buffer.
Definition: SDL3pp_iostream.h:50
void WriteU64LE(Uint64 value)
Use this function to write 64 bits in native format to an IOStream as little-endian data.
Definition: SDL3pp_iostream.h:3095
constexpr IOStatus IO_STATUS_READY
Everything is ready (no errors and not EOF).
Definition: SDL3pp_iostream.h:39
constexpr IOStatus IO_STATUS_NOT_READY
Non blocking I/O, not ready.
Definition: SDL3pp_iostream.h:47
static IOStream FromFile(StringParam file, StringParam mode)
Use this function to create a new IOStream structure for reading from and/or writing to a named file.
Definition: SDL3pp_iostream.h:1779
void CloseIO(IOStreamRaw context)
Close and free an allocated IOStream structure.
Definition: SDL3pp_iostream.h:2019
void WriteS64LE(Sint64 value)
Use this function to write 64 bits in native format to an IOStream as little-endian data.
Definition: SDL3pp_iostream.h:3120
Sint16 ReadS16LE()
Use this function to read 16 bits of little-endian data from an IOStream and return in native format.
Definition: SDL3pp_iostream.h:2547
IOStatus GetStatus() const
Query the stream status of an IOStream.
Definition: SDL3pp_iostream.h:2067
static IOStream FromMem(TargetBytes mem)
Use this function to prepare a read-write memory buffer for use with IOStream.
Definition: SDL3pp_iostream.h:1864
constexpr IOWhence IO_SEEK_SET
Seek from the beginning of data.
Definition: SDL3pp_iostream.h:66
constexpr IOWhence IO_SEEK_END
Seek relative to the end of data.
Definition: SDL3pp_iostream.h:72
PropertiesRef GetProperties() const
Get the properties associated with an IOStream.
Definition: SDL3pp_iostream.h:2039
::Uint32 Uint32
An unsigned 32-bit integer type.
Definition: SDL3pp_stdinc.h:280
::Uint64 Uint64
An unsigned 64-bit integer type.
Definition: SDL3pp_stdinc.h:310
::Uint8 Uint8
An unsigned 8-bit integer type.
Definition: SDL3pp_stdinc.h:228
::Sint8 Sint8
A signed 8-bit integer type.
Definition: SDL3pp_stdinc.h:215
::Sint64 Sint64
A signed 64-bit integer type.
Definition: SDL3pp_stdinc.h:295
::Sint32 Sint32
A signed 32-bit integer type.
Definition: SDL3pp_stdinc.h:267
::Sint16 Sint16
A signed 16-bit integer type.
Definition: SDL3pp_stdinc.h:241
::Uint16 Uint16
An unsigned 16-bit integer type.
Definition: SDL3pp_stdinc.h:254
Main include header for the SDL3pp library.
Reference for IOStream.
Definition: SDL3pp_iostream.h:1631
constexpr IOStreamRef(IOStream &&resource) noexcept
Constructs from IOStream.
Definition: SDL3pp_iostream.h:1665
constexpr IOStreamRef(const IOStreamRef &other) noexcept
Copy constructor.
Definition: SDL3pp_iostream.h:1671
IOStreamRef(IOStreamRaw resource) noexcept
Constructs from raw IOStream.
Definition: SDL3pp_iostream.h:1641
constexpr IOStreamRef(IOStreamRef &&other) noexcept
Move constructor.
Definition: SDL3pp_iostream.h:1677
~IOStreamRef()
Destructor.
Definition: SDL3pp_iostream.h:1683
constexpr IOStreamRef(const IOStream &resource) noexcept
Constructs from IOStream.
Definition: SDL3pp_iostream.h:1653
constexpr IOStreamRef & operator=(const IOStreamRef &other) noexcept=default
Assignment operator.
Reference for Properties.
Definition: SDL3pp_properties.h:691
A simple std::string-like interface for SDL allocated strings.
Definition: SDL3pp_strings.h:153