ref: bf9719ad111199e5d19b9e0c912df58468dc1c24
parent: 086f757bc0f6c51c01e6300ce0370d774e6f9864
author: qwx <qwx@sciops.net>
date: Mon Mar 2 19:18:58 EST 2026
sdl: add SDL_RWFromConstMem (sdl2) and SDL_IOFromMem (sdl3)
--- a/include/npe/SDL2/SDL_rwops.h
+++ b/include/npe/SDL2/SDL_rwops.h
@@ -22,6 +22,7 @@
SDL_RWops *SDL_RWFromFile(const char *, const char *);
SDL_RWops *SDL_RWFromMem(void*, int);
+SDL_RWops *SDL_RWFromConstMem(const void*, int);
size_t SDL_RWread(SDL_RWops *, void *, size_t, size_t);
size_t SDL_RWwrite(SDL_RWops *, const void *, size_t, size_t);
vlong SDL_RWseek(SDL_RWops *, vlong, int);
--- a/include/npe/SDL3/SDL_iostream.h
+++ b/include/npe/SDL3/SDL_iostream.h
@@ -12,6 +12,7 @@
};
SDL_IOStream* SDL_IOFromFile(const char *file, const char *mode);
+SDL_IOStream* SDL_IOFromMem(void *mem, size_t size);
SDL_IOStream* SDL_IOFromConstMem(const void *mem, size_t size);
size_t SDL_WriteIO(SDL_IOStream *context, const void *ptr, size_t size);
bool SDL_CloseIO(SDL_IOStream *context);
--- a/libnpe_sdl2/rwops.c
+++ b/libnpe_sdl2/rwops.c
@@ -93,6 +93,18 @@
return o;
}
+SDL_RWops*
+SDL_RWFromConstMem(const void *mem, int size)
+{+ SDL_RWops *o;
+
+ o = SDL_RWFromMem(mem, size);
+ if(o == nil)
+ return nil;
+ o->write = nil;
+ return o;
+}
+
size_t
SDL_RWread(SDL_RWops *o, void *b, size_t sz, size_t n)
{--- a/libnpe_sdl3/iostream.c
+++ b/libnpe_sdl3/iostream.c
@@ -83,7 +83,7 @@
}
SDL_IOStream*
-SDL_IOFromConstMem(const void *mem, size_t size)
+SDL_IOFromMem(void *mem, size_t size)
{SDL_IOStream *o;
Membuf *b;
@@ -96,12 +96,23 @@
b->memdata = mem;
b->memn = size;
b->mempos = 0;
-
o->size = memsize;
o->seek = memseek;
o->read = memread;
o->write = memwrite;
o->close = memclose;
+ return o;
+}
+
+SDL_IOStream*
+SDL_IOFromMem(const void *mem, size_t size)
+{+ SDL_IOStream *o;
+
+ o = SDL_IOFromMem(mem, size);
+ if(o == nil)
+ return nil;
+ o->write = nil;
return o;
}
--
⑨