summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjussi2024-08-29 13:01:21 +0300
committerjussi2024-08-29 13:01:21 +0300
commitd40bf3a393d968198dc30b7e7cd3f7b926f3a482 (patch)
tree9bd1d6d306518317466ebc27fd708d60a1a10f0b /src
parent366f8f5c92975ff6ac7e1643124d747ae54130be (diff)
downloadreilua-enhanced-d40bf3a393d968198dc30b7e7cd3f7b926f3a482.tar.gz
reilua-enhanced-d40bf3a393d968198dc30b7e7cd3f7b926f3a482.tar.bz2
reilua-enhanced-d40bf3a393d968198dc30b7e7cd3f7b926f3a482.zip
GetBufferAsString.
Diffstat (limited to 'src')
-rw-r--r--src/core.c23
-rw-r--r--src/lua_core.c1
2 files changed, 24 insertions, 0 deletions
diff --git a/src/core.c b/src/core.c
index 4607ef6..0aa8559 100644
--- a/src/core.c
+++ b/src/core.c
@@ -3737,6 +3737,29 @@ int lcoreGetBufferData( lua_State* L ) {
}
/*
+> string = RL.GetBufferAsString( Buffer buffer )
+
+Get buffer as string
+
+- Success return string
+*/
+int lcoreGetBufferAsString( lua_State* L ) {
+ Buffer* buffer = uluaGetBuffer( L, 1 );
+
+ size_t size = buffer->size * getBufferElementSize( buffer ) + 1;
+ char* str = malloc( size );
+
+ memset( str, 0, size );
+ memcpy( str, buffer->data, size - 1 );
+
+ lua_pushstring( L, buffer->data );
+
+ free( str );
+
+ return 1;
+}
+
+/*
> type = RL.GetBufferType( Buffer buffer )
Get buffer type
diff --git a/src/lua_core.c b/src/lua_core.c
index 50fdfda..7250cfc 100644
--- a/src/lua_core.c
+++ b/src/lua_core.c
@@ -1519,6 +1519,7 @@ void luaRegister() {
assingGlobalFunction( "CopyBufferData", lcoreCopyBufferData );
assingGlobalFunction( "SetBufferData", lcoreSetBufferData );
assingGlobalFunction( "GetBufferData", lcoreGetBufferData );
+ assingGlobalFunction( "GetBufferAsString", lcoreGetBufferAsString );
assingGlobalFunction( "GetBufferType", lcoreGetBufferType );
assingGlobalFunction( "GetBufferSize", lcoreGetBufferSize );
assingGlobalFunction( "GetBufferElementSize", lcoreGetBufferElementSize );