diff options
| author | ruki <[email protected]> | 2020-04-22 22:45:10 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2020-04-22 10:31:03 +0800 |
| commit | 8567065df7d23e7c51880d1e36a9895a13cd4b89 (patch) | |
| tree | fdb54ac92ca1d87afbe7edaa39b0f24ccf7cca8f | |
| parent | 762a7bc9386a0acaede7d54453611999a589c776 (diff) | |
improve engine api
| -rw-r--r-- | core/src/demo/xmake.c | 2 | ||||
| -rw-r--r-- | core/src/xmake/engine.c | 7 | ||||
| -rw-r--r-- | core/src/xmake/engine.h | 5 | ||||
| -rw-r--r-- | tests/projects/xmake_cli/hello/src/lni/main.c | 2 | ||||
| -rw-r--r-- | tests/projects/xmake_cli/xmake/src/main.c | 2 |
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); |
