aboutsummaryrefslogtreecommitdiff
path: root/src/keeper.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/keeper.h')
-rw-r--r--src/keeper.h42
1 files changed, 21 insertions, 21 deletions
diff --git a/src/keeper.h b/src/keeper.h
index ce9742a..5f52fa0 100644
--- a/src/keeper.h
+++ b/src/keeper.h
@@ -19,7 +19,7 @@ struct Keeper
19{ 19{
20 MUTEX_T keeper_cs; 20 MUTEX_T keeper_cs;
21 lua_State* L; 21 lua_State* L;
22 //int count; 22 // int count;
23}; 23};
24 24
25struct Keepers 25struct Keepers
@@ -28,30 +28,30 @@ struct Keepers
28 Keeper keeper_array[1]; 28 Keeper keeper_array[1];
29}; 29};
30 30
31void init_keepers( Universe* U, lua_State* L); 31static constexpr ptrdiff_t KEEPER_MAGIC_SHIFT{ 3 };
32void close_keepers( Universe* U);
33
34Keeper* which_keeper( Keepers* keepers_, ptrdiff_t magic_);
35Keeper* keeper_acquire( Keepers* keepers_, ptrdiff_t magic_);
36#define KEEPER_MAGIC_SHIFT 3
37void keeper_release( Keeper* K);
38void keeper_toggle_nil_sentinels( lua_State* L, int val_i_, LookupMode const mode_);
39int keeper_push_linda_storage( Universe* U, lua_State* L, void* ptr_, ptrdiff_t magic_);
40
41// crc64/we of string "NIL_SENTINEL" generated at http://www.nitrxgen.net/hashgen/ 32// crc64/we of string "NIL_SENTINEL" generated at http://www.nitrxgen.net/hashgen/
42static constexpr UniqueKey NIL_SENTINEL{ 0x7eaafa003a1d11a1ull }; 33static constexpr UniqueKey NIL_SENTINEL{ 0x7eaafa003a1d11a1ull };
43 34
35void init_keepers(Universe* U, lua_State* L);
36void close_keepers(Universe* U);
37
38Keeper* which_keeper(Keepers* keepers_, ptrdiff_t magic_);
39Keeper* keeper_acquire(Keepers* keepers_, ptrdiff_t magic_);
40void keeper_release(Keeper* K);
41void keeper_toggle_nil_sentinels(lua_State* L, int val_i_, LookupMode const mode_);
42int keeper_push_linda_storage(Universe* U, lua_State* L, void* ptr_, ptrdiff_t magic_);
43
44using keeper_api_t = lua_CFunction; 44using keeper_api_t = lua_CFunction;
45#define KEEPER_API( _op) keepercall_ ## _op 45#define KEEPER_API(_op) keepercall_##_op
46#define PUSH_KEEPER_FUNC lua_pushcfunction 46#define PUSH_KEEPER_FUNC lua_pushcfunction
47// lua_Cfunctions to run inside a keeper state (formerly implemented in Lua) 47// lua_Cfunctions to run inside a keeper state
48int keepercall_clear( lua_State* L); 48int keepercall_clear(lua_State* L);
49int keepercall_send( lua_State* L); 49int keepercall_send(lua_State* L);
50int keepercall_receive( lua_State* L); 50int keepercall_receive(lua_State* L);
51int keepercall_receive_batched( lua_State* L); 51int keepercall_receive_batched(lua_State* L);
52int keepercall_limit( lua_State* L); 52int keepercall_limit(lua_State* L);
53int keepercall_get( lua_State* L); 53int keepercall_get(lua_State* L);
54int keepercall_set( lua_State* L); 54int keepercall_set(lua_State* L);
55int keepercall_count( lua_State* L); 55int keepercall_count(lua_State* L);
56 56
57int keeper_call(Universe* U, lua_State* K, keeper_api_t _func, lua_State* L, void* linda, int starting_index); 57int keeper_call(Universe* U, lua_State* K, keeper_api_t _func, lua_State* L, void* linda, int starting_index);