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"
50 constexpr explicit operator bool()
const {
return !!
value; }
75 SDL_IO_STATUS_NOT_READY;
78 SDL_IO_STATUS_READONLY;
81 SDL_IO_STATUS_WRITEONLY;
136 constexpr IOStream(std::nullptr_t =
nullptr) noexcept
149 : m_resource(resource)
413 std::swap(m_resource, other.m_resource);
429 m_resource =
nullptr;
437 constexpr explicit operator bool() const noexcept {
return !!m_resource; }
583 std::string
Read(
size_t size = -1)
586 auto curSize = SDL_GetIOSize(
get());
587 if ((curSize < 0 || pos < 0)) {
588 if (size ==
size_t(-1))
return {};
589 }
else if (curSize - pos <= 0) {
591 }
else if (curSize - pos < size) {
592 size = curSize - pos;
594 std::string result(size, 0);
595 auto actualSize =
Read(result);
596 if (actualSize < size) result.resize(actualSize);
669 size_t print(std::string_view fmt,
auto... args)
671 return Write(std::vformat(fmt, std::make_format_args(args...)));
681 size_t println(std::string_view fmt,
auto... args)
684 std::vformat(fmt, std::make_format_args(args...)) +
"\n";
685 return Write(result);
708 size_t printf(SDL_PRINTF_FORMAT_STRING
const char* fmt, ...)
739 size_t vprintf(SDL_PRINTF_FORMAT_STRING
const char* fmt, va_list ap);
798 auto data =
static_cast<T*
>(SDL_LoadFile_IO(
get(), &datasize,
false));
1120 if (
Uint8 value; SDL_ReadU8(
get(), &value))
return value;
1140 if (
Sint8 value; SDL_ReadS8(
get(), &value))
return value;
1164 if (
Uint16 value; SDL_ReadU16LE(
get(), &value))
return value;
1188 if (
Sint16 value; SDL_ReadS16LE(
get(), &value))
return value;
1212 if (
Uint16 value; SDL_ReadU16BE(
get(), &value))
return value;
1236 if (
Sint16 value; SDL_ReadS16BE(
get(), &value))
return value;
1260 if (
Uint32 value; SDL_ReadU32LE(
get(), &value))
return value;
1284 if (
Sint32 value; SDL_ReadS32LE(
get(), &value))
return value;
1308 if (
Uint32 value; SDL_ReadU32BE(
get(), &value))
return value;
1332 if (
Sint32 value; SDL_ReadS32BE(
get(), &value))
return value;
1356 if (
Uint64 value; SDL_ReadU64LE(
get(), &value))
return value;
1380 if (
Sint64 value; SDL_ReadS64LE(
get(), &value))
return value;
1404 if (
Uint64 value; SDL_ReadU64BE(
get(), &value))
return value;
1428 if (
Sint64 value; SDL_ReadS64BE(
get(), &value))
return value;
1775 return IOStream(SDL_IOFromFile(file, mode));
1783namespace prop::IOStream {
1785constexpr auto WINDOWS_HANDLE_POINTER =
1786 SDL_PROP_IOSTREAM_WINDOWS_HANDLE_POINTER;
1788constexpr auto STDIO_FILE_POINTER = SDL_PROP_IOSTREAM_STDIO_FILE_POINTER;
1790constexpr auto FILE_DESCRIPTOR_NUMBER =
1791 SDL_PROP_IOSTREAM_FILE_DESCRIPTOR_NUMBER;
1793constexpr auto ANDROID_AASSET_POINTER =
1794 SDL_PROP_IOSTREAM_ANDROID_AASSET_POINTER;
1796constexpr auto MEMORY_POINTER = SDL_PROP_IOSTREAM_MEMORY_POINTER;
1798constexpr auto MEMORY_SIZE_NUMBER = SDL_PROP_IOSTREAM_MEMORY_SIZE_NUMBER;
1800#if SDL_VERSION_ATLEAST(3, 4, 0)
1802constexpr auto MEMORY_FREE_FUNC_POINTER =
1803 SDL_PROP_IOSTREAM_MEMORY_FREE_FUNC_POINTER;
1807constexpr auto DYNAMIC_MEMORY_POINTER =
1808 SDL_PROP_IOSTREAM_DYNAMIC_MEMORY_POINTER;
1810constexpr auto DYNAMIC_CHUNKSIZE_NUMBER =
1811 SDL_PROP_IOSTREAM_DYNAMIC_CHUNKSIZE_NUMBER;
2035 return {
CheckError(SDL_GetIOProperties(context))};
2063 return SDL_GetIOStatus(context);
2117 return SDL_SeekIO(context, offset, whence);
2249 SDL_PRINTF_FORMAT_STRING
const char* fmt,
2256 result = SDL_IOvprintf(context, fmt, ap);
2281 SDL_PRINTF_FORMAT_STRING
const char* fmt,
2284 return SDL_IOvprintf(context, fmt, ap);
2338 size_t datasize = 0;
2339 auto data =
static_cast<char*
>(SDL_LoadFile_IO(src, &datasize, closeio));
2363 size_t datasize = 0;
2364 auto data =
static_cast<char*
>(SDL_LoadFile(file, &datasize));
2394 size_t datasize = 0;
2395 auto data =
static_cast<T*
>(SDL_LoadFile(file, &datasize));
The read/write operation structure.
Definition: SDL3pp_iostream.h:131
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:1138
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:1186
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:1402
constexpr IOStreamRaw release() noexcept
Retrieves underlying IOStreamRaw and clear this.
Definition: SDL3pp_iostream.h:426
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:1210
constexpr IOStream(std::nullptr_t=nullptr) noexcept
Default ctor.
Definition: SDL3pp_iostream.h:136
~IOStream()
Destructor.
Definition: SDL3pp_iostream.h:408
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:1282
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:1162
constexpr IOStreamRaw get() const noexcept
Retrieves underlying IOStreamRaw.
Definition: SDL3pp_iostream.h:423
OwnArray< T > LoadFileAs()
Load all the data from an SDL data stream.
Definition: SDL3pp_iostream.h:795
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:1234
size_t printf(SDL_PRINTF_FORMAT_STRING const char *fmt,...)
Print to an IOStream data stream.
Definition: SDL3pp_iostream.h:708
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:1354
constexpr IOStream(IOStream &&other) noexcept
Move constructor.
Definition: SDL3pp_iostream.h:159
size_t print(std::string_view fmt, auto... args)
Prints formatted string.
Definition: SDL3pp_iostream.h:669
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:1258
std::optional< Uint8 > TryReadU8()
Use this function to read a byte from an IOStreamRef.
Definition: SDL3pp_iostream.h:1118
constexpr IOStream & operator=(IOStream &&other) noexcept
Assignment operator.
Definition: SDL3pp_iostream.h:411
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:1306
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:1330
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:1426
constexpr IOStream(const IOStreamRaw resource) noexcept
Constructs from IOStreamParam.
Definition: SDL3pp_iostream.h:148
size_t println(std::string_view fmt, auto... args)
Prints formatted string.
Definition: SDL3pp_iostream.h:681
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:1378
std::string Read(size_t size=-1)
Read from a data source.
Definition: SDL3pp_iostream.h:583
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
Sint64 GetSize() const
Use this function to get the size of the data stream in an IOStream.
Definition: SDL3pp_iostream.h:2087
IOStream IOFromMem(TargetBytes mem)
Use this function to prepare a read-write memory buffer for use with IOStream.
Definition: SDL3pp_iostream.h:1858
size_t IOprintf(IOStreamParam context, SDL_PRINTF_FORMAT_STRING const char *fmt,...)
Print to an IOStream data stream.
Definition: SDL3pp_iostream.h:2248
Uint8 ReadU8(IOStreamParam src)
Use this function to read a byte from an IOStream.
Definition: SDL3pp_iostream.h:2460
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:2994
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:3069
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:3019
void WriteS16BE(IOStreamParam dst, Sint16 value)
Use this function to write 16 bits in native format to an IOStream as big-endian data.
Definition: SDL3pp_iostream.h:2964
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:3144
Sint64 ReadS64BE(IOStreamParam src)
Use this function to read 64 bits of big-endian data from an IOStream and return in native format.
Definition: SDL3pp_iostream.h:2829
IOStream OpenIO(const IOStreamInterface &iface, void *userdata)
Create a custom IOStream.
Definition: SDL3pp_iostream.h:1979
IOStatus GetIOStatus(IOStreamParam context)
Query the stream status of an IOStream.
Definition: SDL3pp_iostream.h:2061
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:2575
SDL_IOStream * IOStreamRaw
Alias to raw representation for IOStream.
Definition: SDL3pp_iostream.h:27
void SaveFile(SourceBytes data)
Save all the data into an SDL data stream.
Definition: SDL3pp_iostream.h:2439
Sint16 ReadS16BE(IOStreamParam src)
Use this function to read 16 bits of big-endian data from an IOStream and return in native format.
Definition: SDL3pp_iostream.h:2597
void WriteS32LE(IOStreamParam dst, Sint32 value)
Use this function to write 32 bits in native format to an IOStream as little-endian data.
Definition: SDL3pp_iostream.h:3014
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:3044
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:2720
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:2919
void WriteS8(Sint8 value)
Use this function to write a signed byte to an IOStream.
Definition: SDL3pp_iostream.h:2872
Uint32 ReadU32LE(IOStreamParam src)
Use this function to read 32 bits of little-endian data from an IOStream and return in native format.
Definition: SDL3pp_iostream.h:2626
size_t ReadIO(IOStreamParam context, TargetBytes buf)
Read from a data source.
Definition: SDL3pp_iostream.h:2174
void Flush()
Flush any buffered data in the stream.
Definition: SDL3pp_iostream.h:2312
void WriteU32LE(IOStreamParam dst, Uint32 value)
Use this function to write 32 bits in native format to an IOStream as little-endian data.
Definition: SDL3pp_iostream.h:2989
IOStream IOFromConstMem(SourceBytes mem)
Use this function to prepare a read-only memory buffer for use with IOStream.
Definition: SDL3pp_iostream.h:1911
SDL_IOWhence IOWhence
Possible whence values for IOStream seeking.
Definition: SDL3pp_iostream.h:91
Sint8 ReadS8(IOStreamParam src)
Use this function to read a signed byte from an IOStream.
Definition: SDL3pp_iostream.h:2483
size_t vprintf(SDL_PRINTF_FORMAT_STRING const char *fmt, va_list ap)
Print to an IOStream data stream.
Definition: SDL3pp_iostream.h:2287
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:2517
Sint16 ReadS16LE(IOStreamParam src)
Use this function to read 16 bits of little-endian data from an IOStream and return in native format.
Definition: SDL3pp_iostream.h:2539
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:2633
IOStream IOFromDynamicMem()
Use this function to create an IOStream that is backed by dynamically allocated memory.
Definition: SDL3pp_iostream.h:1948
void Close()
Close and free an allocated IOStream structure.
Definition: SDL3pp_iostream.h:2020
OwnArray< T > LoadFileAs(StringParam file)
Load all the data from a file path.
Definition: SDL3pp_iostream.h:2392
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:3169
size_t IOvprintf(IOStreamParam context, SDL_PRINTF_FORMAT_STRING const char *fmt, va_list ap)
Print to an IOStream data stream.
Definition: SDL3pp_iostream.h:2280
Sint64 TellIO(IOStreamParam context)
Determine the current read/write offset in an IOStream data stream.
Definition: SDL3pp_iostream.h:2143
Uint64 ReadU64LE(IOStreamParam src)
Use this function to read 64 bits of little-endian data from an IOStream and return in native format.
Definition: SDL3pp_iostream.h:2742
constexpr IOStatus IO_STATUS_ERROR
Read or write I/O error.
Definition: SDL3pp_iostream.h:69
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:2969
static IOStream Open(const IOStreamInterface &iface, void *userdata)
Create a custom IOStream.
Definition: SDL3pp_iostream.h:1984
Sint32 ReadS32LE(IOStreamParam src)
Use this function to read 32 bits of little-endian data from an IOStream and return in native format.
Definition: SDL3pp_iostream.h:2655
Uint32 ReadU32BE(IOStreamParam src)
Use this function to read 32 bits of big-endian data from an IOStream and return in native format.
Definition: SDL3pp_iostream.h:2684
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:2691
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:1773
constexpr IOStatus IO_STATUS_EOF
End of file.
Definition: SDL3pp_iostream.h:72
Sint64 ReadS64LE(IOStreamParam src)
Use this function to read 64 bits of little-endian data from an IOStream and return in native format.
Definition: SDL3pp_iostream.h:2771
Uint16 ReadU16BE(IOStreamParam src)
Use this function to read 16 bits of big-endian data from an IOStream and return in native format.
Definition: SDL3pp_iostream.h:2568
void WriteU8(IOStreamParam dst, Uint8 value)
Use this function to write a byte to an IOStream.
Definition: SDL3pp_iostream.h:2849
Sint64 GetIOSize(IOStreamParam context)
Use this function to get the size of the data stream in an IOStream.
Definition: SDL3pp_iostream.h:2082
void WriteU32BE(IOStreamParam dst, Uint32 value)
Use this function to write 32 bits in native format to an IOStream as big-endian data.
Definition: SDL3pp_iostream.h:3039
Sint64 Seek(Sint64 offset, IOWhence whence)
Seek within an IOStream data stream.
Definition: SDL3pp_iostream.h:2120
void WriteS32BE(IOStreamParam dst, Sint32 value)
Use this function to write 32 bits in native format to an IOStream as big-endian data.
Definition: SDL3pp_iostream.h:3064
Sint64 SeekIO(IOStreamParam context, Sint64 offset, IOWhence whence)
Seek within an IOStream data stream.
Definition: SDL3pp_iostream.h:2115
size_t Write(SourceBytes buf)
Write to an IOStream data stream.
Definition: SDL3pp_iostream.h:2222
void WriteU16LE(IOStreamParam dst, Uint16 value)
Use this function to write 16 bits in native format to an IOStream as little-endian data.
Definition: SDL3pp_iostream.h:2889
Sint64 Tell() const
Determine the current read/write offset in an IOStream data stream.
Definition: SDL3pp_iostream.h:2145
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:2944
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:2662
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:2604
constexpr IOStatus IO_STATUS_WRITEONLY
Tried to read a write-only buffer.
Definition: SDL3pp_iostream.h:80
PropertiesRef GetIOProperties(IOStreamParam context)
Get the properties associated with an IOStream.
Definition: SDL3pp_iostream.h:2033
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:2836
static IOStream FromDynamicMem()
Use this function to create an IOStream that is backed by dynamically allocated memory.
Definition: SDL3pp_iostream.h:1950
static IOStream FromConstMem(SourceBytes mem)
Use this function to prepare a read-only memory buffer for use with IOStream.
Definition: SDL3pp_iostream.h:1916
StringResult LoadFile()
Load all the data from an SDL data stream.
Definition: SDL3pp_iostream.h:2368
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:2894
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:2749
constexpr IOWhence IO_SEEK_CUR
Seek relative to current read point.
Definition: SDL3pp_iostream.h:96
SDL_IOStreamInterface IOStreamInterface
The function pointers that drive an IOStream.
Definition: SDL3pp_iostream.h:116
void WriteU8(Uint8 value)
Use this function to write a byte to an IOStream.
Definition: SDL3pp_iostream.h:2854
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:2807
SDL_IOStatus IOStatus
IOStream status, set by a read or write operation.
Definition: SDL3pp_iostream.h:64
void WriteS8(IOStreamParam dst, Sint8 value)
Use this function to write a signed byte to an IOStream.
Definition: SDL3pp_iostream.h:2867
void WriteS16LE(IOStreamParam dst, Sint16 value)
Use this function to write 16 bits in native format to an IOStream as little-endian data.
Definition: SDL3pp_iostream.h:2914
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:2778
void FlushIO(IOStreamParam context)
Flush any buffered data in the stream.
Definition: SDL3pp_iostream.h:2310
Uint64 ReadU64BE(IOStreamParam src)
Use this function to read 64 bits of big-endian data from an IOStream and return in native format.
Definition: SDL3pp_iostream.h:2800
Sint32 ReadS32BE(IOStreamParam src)
Use this function to read 32 bits of big-endian data from an IOStream and return in native format.
Definition: SDL3pp_iostream.h:2713
void SaveFile(IOStreamParam src, SourceBytes data, bool closeio=false)
Save all the data into an SDL data stream.
Definition: SDL3pp_iostream.h:2415
constexpr IOStatus IO_STATUS_READONLY
Tried to write a read-only buffer.
Definition: SDL3pp_iostream.h:77
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:3094
StringResult LoadFile(IOStreamParam src, bool closeio=true)
Load all the data from an SDL data stream.
Definition: SDL3pp_iostream.h:2336
constexpr IOStatus IO_STATUS_READY
Everything is ready (no errors and not EOF).
Definition: SDL3pp_iostream.h:66
constexpr IOStatus IO_STATUS_NOT_READY
Non blocking I/O, not ready.
Definition: SDL3pp_iostream.h:74
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:1778
void CloseIO(IOStreamRaw context)
Close and free an allocated IOStream structure.
Definition: SDL3pp_iostream.h:2018
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:3119
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:2546
IOStatus GetStatus() const
Query the stream status of an IOStream.
Definition: SDL3pp_iostream.h:2066
void WriteU64BE(IOStreamParam dst, Uint64 value)
Use this function to write 64 bits in native format to an IOStream as big-endian data.
Definition: SDL3pp_iostream.h:3139
size_t WriteIO(IOStreamParam context, SourceBytes buf)
Write to an IOStream data stream.
Definition: SDL3pp_iostream.h:2217
static IOStream FromMem(TargetBytes mem)
Use this function to prepare a read-write memory buffer for use with IOStream.
Definition: SDL3pp_iostream.h:1863
Uint16 ReadU16LE(IOStreamParam src)
Use this function to read 16 bits of little-endian data from an IOStream and return in native format.
Definition: SDL3pp_iostream.h:2510
void WriteU64LE(IOStreamParam dst, Uint64 value)
Use this function to write 64 bits in native format to an IOStream as little-endian data.
Definition: SDL3pp_iostream.h:3089
void WriteS64LE(IOStreamParam dst, Sint64 value)
Use this function to write 64 bits in native format to an IOStream as little-endian data.
Definition: SDL3pp_iostream.h:3114
void WriteS64BE(IOStreamParam dst, Sint64 value)
Use this function to write 64 bits in native format to an IOStream as big-endian data.
Definition: SDL3pp_iostream.h:3164
constexpr IOWhence IO_SEEK_SET
Seek from the beginning of data.
Definition: SDL3pp_iostream.h:93
constexpr IOWhence IO_SEEK_END
Seek relative to the end of data.
Definition: SDL3pp_iostream.h:99
PropertiesRef GetProperties() const
Get the properties associated with an IOStream.
Definition: SDL3pp_iostream.h:2038
void WriteU16BE(IOStreamParam dst, Uint16 value)
Use this function to write 16 bits in native format to an IOStream as big-endian data.
Definition: SDL3pp_iostream.h:2939
::Uint32 Uint32
An unsigned 32-bit integer type.
Definition: SDL3pp_stdinc.h:341
::Uint64 Uint64
An unsigned 64-bit integer type.
Definition: SDL3pp_stdinc.h:371
::Uint8 Uint8
An unsigned 8-bit integer type.
Definition: SDL3pp_stdinc.h:289
::Sint8 Sint8
A signed 8-bit integer type.
Definition: SDL3pp_stdinc.h:276
::Sint64 Sint64
A signed 64-bit integer type.
Definition: SDL3pp_stdinc.h:356
::Sint32 Sint32
A signed 32-bit integer type.
Definition: SDL3pp_stdinc.h:328
::Sint16 Sint16
A signed 16-bit integer type.
Definition: SDL3pp_stdinc.h:302
::Uint16 Uint16
An unsigned 16-bit integer type.
Definition: SDL3pp_stdinc.h:315
Main include header for the SDL3pp library.
Safely wrap IOStream for non owning parameters.
Definition: SDL3pp_iostream.h:34
constexpr auto operator<=>(const IOStreamParam &other) const =default
Comparison.
constexpr IOStreamParam(IOStreamRaw value)
Constructs from IOStreamRaw.
Definition: SDL3pp_iostream.h:38
IOStreamRaw value
parameter's IOStreamRaw
Definition: SDL3pp_iostream.h:35
constexpr IOStreamParam(std::nullptr_t=nullptr)
Constructs null/invalid.
Definition: SDL3pp_iostream.h:44
Semi-safe reference for IOStream.
Definition: SDL3pp_iostream.h:1657
IOStreamRef(IOStreamRaw resource) noexcept
Constructs from IOStreamParam.
Definition: SDL3pp_iostream.h:1679
~IOStreamRef()
Destructor.
Definition: SDL3pp_iostream.h:1688
IOStreamRef(IOStreamParam resource) noexcept
Constructs from IOStreamParam.
Definition: SDL3pp_iostream.h:1667
constexpr IOStreamRef(const IOStreamRef &other) noexcept=default
Copy constructor.
Semi-safe reference for Properties.
Definition: SDL3pp_properties.h:716
A simple std::string-like interface for SDL allocated strings.
Definition: SDL3pp_strings.h:153