From 0a070d118455aaed1ef7a357158b605da3fb75dc Mon Sep 17 00:00:00 2001 From: yanwei Date: Mon, 11 Jan 2021 14:01:18 +0800 Subject: [PATCH] Update README.md add luatinkerE --- README.md | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/README.md b/README.md index 5a84935..af7b743 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,7 @@ code first:(10行以内的代码展示项目) * [librf](#librf) * [nebula](#nebula) * [cpp-ipc](#cpp-ipc) +* [luatinkerE](#luatinkerE) ## 孵化中 @@ -574,3 +575,46 @@ std::thread t2 {[&] { t1.join(); t2.join(); ``` + + +## luatinkerE + +项目名称:[luatinkerE](https://github.com/yanwei1983/luatinkerE) + +状态:已发布 + +需要的C++版本:主版本C++11 或 C++17分支 + +项目简介: + +LUA-C++ 绑定库"lua_tinker" 扩展为支持 c++11/14/17各种新特性 和lua 5.3 + +code first: + +```c++ +//c++bind +lua_tinker::def("func_name", &func); +lua_tinker::set("var_name", &var); +lua_tinker::class_add("class_name"); +lua_tinker::class_def("func_name", &class_t::func); +lua_tinker::class_mem_readonly("member_name", &class_t::member); +lua_tinker::class_mem_static("member_name", &class_t::member); +lua_tinker::class_property(L, "m_prop", &ff::getVal, &ff::setVal); +lua_tinker::class_property(L, "m_prop_readonly", &ff::getVal, nullptr); +lua_tinker::class_inh(L); +lua_tinker::def(L, "test_overload", lua_tinker::args_type_overload_functor( + lua_tinker::make_functor_ptr((int(*)(int))(&test_overload)), + lua_tinker::make_functor_ptr((int(*)(double))(&test_overload)), + lua_tinker::make_functor_ptr((int(*)(int, double))(&test_overload)), + lua_tinker::make_functor_ptr((int(*)(int, int, double))(&test_overload)))); + + +//call lua +ret_val_t ret = lua_tinker::call("func_name", param1, param2); +var_t var = lua_tinker::get("var_name"); + +std::function func = [](int k, int j)->int { return k + j; }; +lua_tinker::def(L, "std_function_int_int", func); //can hold function + +lua_tinker::lua_function_ref lua_func = lua_tinker::call(L, "test_lua_luafunction"); +```