From d8b3d16554539a08f9878ebce79cac6100a93228 Mon Sep 17 00:00:00 2001 From: Paul Licameli Date: Tue, 9 Jul 2019 16:01:43 -0400 Subject: [PATCH] Make const overload of ClientData::Site::ForEach usable --- src/ClientData.h | 7 ++++++- src/ClientDataHelpers.h | 6 +++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/ClientData.h b/src/ClientData.h index cde53edff..d92358ce5 100644 --- a/src/ClientData.h +++ b/src/ClientData.h @@ -416,7 +416,12 @@ private: { return Locked< DataContainer >{ mData }; } - + + Locked GetData() const + { + return Locked< const DataContainer >{ mData }; + } + static void EnsureIndex( Locked &data, size_t index ) { if (data.mObject.size() <= index) diff --git a/src/ClientDataHelpers.h b/src/ClientDataHelpers.h index 4361ca186..4ab347e91 100644 --- a/src/ClientDataHelpers.h +++ b/src/ClientDataHelpers.h @@ -57,19 +57,19 @@ template< typename Object > struct Lockable< Object, NoLocking > : Object { // implement trivial non-locking policy struct Lock{}; - Lock lock() { return {}; } + Lock lock() const { return {}; } }; template< typename Object > struct Lockable< Object, NonrecursiveLocking > : Object, std::mutex { // implement real locking using Lock = std::unique_lock< std::mutex >; - Lock lock() { return Lock{ *this }; } + Lock lock() const { return Lock{ *this }; } }; template< typename Object > struct Lockable< Object, RecursiveLocking > : Object, std::recursive_mutex { // implement real locking using Lock = std::unique_lock< std::recursive_mutex >; - Lock lock() { return Lock{ *this }; } + Lock lock() const { return Lock{ *this }; } }; // Pairing of a reference to a Lockable and a lock on it