Skip to content

cloudwu/luacc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LUACC allows you write C code in lua .

It seems like Cython to python.

Export C routine for lua

local luacc = require "luacc"

local f = luacc.routine [[
	[in] a int
	[in] b int
	[ret] c int
	[ret] d int

	int c = a + b;
	int d = a - b;
]]

print(f(2,1))	-- 3	1

Import C function for later call from C routine

local luacc = require "luacc"

luacc.cfunction [[

int max(int a, int b) {
	return a > b ? a:b;
}

int min(int a, int b) {
	return a < b ? a:b;
}

]]

local f = luacc.routine [[
	[in] a int
	[in] b int
	[ret] c int
	[ret] d int

	int c = max(a,b);
	int d = min(a,b);
]]

print(f(2,1))	-- 2	1

Define user type

local luacc = require "luacc"

luacc.struct ( "foo", { x = "int" , y = "int" })

local luacc.cfunction [[
void swap(foo &f) {
	int temp = f->x;
	f->x = f->y;
	f->y = temp;
}
]]

local f = luacc.routine [[
	[inout] x foo
	
	swap(&x);
]]

local foo = { x = 1, y = 2}
f(foo)

print(foo.x, foo.y)	-- 2	1

It doesn't support nest type yet.

Build-in types

  • int
  • bool
  • float
  • double
  • string (const char *)
  • object (string table userdata nil)

Make

Question ?

About

LUACC allows you write C code in lua

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published