From 76da2875eb2af9f8191c2adf4f9663ac3a2cec89 Mon Sep 17 00:00:00 2001 From: Benoit Germain Date: Mon, 28 Oct 2024 17:57:31 +0100 Subject: Renamed allocator.h → allocator.hpp, cancel.h → cancel.hpp, keeper.h → keeper.hpp, tools.h → tools.hpp MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/allocator.h | 55 ----------------------------- src/allocator.hpp | 55 +++++++++++++++++++++++++++++ src/cancel.cpp | 2 +- src/cancel.h | 60 -------------------------------- src/cancel.hpp | 60 ++++++++++++++++++++++++++++++++ src/deep.cpp | 2 +- src/intercopycontext.cpp | 2 +- src/intercopycontext.h | 2 +- src/keeper.cpp | 2 +- src/keeper.h | 90 ------------------------------------------------ src/keeper.hpp | 90 ++++++++++++++++++++++++++++++++++++++++++++++++ src/lane.cpp | 2 +- src/lane.h | 2 +- src/lanes.cpp | 4 +-- src/linda.cpp | 2 +- src/linda.h | 2 +- src/nameof.cpp | 2 +- src/state.cpp | 2 +- src/tools.cpp | 2 +- src/tools.h | 37 -------------------- src/tools.hpp | 37 ++++++++++++++++++++ src/universe.cpp | 2 +- src/universe.h | 4 +-- 23 files changed, 259 insertions(+), 259 deletions(-) delete mode 100644 src/allocator.h create mode 100644 src/allocator.hpp delete mode 100644 src/cancel.h create mode 100644 src/cancel.hpp delete mode 100644 src/keeper.h create mode 100644 src/keeper.hpp delete mode 100644 src/tools.h create mode 100644 src/tools.hpp (limited to 'src') diff --git a/src/allocator.h b/src/allocator.h deleted file mode 100644 index fa48c46..0000000 --- a/src/allocator.h +++ /dev/null @@ -1,55 +0,0 @@ -#pragma once - -#include "compat.hpp" - -// ################################################################################################# - -namespace lanes { - - // everything we need to provide to lua_newstate() - class AllocatorDefinition - { - public: - // xxh64 of string "kAllocatorVersion_1" generated at https://www.pelock.com/products/hash-calculator - static constexpr uintptr_t kAllocatorVersion{ static_cast(0xCF9D321B0DFB5715ull) }; - uintptr_t version{ kAllocatorVersion }; - lua_Alloc allocF{ nullptr }; - void* allocUD{ nullptr }; - - [[nodiscard]] static void* operator new(size_t const size_) noexcept = delete; // can't create one outside of a Lua state - [[nodiscard]] static void* operator new(size_t const size_, lua_State* const L_) noexcept { return lua_newuserdatauv(L_, size_, UserValueCount{ 0 }); } - // always embedded somewhere else or "in-place constructed" as a full userdata - // can't actually delete the operator because the compiler generates stack unwinding code that could call it in case of exception - static void operator delete([[maybe_unused]] void* const p_, [[maybe_unused]] lua_State* const L_) {} - - AllocatorDefinition(uintptr_t const version_, lua_Alloc const allocF_, void* const allocUD_) noexcept - : version{ version_ } - , allocF{ allocF_ } - , allocUD{ allocUD_ } - { - } - - // rule of 5 - AllocatorDefinition() = default; - AllocatorDefinition(AllocatorDefinition const& rhs_) = default; - AllocatorDefinition(AllocatorDefinition&& rhs_) = default; - AllocatorDefinition& operator=(AllocatorDefinition const& rhs_) = default; - AllocatorDefinition& operator=(AllocatorDefinition&& rhs_) = default; - - void initFrom(lua_State* const L_) - { - allocF = lua_getallocf(L_, &allocUD); - } - - void* alloc(size_t const nsize_) - { - return allocF(allocUD, nullptr, 0, nsize_); - } - - void free(void* const ptr_, size_t const osize_) - { - std::ignore = allocF(allocUD, ptr_, osize_, 0); - } - }; - -} // namespace lanes diff --git a/src/allocator.hpp b/src/allocator.hpp new file mode 100644 index 0000000..fa48c46 --- /dev/null +++ b/src/allocator.hpp @@ -0,0 +1,55 @@ +#pragma once + +#include "compat.hpp" + +// ################################################################################################# + +namespace lanes { + + // everything we need to provide to lua_newstate() + class AllocatorDefinition + { + public: + // xxh64 of string "kAllocatorVersion_1" generated at https://www.pelock.com/products/hash-calculator + static constexpr uintptr_t kAllocatorVersion{ static_cast(0xCF9D321B0DFB5715ull) }; + uintptr_t version{ kAllocatorVersion }; + lua_Alloc allocF{ nullptr }; + void* allocUD{ nullptr }; + + [[nodiscard]] static void* operator new(size_t const size_) noexcept = delete; // can't create one outside of a Lua state + [[nodiscard]] static void* operator new(size_t const size_, lua_State* const L_) noexcept { return lua_newuserdatauv(L_, size_, UserValueCount{ 0 }); } + // always embedded somewhere else or "in-place constructed" as a full userdata + // can't actually delete the operator because the compiler generates stack unwinding code that could call it in case of exception + static void operator delete([[maybe_unused]] void* const p_, [[maybe_unused]] lua_State* const L_) {} + + AllocatorDefinition(uintptr_t const version_, lua_Alloc const allocF_, void* const allocUD_) noexcept + : version{ version_ } + , allocF{ allocF_ } + , allocUD{ allocUD_ } + { + } + + // rule of 5 + AllocatorDefinition() = default; + AllocatorDefinition(AllocatorDefinition const& rhs_) = default; + AllocatorDefinition(AllocatorDefinition&& rhs_) = default; + AllocatorDefinition& operator=(AllocatorDefinition const& rhs_) = default; + AllocatorDefinition& operator=(AllocatorDefinition&& rhs_) = default; + + void initFrom(lua_State* const L_) + { + allocF = lua_getallocf(L_, &allocUD); + } + + void* alloc(size_t const nsize_) + { + return allocF(allocUD, nullptr, 0, nsize_); + } + + void free(void* const ptr_, size_t const osize_) + { + std::ignore = allocF(allocUD, ptr_, osize_, 0); + } + }; + +} // namespace lanes diff --git a/src/cancel.cpp b/src/cancel.cpp index fda6dd5..2ef5b5c 100644 --- a/src/cancel.cpp +++ b/src/cancel.cpp @@ -33,7 +33,7 @@ THE SOFTWARE. ]]-- */ #include "_pch.hpp" -#include "cancel.h" +#include "cancel.hpp" #include "debugspew.h" #include "lane.h" diff --git a/src/cancel.h b/src/cancel.h deleted file mode 100644 index 7230169..0000000 --- a/src/cancel.h +++ /dev/null @@ -1,60 +0,0 @@ -#pragma once - -#include "macros_and_utils.hpp" -#include "uniquekey.hpp" - -// ################################################################################################# - -// Lane cancellation request modes -enum class CancelRequest -{ - None, // no pending cancel request - // TODO: add a Wake mode: user wants to wake the waiting lindas (in effect resulting in a timeout before the initial operation duration) - Soft, // user wants the lane to cancel itself manually on cancel_test() - Hard // user wants the lane to be interrupted (meaning code won't return from those functions) from inside linda:send/receive calls -}; - -enum class CancelResult -{ - Timeout, - Cancelled -}; - -enum class CancelOp -{ - Invalid = -2, - Hard = -1, - Soft = 0, - MaskCall = LUA_MASKCALL, - MaskRet = LUA_MASKRET, - MaskLine = LUA_MASKLINE, - MaskCount = LUA_MASKCOUNT, - MaskAll = LUA_MASKCALL | LUA_MASKRET | LUA_MASKLINE | LUA_MASKCOUNT -}; - -inline auto operator<=>(CancelOp const a_, CancelOp const b_) -{ - return static_cast>(a_) <=> static_cast>(b_); -} - -// xxh64 of string "kCancelError" generated at https://www.pelock.com/products/hash-calculator -static constexpr UniqueKey kCancelError{ 0x0630345FEF912746ull, "lanes.cancel_error" }; // 'raise_cancel_error' sentinel - -// ################################################################################################# - -[[nodiscard]] CancelRequest CheckCancelRequest(lua_State* L_); -[[nodiscard]] CancelOp WhichCancelOp(std::string_view const& opString_); - -// ################################################################################################# - -[[noreturn]] static inline void raise_cancel_error(lua_State* const L_) -{ - STACK_GROW(L_, 1); - kCancelError.pushKey(L_); // special error value - raise_lua_error(L_); -} - -// ################################################################################################# - -LUAG_FUNC(cancel_test); -LUAG_FUNC(lane_cancel); diff --git a/src/cancel.hpp b/src/cancel.hpp new file mode 100644 index 0000000..7230169 --- /dev/null +++ b/src/cancel.hpp @@ -0,0 +1,60 @@ +#pragma once + +#include "macros_and_utils.hpp" +#include "uniquekey.hpp" + +// ################################################################################################# + +// Lane cancellation request modes +enum class CancelRequest +{ + None, // no pending cancel request + // TODO: add a Wake mode: user wants to wake the waiting lindas (in effect resulting in a timeout before the initial operation duration) + Soft, // user wants the lane to cancel itself manually on cancel_test() + Hard // user wants the lane to be interrupted (meaning code won't return from those functions) from inside linda:send/receive calls +}; + +enum class CancelResult +{ + Timeout, + Cancelled +}; + +enum class CancelOp +{ + Invalid = -2, + Hard = -1, + Soft = 0, + MaskCall = LUA_MASKCALL, + MaskRet = LUA_MASKRET, + MaskLine = LUA_MASKLINE, + MaskCount = LUA_MASKCOUNT, + MaskAll = LUA_MASKCALL | LUA_MASKRET | LUA_MASKLINE | LUA_MASKCOUNT +}; + +inline auto operator<=>(CancelOp const a_, CancelOp const b_) +{ + return static_cast>(a_) <=> static_cast>(b_); +} + +// xxh64 of string "kCancelError" generated at https://www.pelock.com/products/hash-calculator +static constexpr UniqueKey kCancelError{ 0x0630345FEF912746ull, "lanes.cancel_error" }; // 'raise_cancel_error' sentinel + +// ################################################################################################# + +[[nodiscard]] CancelRequest CheckCancelRequest(lua_State* L_); +[[nodiscard]] CancelOp WhichCancelOp(std::string_view const& opString_); + +// ################################################################################################# + +[[noreturn]] static inline void raise_cancel_error(lua_State* const L_) +{ + STACK_GROW(L_, 1); + kCancelError.pushKey(L_); // special error value + raise_lua_error(L_); +} + +// ################################################################################################# + +LUAG_FUNC(cancel_test); +LUAG_FUNC(lane_cancel); diff --git a/src/deep.cpp b/src/deep.cpp index 10d5fd5..9d5b839 100644 --- a/src/deep.cpp +++ b/src/deep.cpp @@ -34,7 +34,7 @@ THE SOFTWARE. #include "_pch.hpp" #include "deep.hpp" -#include "tools.h" +#include "tools.hpp" /*-- Metatable copying --*/ diff --git a/src/intercopycontext.cpp b/src/intercopycontext.cpp index 073daff..a5e2a64 100644 --- a/src/intercopycontext.cpp +++ b/src/intercopycontext.cpp @@ -28,7 +28,7 @@ THE SOFTWARE. #include "debugspew.h" #include "deep.hpp" -#include "keeper.h" +#include "keeper.hpp" #include "lane.h" #include "linda.h" #include "nameof.h" diff --git a/src/intercopycontext.h b/src/intercopycontext.h index 3a5db36..2b247d2 100644 --- a/src/intercopycontext.h +++ b/src/intercopycontext.h @@ -1,6 +1,6 @@ #pragma once -#include "tools.h" +#include "tools.hpp" // forwards class Universe; diff --git a/src/keeper.cpp b/src/keeper.cpp index 517bd1c..67c5a38 100644 --- a/src/keeper.cpp +++ b/src/keeper.cpp @@ -38,7 +38,7 @@ ]]-- */ #include "_pch.hpp" -#include "keeper.h" +#include "keeper.hpp" #include "intercopycontext.h" #include "lane.h" diff --git a/src/keeper.h b/src/keeper.h deleted file mode 100644 index 2354c2e..0000000 --- a/src/keeper.h +++ /dev/null @@ -1,90 +0,0 @@ -#pragma once - -#include "uniquekey.hpp" - -// forwards -class Linda; -enum class LookupMode; -class Universe; - -DECLARE_UNIQUE_TYPE(KeeperState,lua_State*); -DECLARE_UNIQUE_TYPE(LindaLimit, int); -DECLARE_UNIQUE_TYPE(KeeperIndex, int); - -// ################################################################################################# - -struct Keeper -{ - std::mutex mutex; - KeeperState K{ static_cast(nullptr) }; - - [[nodiscard]] static void* operator new[](size_t size_, Universe* U_) noexcept; - // can't actually delete the operator because the compiler generates stack unwinding code that could call it in case of exception - static void operator delete[](void* p_, Universe* U_); - - - ~Keeper() = default; - Keeper() = default; - // non-copyable, non-movable - Keeper(Keeper const&) = delete; - Keeper(Keeper const&&) = delete; - Keeper& operator=(Keeper const&) = delete; - Keeper& operator=(Keeper const&&) = delete; - - [[nodiscard]] static int PushLindaStorage(Linda& linda_, DestState L_); -}; - -// ################################################################################################# - -struct Keepers -{ - private: - struct DeleteKV - { - Universe* U{}; - size_t count{}; - void operator()(Keeper* k_) const; - }; - // can't use std::vector because Keeper contains a mutex, so we need a raw memory buffer - struct KV - { - std::unique_ptr keepers; - size_t nbKeepers{}; - }; - std::variant keeper_array; - std::atomic_flag isClosing; - - public: - int gc_threshold{ 0 }; - - public: - // can only be instanced as a data member - static void* operator new(size_t size_) = delete; - - Keepers() = default; - void close(); - [[nodiscard]] Keeper* getKeeper(KeeperIndex idx_); - [[nodiscard]] int getNbKeepers() const; - void initialize(Universe& U_, lua_State* L_, size_t nbKeepers_, int gc_threshold_); -}; - -// ################################################################################################# - -// xxh64 of string "kNilSentinel" generated at https://www.pelock.com/products/hash-calculator -static constexpr UniqueKey kNilSentinel{ 0xC457D4EDDB05B5E4ull, "lanes.null" }; - -using keeper_api_t = lua_CFunction; -#define KEEPER_API(_op) keepercall_##_op - -// lua_Cfunctions to run inside a keeper state -[[nodiscard]] int keepercall_count(lua_State* L_); -[[nodiscard]] int keepercall_destruct(lua_State* L_); -[[nodiscard]] int keepercall_get(lua_State* L_); -[[nodiscard]] int keepercall_limit(lua_State* L_); -[[nodiscard]] int keepercall_receive(lua_State* L_); -[[nodiscard]] int keepercall_receive_batched(lua_State* L_); -[[nodiscard]] int keepercall_send(lua_State* L_); -[[nodiscard]] int keepercall_set(lua_State* L_); - -DECLARE_UNIQUE_TYPE(KeeperCallResult, std::optional); -[[nodiscard]] KeeperCallResult keeper_call(KeeperState K_, keeper_api_t func_, lua_State* L_, Linda* linda_, StackIndex starting_index_); diff --git a/src/keeper.hpp b/src/keeper.hpp new file mode 100644 index 0000000..2354c2e --- /dev/null +++ b/src/keeper.hpp @@ -0,0 +1,90 @@ +#pragma once + +#include "uniquekey.hpp" + +// forwards +class Linda; +enum class LookupMode; +class Universe; + +DECLARE_UNIQUE_TYPE(KeeperState,lua_State*); +DECLARE_UNIQUE_TYPE(LindaLimit, int); +DECLARE_UNIQUE_TYPE(KeeperIndex, int); + +// ################################################################################################# + +struct Keeper +{ + std::mutex mutex; + KeeperState K{ static_cast(nullptr) }; + + [[nodiscard]] static void* operator new[](size_t size_, Universe* U_) noexcept; + // can't actually delete the operator because the compiler generates stack unwinding code that could call it in case of exception + static void operator delete[](void* p_, Universe* U_); + + + ~Keeper() = default; + Keeper() = default; + // non-copyable, non-movable + Keeper(Keeper const&) = delete; + Keeper(Keeper const&&) = delete; + Keeper& operator=(Keeper const&) = delete; + Keeper& operator=(Keeper const&&) = delete; + + [[nodiscard]] static int PushLindaStorage(Linda& linda_, DestState L_); +}; + +// ################################################################################################# + +struct Keepers +{ + private: + struct DeleteKV + { + Universe* U{}; + size_t count{}; + void operator()(Keeper* k_) const; + }; + // can't use std::vector because Keeper contains a mutex, so we need a raw memory buffer + struct KV + { + std::unique_ptr keepers; + size_t nbKeepers{}; + }; + std::variant keeper_array; + std::atomic_flag isClosing; + + public: + int gc_threshold{ 0 }; + + public: + // can only be instanced as a data member + static void* operator new(size_t size_) = delete; + + Keepers() = default; + void close(); + [[nodiscard]] Keeper* getKeeper(KeeperIndex idx_); + [[nodiscard]] int getNbKeepers() const; + void initialize(Universe& U_, lua_State* L_, size_t nbKeepers_, int gc_threshold_); +}; + +// ################################################################################################# + +// xxh64 of string "kNilSentinel" generated at https://www.pelock.com/products/hash-calculator +static constexpr UniqueKey kNilSentinel{ 0xC457D4EDDB05B5E4ull, "lanes.null" }; + +using keeper_api_t = lua_CFunction; +#define KEEPER_API(_op) keepercall_##_op + +// lua_Cfunctions to run inside a keeper state +[[nodiscard]] int keepercall_count(lua_State* L_); +[[nodiscard]] int keepercall_destruct(lua_State* L_); +[[nodiscard]] int keepercall_get(lua_State* L_); +[[nodiscard]] int keepercall_limit(lua_State* L_); +[[nodiscard]] int keepercall_receive(lua_State* L_); +[[nodiscard]] int keepercall_receive_batched(lua_State* L_); +[[nodiscard]] int keepercall_send(lua_State* L_); +[[nodiscard]] int keepercall_set(lua_State* L_); + +DECLARE_UNIQUE_TYPE(KeeperCallResult, std::optional); +[[nodiscard]] KeeperCallResult keeper_call(KeeperState K_, keeper_api_t func_, lua_State* L_, Linda* linda_, StackIndex starting_index_); diff --git a/src/lane.cpp b/src/lane.cpp index 3a22a79..0456d98 100644 --- a/src/lane.cpp +++ b/src/lane.cpp @@ -29,7 +29,7 @@ THE SOFTWARE. #include "debugspew.h" #include "intercopycontext.h" #include "threading.h" -#include "tools.h" +#include "tools.hpp" // ################################################################################################# diff --git a/src/lane.h b/src/lane.h index ead8379..f30a756 100644 --- a/src/lane.h +++ b/src/lane.h @@ -1,6 +1,6 @@ #pragma once -#include "cancel.h" +#include "cancel.hpp" #include "uniquekey.hpp" #include "universe.h" diff --git a/src/lanes.cpp b/src/lanes.cpp index 5271a3c..5fcb9a4 100644 --- a/src/lanes.cpp +++ b/src/lanes.cpp @@ -84,12 +84,12 @@ THE SOFTWARE. #include "deep.hpp" #include "intercopycontext.h" -#include "keeper.h" +#include "keeper.hpp" #include "lane.h" #include "nameof.h" #include "state.h" #include "threading.h" -#include "tools.h" +#include "tools.hpp" #if !(defined(PLATFORM_XBOX) || defined(PLATFORM_WIN32) || defined(PLATFORM_POCKETPC)) #include diff --git a/src/linda.cpp b/src/linda.cpp index aeca8d6..753e761 100644 --- a/src/linda.cpp +++ b/src/linda.cpp @@ -35,7 +35,7 @@ THE SOFTWARE. #include "lane.h" #include "lindafactory.h" -#include "tools.h" +#include "tools.hpp" // ################################################################################################# // ################################################################################################# diff --git a/src/linda.h b/src/linda.h index 583089d..88ee639 100644 --- a/src/linda.h +++ b/src/linda.h @@ -1,6 +1,6 @@ #pragma once -#include "cancel.h" +#include "cancel.hpp" #include "deep.hpp" #include "universe.h" diff --git a/src/nameof.cpp b/src/nameof.cpp index 1e2752d..496f9d9 100644 --- a/src/nameof.cpp +++ b/src/nameof.cpp @@ -27,7 +27,7 @@ THE SOFTWARE. #include "_pch.hpp" #include "nameof.h" -#include "tools.h" +#include "tools.hpp" // ################################################################################################# diff --git a/src/state.cpp b/src/state.cpp index cf28e2c..dabdd6f 100644 --- a/src/state.cpp +++ b/src/state.cpp @@ -37,7 +37,7 @@ THE SOFTWARE. #include "intercopycontext.h" #include "lane.h" #include "lanes.hpp" -#include "tools.h" +#include "tools.hpp" #include "universe.h" // ################################################################################################# diff --git a/src/tools.cpp b/src/tools.cpp index 80a9f0b..35a46e9 100644 --- a/src/tools.cpp +++ b/src/tools.cpp @@ -33,7 +33,7 @@ THE SOFTWARE. */ #include "_pch.hpp" -#include "tools.h" +#include "tools.hpp" #include "debugspew.h" #include "universe.h" diff --git a/src/tools.h b/src/tools.h deleted file mode 100644 index c587500..0000000 --- a/src/tools.h +++ /dev/null @@ -1,37 +0,0 @@ -#pragma once - -#include "uniquekey.hpp" - -class Universe; - -enum class LookupMode -{ - LaneBody, // send the lane body directly from the source to the destination lane. keep this one first so that it's the value we get when we default-construct - ToKeeper, // send a function from a lane to a keeper state - FromKeeper // send a function from a keeper state to a lane -}; - -enum class FuncSubType -{ - Bytecode, - Native, - FastJIT -}; - -[[nodiscard]] FuncSubType luaG_getfuncsubtype(lua_State* L_, StackIndex i_); - -// ################################################################################################# - -// xxh64 of string "kConfigRegKey" generated at https://www.pelock.com/products/hash-calculator -static constexpr RegistryUniqueKey kConfigRegKey{ 0x608379D20A398046ull }; // registry key to access the configuration - -// xxh64 of string "kLookupRegKey" generated at https://www.pelock.com/products/hash-calculator -static constexpr RegistryUniqueKey kLookupRegKey{ 0xBF1FC5CF3C6DD47Bull }; // registry key to access the lookup database - -// ################################################################################################# - -namespace tools { - void PopulateFuncLookupTable(lua_State* L_, StackIndex i_, std::string_view const& name_); - [[nodiscard]] std::string_view PushFQN(lua_State* L_, StackIndex t_, int last_); - void SerializeRequire(lua_State* L_); -} // namespace tools diff --git a/src/tools.hpp b/src/tools.hpp new file mode 100644 index 0000000..c587500 --- /dev/null +++ b/src/tools.hpp @@ -0,0 +1,37 @@ +#pragma once + +#include "uniquekey.hpp" + +class Universe; + +enum class LookupMode +{ + LaneBody, // send the lane body directly from the source to the destination lane. keep this one first so that it's the value we get when we default-construct + ToKeeper, // send a function from a lane to a keeper state + FromKeeper // send a function from a keeper state to a lane +}; + +enum class FuncSubType +{ + Bytecode, + Native, + FastJIT +}; + +[[nodiscard]] FuncSubType luaG_getfuncsubtype(lua_State* L_, StackIndex i_); + +// ################################################################################################# + +// xxh64 of string "kConfigRegKey" generated at https://www.pelock.com/products/hash-calculator +static constexpr RegistryUniqueKey kConfigRegKey{ 0x608379D20A398046ull }; // registry key to access the configuration + +// xxh64 of string "kLookupRegKey" generated at https://www.pelock.com/products/hash-calculator +static constexpr RegistryUniqueKey kLookupRegKey{ 0xBF1FC5CF3C6DD47Bull }; // registry key to access the lookup database + +// ################################################################################################# + +namespace tools { + void PopulateFuncLookupTable(lua_State* L_, StackIndex i_, std::string_view const& name_); + [[nodiscard]] std::string_view PushFQN(lua_State* L_, StackIndex t_, int last_); + void SerializeRequire(lua_State* L_); +} // namespace tools diff --git a/src/universe.cpp b/src/universe.cpp index 96ef34d..3f2878f 100644 --- a/src/universe.cpp +++ b/src/universe.cpp @@ -33,7 +33,7 @@ THE SOFTWARE. #include "deep.hpp" #include "intercopycontext.h" -#include "keeper.h" +#include "keeper.hpp" #include "lane.h" #include "state.h" diff --git a/src/universe.h b/src/universe.h index 8a2a471..3959817 100644 --- a/src/universe.h +++ b/src/universe.h @@ -1,7 +1,7 @@ #pragma once -#include "allocator.h" -#include "keeper.h" +#include "allocator.hpp" +#include "keeper.hpp" #include "lanesconf.h" #include "tracker.h" #include "uniquekey.hpp" -- cgit v1.2.3-55-g6feb