4

I am writing C functions for Lua. I have many calls like lua_gettable, lua_touserdata, etc

My C function may receive complex structures like table with tables as fields.

It is hard for me to program stacked machine.

Is there way to write Lua script that would be converted to C code.

Or some other tools that may help me to code such C functions for lua scripts.

Thanks.

PS

Here is example:-

local data = {}
data.x = {}
data.x.y = 1
myCfunc(data)

int myCfunc(lua_State * L){
 lua_pushstring(L, "x");
 lua_gettable(L, 2);
 lua_pushstring(L, "y");
 lua_gettable(L, -2);
 double y = lua_tonumber(L, -1);
 lua_pop(L, 2);
}

instead of

function myCfunc(data)
 y = data.x.y
end

My real code is much more complex and I am looking for some automated code generation that will help me.

2
  • 1
    Wait, wat? What is your problem? If you can write it in Lua, write it in Lua - why do you need to write it in C? Commented Jan 18, 2011 at 18:10
  • I am creating C functions that would be called by LUA. It is hard for me to make such function. Actually I made many C functions for lua scripts. I can't code them in lua. I use lua to debug my application. Commented Jan 18, 2011 at 18:17

4 Answers 4

8

Try LuaToCee.

Sign up to request clarification or add additional context in comments.

Comments

5

Perhaps toLua could help.

1 Comment

Thanks. But it is not what I am looking for. tolua will generate wrapper arround C classes when I wish to read complex lua strcust in simpler way.
3

From C#, something I've done is written code to convert LUA datastructures in JSON format. Then I can load the data via any JSON library, with all their bells and whistles. Its kind of a round-about solution but you only have to write the JSON Encoding code once.

3 Comments

Err... that isn't the question he asked at all. He wants to know how to convert Lua code into C, not Lua tables into JSON objects.
He states "My C function may receive complex structures like table with tables as fields." and that this is hard. Though the suggestion for simplifying the that usage is not a direct answer to his question, it might still be useful.
JSON is too hacky. I can write C code but I believe LUA interpreter converts LUA script to C calls much more efficiently. So it is possible to get that done some how. LUA is not only stack machine. There must be some tools that help to code such systems.
-1

SWIG Simplified Wrapper and Interface Generator http://www.swig.org/ It is generally for the C to Lua but by defining some global variables you can use it as a Lua to C

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.