diff --git a/substrate/rwlock b/substrate/rwlock index e3631696..d17bbbbe 100644 --- a/substrate/rwlock +++ b/substrate/rwlock @@ -15,33 +15,39 @@ namespace substrate { template - struct rwlock final { + struct rwlock_t final + { private: template typename lock_t> - struct lock_result final { + struct lockResult_t final + { private: lock_t _lock; - U& _obj; + U &_obj; + public: - constexpr lock_result(std::shared_mutex& mut, U& obj) noexcept : + constexpr lockResult_t(std::shared_mutex &mut, U &obj) noexcept : _lock{mut}, _obj{obj} { } - SUBSTRATE_NO_DISCARD(U* operator->() noexcept { return &_obj; }) - SUBSTRATE_NO_DISCARD(U& operator*() noexcept { return _obj; }) + SUBSTRATE_NO_DISCARD(U *operator ->() noexcept) { return &_obj; } + SUBSTRATE_NO_DISCARD(U &operator *() noexcept) { return _obj; } }; std::shared_mutex _mutex{}; T _obj; + public: template - constexpr rwlock(args_t&&... args) noexcept : + constexpr rwlock_t(args_t &&...args) noexcept : _obj{std::forward(args)...} { } - SUBSTRATE_NO_DISCARD(lock_result read() noexcept { + SUBSTRATE_NO_DISCARD(lockResult_t read() noexcept) + { return {_mutex, _obj}; - }) - SUBSTRATE_NO_DISCARD(lock_result write() noexcept { + } + SUBSTRATE_NO_DISCARD(lockResult_t write() noexcept) + { return {_mutex, _obj}; - }) + } }; }