summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2020-04-22 22:45:10 +0800
committerruki <[email protected]>2020-04-22 10:31:03 +0800
commit8567065df7d23e7c51880d1e36a9895a13cd4b89 (patch)
treefdb54ac92ca1d87afbe7edaa39b0f24ccf7cca8f
parent762a7bc9386a0acaede7d54453611999a589c776 (diff)
improve engine api
-rw-r--r--core/src/demo/xmake.c2
-rw-r--r--core/src/xmake/engine.c7
-rw-r--r--core/src/xmake/engine.h5
-rw-r--r--tests/projects/xmake_cli/hello/src/lni/main.c2
-rw-r--r--tests/projects/xmake_cli/xmake/src/main.c2
5 files changed, 12 insertions, 6 deletions
diff --git a/core/src/demo/xmake.c b/core/src/demo/xmake.c
index 804f5dc5d..69141323a 100644
--- a/core/src/demo/xmake.c
+++ b/core/src/demo/xmake.c
@@ -15,7 +15,7 @@ tb_int_t main(tb_int_t argc, tb_char_t** argv)
if (xm_init())
{
// init engine
- xm_engine_ref_t engine = xm_engine_init();
+ xm_engine_ref_t engine = xm_engine_init(tb_null);
if (engine)
{
// do engine main entry
diff --git a/core/src/xmake/engine.c b/core/src/xmake/engine.c
index aeae4b76f..b7ef783d1 100644
--- a/core/src/xmake/engine.c
+++ b/core/src/xmake/engine.c
@@ -743,10 +743,10 @@ static tb_void_t xm_engine_init_features(xm_engine_t* engine)
/* //////////////////////////////////////////////////////////////////////////////////////
* implementation
*/
-xm_engine_ref_t xm_engine_init()
+xm_engine_ref_t xm_engine_init(xm_engine_lua_initializer_cb_t lua_initalizer)
{
// done
- tb_bool_t ok = tb_false;
+ tb_bool_t ok = tb_false;
xm_engine_t* engine = tb_null;
do
{
@@ -829,6 +829,9 @@ xm_engine_ref_t xm_engine_init()
lua_newtable(engine->lua);
lua_setglobal(engine->lua, "xmake");
+ // do lua initializer
+ if (lua_initalizer) lua_initalizer(engine->lua);
+
#ifdef TB_CONFIG_OS_WINDOWS
// enable terminal colors output for windows cmd
HANDLE output = GetStdHandle(STD_OUTPUT_HANDLE);
diff --git a/core/src/xmake/engine.h b/core/src/xmake/engine.h
index cd02516f7..d4e117e51 100644
--- a/core/src/xmake/engine.h
+++ b/core/src/xmake/engine.h
@@ -38,6 +38,9 @@ __tb_extern_c_enter__
/// the xmake engine type
typedef struct {tb_int_t dummy;} const* xm_engine_ref_t;
+/// the lua initializer callback type
+typedef tb_bool_t (*xm_engine_lua_initializer_cb_t)(lua_State* lua);
+
/* //////////////////////////////////////////////////////////////////////////////////////
* interfaces
*/
@@ -46,7 +49,7 @@ typedef struct {tb_int_t dummy;} const* xm_engine_ref_t;
*
* @return the engine
*/
-xm_engine_ref_t xm_engine_init(tb_noarg_t);
+xm_engine_ref_t xm_engine_init(xm_engine_lua_initializer_cb_t lua_initalizer);
/*! exit the engine
*
diff --git a/tests/projects/xmake_cli/hello/src/lni/main.c b/tests/projects/xmake_cli/hello/src/lni/main.c
index 3e27cf554..dfef99794 100644
--- a/tests/projects/xmake_cli/hello/src/lni/main.c
+++ b/tests/projects/xmake_cli/hello/src/lni/main.c
@@ -5,7 +5,7 @@ tb_int_t main(tb_int_t argc, tb_char_t** argv)
tb_int_t ok = -1;
if (xm_init())
{
- xm_engine_ref_t engine = xm_engine_init();
+ xm_engine_ref_t engine = xm_engine_init(tb_null);
if (engine)
{
tb_int_t argc2 = argc + 2;
diff --git a/tests/projects/xmake_cli/xmake/src/main.c b/tests/projects/xmake_cli/xmake/src/main.c
index 6e75791ed..b84c5b500 100644
--- a/tests/projects/xmake_cli/xmake/src/main.c
+++ b/tests/projects/xmake_cli/xmake/src/main.c
@@ -5,7 +5,7 @@ tb_int_t main(tb_int_t argc, tb_char_t** argv)
tb_int_t ok = -1;
if (xm_init())
{
- xm_engine_ref_t engine = xm_engine_init();
+ xm_engine_ref_t engine = xm_engine_init(tb_null);
if (engine)
{
ok = xm_engine_main(engine, argc, argv);