shithub: npe

Download patch

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;
 }
 
--