From 22e91bfacddd42eba81923ea0aa8bee57266c953 Mon Sep 17 00:00:00 2001 From: Peter Johnson Date: Fri, 25 Oct 2024 14:07:54 -0700 Subject: [PATCH] [wpilibc] ShuffleboardInstance: Store ShuffleboardTab by value --- .../cpp/shuffleboard/ShuffleboardInstance.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/wpilibc/src/main/native/cpp/shuffleboard/ShuffleboardInstance.cpp b/wpilibc/src/main/native/cpp/shuffleboard/ShuffleboardInstance.cpp index e443e82e8c..0e216c34d3 100644 --- a/wpilibc/src/main/native/cpp/shuffleboard/ShuffleboardInstance.cpp +++ b/wpilibc/src/main/native/cpp/shuffleboard/ShuffleboardInstance.cpp @@ -18,7 +18,7 @@ using namespace frc::detail; struct ShuffleboardInstance::Impl { - wpi::StringMap> tabs; + wpi::StringMap tabs; bool tabsChanged = false; std::shared_ptr rootTable; @@ -44,25 +44,24 @@ frc::ShuffleboardTab& ShuffleboardInstance::GetTab(std::string_view title) { HAL_Report(HALUsageReporting::kResourceType_Shuffleboard, 0); gReported = true; } - if (m_impl->tabs.find(title) == m_impl->tabs.end()) { - m_impl->tabs.try_emplace(title, - std::make_unique(*this, title)); + auto [it, added] = m_impl->tabs.try_emplace(title, *this, title); + if (added) { m_impl->tabsChanged = true; } - return *m_impl->tabs.find(title)->second; + return it->second; } void ShuffleboardInstance::Update() { if (m_impl->tabsChanged) { wpi::SmallVector tabTitles; for (auto& entry : m_impl->tabs) { - tabTitles.emplace_back(entry.second->GetTitle()); + tabTitles.emplace_back(entry.second.GetTitle()); } m_impl->rootMetaTable->GetEntry("Tabs").SetStringArray(tabTitles); m_impl->tabsChanged = false; } for (auto& entry : m_impl->tabs) { - auto& tab = *entry.second; + auto& tab = entry.second; tab.BuildInto(m_impl->rootTable, m_impl->rootMetaTable->GetSubTable(tab.GetTitle())); } @@ -70,7 +69,7 @@ void ShuffleboardInstance::Update() { void ShuffleboardInstance::EnableActuatorWidgets() { for (auto& entry : m_impl->tabs) { - auto& tab = *entry.second; + auto& tab = entry.second; for (auto& component : tab.GetComponents()) { component->EnableIfActuator(); } @@ -79,7 +78,7 @@ void ShuffleboardInstance::EnableActuatorWidgets() { void ShuffleboardInstance::DisableActuatorWidgets() { for (auto& entry : m_impl->tabs) { - auto& tab = *entry.second; + auto& tab = entry.second; for (auto& component : tab.GetComponents()) { component->DisableIfActuator(); }