From 56a3a62001b5e7124c10f6d2feb5a84a6d186f71 Mon Sep 17 00:00:00 2001 From: Matthias Puech Date: Thu, 4 Jul 2024 15:09:26 +0200 Subject: [PATCH] Silence a sign conversion warning --- include/farbot/detail/RealtimeObject.tcc | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/include/farbot/detail/RealtimeObject.tcc b/include/farbot/detail/RealtimeObject.tcc index 7ff7495..296433e 100644 --- a/include/farbot/detail/RealtimeObject.tcc +++ b/include/farbot/detail/RealtimeObject.tcc @@ -183,7 +183,7 @@ public: void realtimeRelease() noexcept { - auto idx = acquireIndex(); + size_t idx = acquireIndex(); data[idx] = realtimeCopy; releaseIndex(idx); } @@ -201,12 +201,12 @@ public: const T& nonRealtimeAcquire() { nonRealtimeLock.lock(); - auto current = control.load(std::memory_order_acquire); + size_t current = control.load(std::memory_order_acquire); // there is new data so flip the indices around atomically ensuring we are not inside realtimeAssign if ((current & NEWDATA_BIT) != 0) { - int newValue; + size_t newValue; do { @@ -250,24 +250,24 @@ private: : data ({T (std::forward (args)...), T (std::forward (args)...)}), realtimeCopy (std::forward (args)...) {} - enum + enum : size_t { - INDEX_BIT = (1 << 0), - BUSY_BIT = (1 << 1), - NEWDATA_BIT = (1 << 2) + INDEX_BIT = (1U << 0), + BUSY_BIT = (1U << 1), + NEWDATA_BIT = (1U << 2) }; - int acquireIndex() noexcept + size_t acquireIndex() noexcept { return control.fetch_or (BUSY_BIT, std::memory_order_acquire) & INDEX_BIT; } - void releaseIndex(int idx) noexcept + void releaseIndex(size_t idx) noexcept { control.store ((idx & INDEX_BIT) | NEWDATA_BIT, std::memory_order_release); } - std::atomic control = {0}; + std::atomic control = {0}; std::array data; T realtimeCopy;