add lua binding (#53)
This commit is contained in:
		
							parent
							
								
									070f52dda3
								
							
						
					
					
						commit
						683210d02f
					
				
							
								
								
									
										29
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										29
									
								
								README.md
									
									
									
									
									
								
							| @ -154,6 +154,35 @@ fn main() { | |||||||
| </td></tr> | </td></tr> | ||||||
| </table> | </table> | ||||||
| 
 | 
 | ||||||
|  | ### ruapu with Lua | ||||||
|  | 
 | ||||||
|  | <table> | ||||||
|  | 
 | ||||||
|  | <tr><td> | ||||||
|  | 
 | ||||||
|  | Compile ruapu library | ||||||
|  | 
 | ||||||
|  | ```shell | ||||||
|  | # from source code | ||||||
|  | cd lua | ||||||
|  | # lua binding has been tested on Lua 5.2~5.4 | ||||||
|  | luarocks make | ||||||
|  | ``` | ||||||
|  | </td> | ||||||
|  | <td> | ||||||
|  | 
 | ||||||
|  | Use ruapu in Lua | ||||||
|  | 
 | ||||||
|  | ```Lua | ||||||
|  | ruapu = require "ruapu"; | ||||||
|  | print(ruapu.supports("mmx")); | ||||||
|  | for _, ext in ipairs(ruapu.rua()) do | ||||||
|  |     print(ext); | ||||||
|  | end | ||||||
|  | ``` | ||||||
|  | </td></tr> | ||||||
|  | </table> | ||||||
|  | 
 | ||||||
| <details> | <details> | ||||||
| <summary>Github-hosted runner result (Linux)</summary> | <summary>Github-hosted runner result (Linux)</summary> | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										19
									
								
								lua/ruapu-0.1-1.rockspec
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								lua/ruapu-0.1-1.rockspec
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | |||||||
|  | package = "ruapu" | ||||||
|  | version = "0.1-1" | ||||||
|  | source = { | ||||||
|  |     url = "https://github.com/nihui/ruapu.git" | ||||||
|  | } | ||||||
|  | description = { | ||||||
|  |     summary = "Detect CPU ISA features with single-file", | ||||||
|  |     homepage = "https://github.com/nihui/ruapu", | ||||||
|  |     license = "MIT" | ||||||
|  | } | ||||||
|  | dependencies = { | ||||||
|  |     "lua >= 5.2, <= 5.4" | ||||||
|  | } | ||||||
|  | build = { | ||||||
|  |     type = "builtin", | ||||||
|  |     modules = { | ||||||
|  |         ruapu = "ruapu-binding.c" | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										36
									
								
								lua/ruapu-binding.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								lua/ruapu-binding.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,36 @@ | |||||||
|  | #include<lua.h> | ||||||
|  | #include<lauxlib.h> | ||||||
|  | 
 | ||||||
|  | #define RUAPU_IMPLEMENTATION | ||||||
|  | #include"../ruapu.h" | ||||||
|  | 
 | ||||||
|  | static int supports(lua_State *l) | ||||||
|  | { | ||||||
|  |     luaL_checktype(l, 1, LUA_TSTRING); | ||||||
|  |     lua_pushboolean(l, ruapu_supports(luaL_checkstring(l, 1))); | ||||||
|  |     return 1; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | static int rua(lua_State *l) | ||||||
|  | { | ||||||
|  |     const char * const *s = ruapu_rua(); | ||||||
|  |     lua_newtable(l); | ||||||
|  |     for (int i = 0; s[i]; i++) { | ||||||
|  |         lua_pushstring(l, s[i]); | ||||||
|  |         lua_rawseti(l, -2, i + 1); | ||||||
|  |     } | ||||||
|  |     return 1; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | static const struct luaL_Reg modRuapu[] = { | ||||||
|  |     { "supports", supports }, | ||||||
|  |     { "rua", rua }, | ||||||
|  |     { NULL, NULL } | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | int luaopen_ruapu(lua_State *l) | ||||||
|  | { | ||||||
|  |     ruapu_init(); | ||||||
|  |     luaL_newlib(l, modRuapu); | ||||||
|  |     return 1; | ||||||
|  | } | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user