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