diff options
author | Benoit Germain <benoit.germain@ubisoft.com> | 2024-11-27 18:14:32 +0100 |
---|---|---|
committer | Benoit Germain <benoit.germain@ubisoft.com> | 2024-11-27 18:14:32 +0100 |
commit | 4f8e92b37b7c20545ca08fefd1f1c0ca7d1673a9 (patch) | |
tree | 3dda322bc32cc49f53c8399a5bb03b04bf616cdc | |
parent | 95d8604d0822b32f2561c5b29f18acf909ead935 (diff) | |
download | lanes-4f8e92b37b7c20545ca08fefd1f1c0ca7d1673a9.tar.gz lanes-4f8e92b37b7c20545ca08fefd1f1c0ca7d1673a9.tar.bz2 lanes-4f8e92b37b7c20545ca08fefd1f1c0ca7d1673a9.zip |
Make lanes.register() available as an exported C function lanes_register()
-rw-r--r-- | CHANGES | 6 | ||||
-rw-r--r-- | docs/index.html | 3 | ||||
-rw-r--r-- | src/lanes.cpp | 4 | ||||
-rw-r--r-- | src/lanes.hpp | 2 |
4 files changed, 8 insertions, 7 deletions
@@ -1,9 +1,6 @@ | |||
1 | CHANGES: | 1 | CHANGES: |
2 | 2 | ||
3 | CHANGE 3: BGe 24-Sep-24 | 3 | CHANGE 2: BGe 27-Nov-24 |
4 | * Modernized lanes.gen() library list processing code. | ||
5 | |||
6 | CHANGE 2: BGe 04-Jul-24 | ||
7 | * Internal changes | 4 | * Internal changes |
8 | - Lanes is implemented in C++20: thread, condition_variable, mutex, string_view, variant, lambdas, templates, and more! | 5 | - Lanes is implemented in C++20: thread, condition_variable, mutex, string_view, variant, lambdas, templates, and more! |
9 | - Almost all platform-specific code is gone (only a small bit for thread priority and affinity remains). | 6 | - Almost all platform-specific code is gone (only a small bit for thread priority and affinity remains). |
@@ -12,6 +9,7 @@ CHANGE 2: BGe 04-Jul-24 | |||
12 | * Lanes API changes | 9 | * Lanes API changes |
13 | - Version is now 4.0.0 | 10 | - Version is now 4.0.0 |
14 | - Lanes module: | 11 | - Lanes module: |
12 | - lanes.register() is also available as lanes_register() in the exported C API. | ||
15 | - lanes.sleep() accepts a new argument "indefinitely" to block forever (until hard cancellation is received). | 13 | - lanes.sleep() accepts a new argument "indefinitely" to block forever (until hard cancellation is received). |
16 | - function set_debug_threadname() available inside a Lane is renamed lane_threadname(); can now both read and write the name. | 14 | - function set_debug_threadname() available inside a Lane is renamed lane_threadname(); can now both read and write the name. |
17 | - new function lanes.finally(). Installs a function that gets called at Lanes shutdown after attempting to terminate all lanes. | 15 | - new function lanes.finally(). Installs a function that gets called at Lanes shutdown after attempting to terminate all lanes. |
diff --git a/docs/index.html b/docs/index.html index edac9d8..cccfd6f 100644 --- a/docs/index.html +++ b/docs/index.html | |||
@@ -440,7 +440,8 @@ | |||
440 | <br /> | 440 | <br /> |
441 | Use <tt>lanes.require()</tt> for this purpose. This will call the original <tt>require()</tt>, then add the result to the lookup databases. | 441 | Use <tt>lanes.require()</tt> for this purpose. This will call the original <tt>require()</tt>, then add the result to the lookup databases. |
442 | <br /> | 442 | <br /> |
443 | It is also possible to register a given module <i>a posteriori</i> with <tt>lanes.register()</tt>. This function will raise an error if the registered module is not a function or table. | 443 | It is also possible to register a given module <i>a posteriori</i> with <tt>lanes.register()</tt>. This function will raise an error if the registered module is not a function or table.<br /> |
444 | Embedders can call the equivalent function <tt>lanes_register()</tt> from the C side. | ||
444 | </p> | 445 | </p> |
445 | 446 | ||
446 | <table border="1" bgcolor="#FFFFE0" cellpadding="10" style="width:50%"> | 447 | <table border="1" bgcolor="#FFFFE0" cellpadding="10" style="width:50%"> |
diff --git a/src/lanes.cpp b/src/lanes.cpp index 39caee9..d58f113 100644 --- a/src/lanes.cpp +++ b/src/lanes.cpp | |||
@@ -213,7 +213,7 @@ LUAG_FUNC(require) | |||
213 | // --- If a client wants to transfer stuff of a previously required module from the current state to another Lane, the module must be registered | 213 | // --- If a client wants to transfer stuff of a previously required module from the current state to another Lane, the module must be registered |
214 | // to populate the lookup database in the source lane (and in the destination too, of course) | 214 | // to populate the lookup database in the source lane (and in the destination too, of course) |
215 | // lanes.register( "modname", module) | 215 | // lanes.register( "modname", module) |
216 | LUAG_FUNC(register) | 216 | int lanes_register(lua_State* const L_) |
217 | { | 217 | { |
218 | std::string_view const _name{ luaG_checkstring(L_, StackIndex{ 1 }) }; | 218 | std::string_view const _name{ luaG_checkstring(L_, StackIndex{ 1 }) }; |
219 | LuaType const _mod_type{ luaG_type(L_, StackIndex{ 2 }) }; | 219 | LuaType const _mod_type{ luaG_type(L_, StackIndex{ 2 }) }; |
@@ -649,7 +649,7 @@ namespace { | |||
649 | { "linda", LG_linda }, | 649 | { "linda", LG_linda }, |
650 | { "nameof", LG_nameof }, | 650 | { "nameof", LG_nameof }, |
651 | { "now_secs", LG_now_secs }, | 651 | { "now_secs", LG_now_secs }, |
652 | { "register", LG_register }, | 652 | { "register", lanes_register }, |
653 | { "set_singlethreaded", LG_set_singlethreaded }, | 653 | { "set_singlethreaded", LG_set_singlethreaded }, |
654 | { "set_thread_priority", LG_set_thread_priority }, | 654 | { "set_thread_priority", LG_set_thread_priority }, |
655 | { "set_thread_affinity", LG_set_thread_affinity }, | 655 | { "set_thread_affinity", LG_set_thread_affinity }, |
diff --git a/src/lanes.hpp b/src/lanes.hpp index a3731e4..550e6e6 100644 --- a/src/lanes.hpp +++ b/src/lanes.hpp | |||
@@ -18,3 +18,5 @@ LANES_API int luaopen_lanes_core(lua_State* L_); | |||
18 | LANES_API void luaopen_lanes_embedded(lua_State* L_, lua_CFunction luaopen_lanes_); | 18 | LANES_API void luaopen_lanes_embedded(lua_State* L_, lua_CFunction luaopen_lanes_); |
19 | using luaopen_lanes_embedded_t = void (*)(lua_State* L_, lua_CFunction luaopen_lanes_); | 19 | using luaopen_lanes_embedded_t = void (*)(lua_State* L_, lua_CFunction luaopen_lanes_); |
20 | static_assert(std::is_same_v<decltype(&luaopen_lanes_embedded), luaopen_lanes_embedded_t>, "signature changed: check all uses of luaopen_lanes_embedded_t"); | 20 | static_assert(std::is_same_v<decltype(&luaopen_lanes_embedded), luaopen_lanes_embedded_t>, "signature changed: check all uses of luaopen_lanes_embedded_t"); |
21 | |||
22 | LANES_API int lanes_register(lua_State* L_); | ||