Skip to content

auto generation c++ export code to lua for luatinkerE

License

Notifications You must be signed in to change notification settings

yanwei1983/export2lua

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

export2lua

  • 使用libclang读取cxx头文件,自动生成符合luatinkerE语法的导出语句
  • 支持luatinkerE的所有新特性,包括函数重载及默认参数导出
  • 需要定义一个空的export_lua,用来指示哪一行的定义需要导出到lua

  • use libclang read cxx header file ,auto gen c++ code export to lua for luatinkerE
  • support all feature of luatinkerE, include overload function and default params output
  • need define a empty macro named export_lua,will gen export code which line "export_lua" used

usage: export2lua[cppfile][-Iheaderdir] ...[-Iheaderdir]

  • [--cpps=filename] use ';' to separate source files from file like a.cpp;b.cpp;test/c.cpp;
  • [--include=filename] use ';' to separate include dirs from file like -Itest;-I../game;
  • [--output=filename] output file name
  • [--exportclass=filename] use ';' to separate which class need export from file
  • [--keyword=export_lua] keyword default is export_lua, if set to empty will output all decl
  • [--skip_default_params] not output default_params
  • [--skip_function] not output function
  • [--skip_class] not output class
  • [--skip_namespace] not output namespace
  • [--skip_var] not output var
  • [--skip_field] not output class field
  • [--skip_enum] not output enum
  • [--skip_method] not output method
  • [--skip_method_static] not static method
  • [--skip_con] not output Constructor
  • [--skip_overload] not output overload function
  • [-v] will output DEBUG info)

example:

读取tests/test.h文件,增加include作为头文件目录,结果重定向到a.txt
export2lua tests/test.h -Iinclude > a.txt
读取tests/test.h文件,增加include作为头文件目录,结果输出到a.txt
export2lua tests/test.h -Iinclude --output=a.txt
读取cpps.txt中列出的所有文件,增加header.txt中列出的所有目录作为头文件目录,结果输出到a.txt
export2lua --cpps=cpps.txt --include=header.txt --output=a.txt
读取cpps.txt中列出的所有文件,增加header.txt中列出的所有目录作为头文件目录,取消关键字查找改为全部导出, 导出类名必须包含在export.txt中, 结果输出到a.txt
export2lua --cpps=cpps.txt --include=header.txt --output=a.txt --keyword= --exportclass=export.txt

in cxx:

#define export_lua  
export_lua class test    
{   
export_lua test(){}  
export_lua void member_func(int);  
};  
export_lua int global_func();  

autogen:

//this file was auto generated, plz don't modify it
#include "lua_tinker.h"
#include "tests/class2.h"
void export_to_lua_auto(lua_State* L)
{ 
lua_tinker::def(L, "global_func",&global_func);
lua_tinker::class_add<test>(L, "test",true);
lua_tinker::class_def<test>(L, "member_func",&test::member_func); 
lua_tinker::class_con<test>(L, lua_tinker::constructor<test>::invoke);
}

About

auto generation c++ export code to lua for luatinkerE

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages