diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/core.c | 56 | ||||
| -rw-r--r-- | src/lua_core.c | 2 |
2 files changed, 58 insertions, 0 deletions
@@ -9,9 +9,11 @@ static size_t getBufferElementSize( Buffer* buffer ) { case BUFFER_UNSIGNED_CHAR: return sizeof( unsigned char ); case BUFFER_UNSIGNED_SHORT: return sizeof( unsigned short ); case BUFFER_UNSIGNED_INT: return sizeof( unsigned int ); + case BUFFER_UNSIGNED_LONG: return sizeof( unsigned long ); case BUFFER_CHAR: return sizeof( char ); case BUFFER_SHORT: return sizeof( short ); case BUFFER_INT: return sizeof( int ); + case BUFFER_LONG: return sizeof( long ); case BUFFER_FLOAT: return sizeof( float ); case BUFFER_DOUBLE: return sizeof( double ); } @@ -3631,9 +3633,11 @@ int lcoreLoadBuffer( lua_State* L ) { unsigned char* ucp = buffer.data; unsigned short* usp = buffer.data; unsigned int* uip = buffer.data; + unsigned long* ulp = buffer.data; char* cp = buffer.data; short* sp = buffer.data; int* ip = buffer.data; + long* lp = buffer.data; float* fp = buffer.data; double* dp = buffer.data; @@ -3653,6 +3657,10 @@ int lcoreLoadBuffer( lua_State* L ) { *uip = (unsigned int)lua_tointeger( L, -1 ); uip++; break; + case BUFFER_UNSIGNED_LONG: + *ulp = (unsigned long)lua_tointeger( L, -1 ); + ulp++; + break; case BUFFER_CHAR: *cp = (char)lua_tointeger( L, -1 ); cp++; @@ -3665,6 +3673,10 @@ int lcoreLoadBuffer( lua_State* L ) { *ip = (int)lua_tointeger( L, -1 ); ip++; break; + case BUFFER_LONG: + *lp = (long)lua_tointeger( L, -1 ); + lp++; + break; case BUFFER_FLOAT: *fp = (float)lua_tonumber( L, -1 ); fp++; @@ -3828,9 +3840,11 @@ int lcoreSetBufferData( lua_State* L ) { unsigned char* ucp = buffer->data + offset; unsigned short* usp = buffer->data + offset; unsigned int* uip = buffer->data + offset; + unsigned long* ulp = buffer->data + offset; char* cp = buffer->data + offset; short* sp = buffer->data + offset; int* ip = buffer->data + offset; + long* lp = buffer->data + offset; float* fp = buffer->data + offset; double* dp = buffer->data + offset; @@ -3844,6 +3858,9 @@ int lcoreSetBufferData( lua_State* L ) { case BUFFER_UNSIGNED_INT: *uip = (unsigned int)lua_tointeger( L, -1 ); break; + case BUFFER_UNSIGNED_LONG: + *ulp = (unsigned long)lua_tointeger( L, -1 ); + break; case BUFFER_CHAR: *cp = (char)lua_tointeger( L, -1 ); break; @@ -3853,6 +3870,9 @@ int lcoreSetBufferData( lua_State* L ) { case BUFFER_INT: *ip = (int)lua_tointeger( L, -1 ); break; + case BUFFER_LONG: + *lp = (long)lua_tointeger( L, -1 ); + break; case BUFFER_FLOAT: *fp = (float)lua_tonumber( L, -1 ); break; @@ -3893,6 +3913,14 @@ int lcoreSwapBufferEndianness( lua_State* L ) { p++; } } + else if ( buffer->type == BUFFER_UNSIGNED_LONG ) { + unsigned long *p = buffer->data; + + for ( int i = 0; i < bufLen; i++ ) { + *p = swapU64( *p ); + p++; + } + } else if ( buffer->type == BUFFER_SHORT ) { short *p = buffer->data; @@ -3909,6 +3937,14 @@ int lcoreSwapBufferEndianness( lua_State* L ) { p++; } } + else if ( buffer->type == BUFFER_LONG ) { + long *p = buffer->data; + + for ( int i = 0; i < bufLen; i++ ) { + *p = swapS64( *p ); + p++; + } + } else if ( buffer->type == BUFFER_FLOAT ) { float *p = buffer->data; @@ -3974,6 +4010,16 @@ int lcoreGetBufferData( lua_State* L ) { p++; } } + else if ( buffer->type == BUFFER_UNSIGNED_LONG ) { + unsigned long* p = buffer->data + position * sizeof( unsigned long ); + lua_createtable( L, count, 0 ); + + for ( int i = 0; i < count; i++ ) { + lua_pushinteger( L, (unsigned long)*p ); + lua_rawseti( L, -2, i+1 ); + p++; + } + } else if ( buffer->type == BUFFER_CHAR ) { char* p = buffer->data + position * sizeof( char ); lua_createtable( L, count, 0 ); @@ -4004,6 +4050,16 @@ int lcoreGetBufferData( lua_State* L ) { p++; } } + else if ( buffer->type == BUFFER_LONG ) { + long* p = buffer->data + position * sizeof( long ); + lua_createtable( L, count, 0 ); + + for ( int i = 0; i < count; i++ ) { + lua_pushinteger( L, (long)*p ); + lua_rawseti( L, -2, i+1 ); + p++; + } + } else if ( buffer->type == BUFFER_FLOAT ) { float* p = buffer->data + position * sizeof( float ); lua_createtable( L, count, 0 ); diff --git a/src/lua_core.c b/src/lua_core.c index 95f9ff0..8483b16 100644 --- a/src/lua_core.c +++ b/src/lua_core.c @@ -1241,9 +1241,11 @@ static void defineGlobals() { assignGlobalInt( BUFFER_UNSIGNED_CHAR, "BUFFER_UNSIGNED_CHAR" ); // C type unsigned char assignGlobalInt( BUFFER_UNSIGNED_SHORT, "BUFFER_UNSIGNED_SHORT" ); // C type unsigned short assignGlobalInt( BUFFER_UNSIGNED_INT, "BUFFER_UNSIGNED_INT" ); // C type unsigned int + assignGlobalInt( BUFFER_UNSIGNED_LONG, "BUFFER_UNSIGNED_LONG" ); // C type unsigned long assignGlobalInt( BUFFER_CHAR, "BUFFER_CHAR" ); // C type char assignGlobalInt( BUFFER_SHORT, "BUFFER_SHORT" ); // C type short assignGlobalInt( BUFFER_INT, "BUFFER_INT" ); // C type int + assignGlobalInt( BUFFER_LONG, "BUFFER_LONG" ); // C type long assignGlobalInt( BUFFER_FLOAT, "BUFFER_FLOAT" ); // C type float assignGlobalInt( BUFFER_DOUBLE, "BUFFER_DOUBLE" ); // C type double /*DOC_DEFINES_END*/ |
