[Tizen][AT-SPI] Prefer std::map over std::unordered_map 98/309098/2
authorArtur Świgoń <a.swigon@samsung.com>
Thu, 28 Mar 2024 07:52:13 +0000 (08:52 +0100)
committerArtur Świgoń <a.swigon@samsung.com>
Tue, 9 Apr 2024 08:12:03 +0000 (10:12 +0200)
This data structure is generally preferred due to lower memory usage. A
subsequent patch will move AccessibilityAttributes to the top-level Accessible
class, which begs for such an optimization. All usages of std::unordered_map
have been replaced with std::map for consistency.

Change-Id: I57322c179b63492f1e2c2a228543caa38db42d34

12 files changed:
dali/devel-api/adaptor-framework/accessibility.cpp
dali/devel-api/adaptor-framework/accessibility.h
dali/internal/accessibility/bridge/bridge-accessible.cpp
dali/internal/accessibility/bridge/bridge-accessible.h
dali/internal/accessibility/bridge/bridge-base.h
dali/internal/accessibility/bridge/bridge-collection.cpp
dali/internal/accessibility/bridge/bridge-collection.h
dali/internal/accessibility/bridge/bridge-component.h
dali/internal/accessibility/bridge/bridge-impl.cpp
dali/internal/accessibility/bridge/bridge-object.cpp
dali/internal/accessibility/bridge/bridge-object.h
dali/internal/accessibility/bridge/bridge-value.h

index 221a7ad..804ed61 100644 (file)
@@ -22,8 +22,8 @@
 #include <dali/public-api/object/object-registry.h>
 #include <dali/public-api/object/type-info.h>
 #include <dali/public-api/object/type-registry-helper.h>
+#include <map>
 #include <string_view>
-#include <unordered_map>
 
 // INTERNAL INCLUDES
 #include <dali/devel-api/adaptor-framework/accessibility-bridge.h>
@@ -63,7 +63,7 @@ std::string Accessible::GetLocalizedRoleName() const
 
 std::string Accessible::GetRoleName() const
 {
-  static const std::unordered_map<Role, std::string_view> roleMap{
+  static const std::map<Role, std::string_view> roleMap{
     {Role::INVALID, "invalid"},
     {Role::ACCELERATOR_LABEL, "accelerator label"},
     {Role::ALERT, "alert"},
@@ -253,7 +253,7 @@ AtspiInterfaces Accessible::DoGetInterfaces() const
 
 std::string Accessible::GetInterfaceName(AtspiInterface interface)
 {
-  static const std::unordered_map<AtspiInterface, std::string_view> interfaceMap{
+  static const std::map<AtspiInterface, std::string_view> interfaceMap{
     {AtspiInterface::ACCESSIBLE, "org.a11y.atspi.Accessible"},
     {AtspiInterface::ACTION, "org.a11y.atspi.Action"},
     {AtspiInterface::APPLICATION, "org.a11y.atspi.Application"},
@@ -521,7 +521,7 @@ public:
 
 }; // AdaptorAccessible
 
-using AdaptorAccessiblesType = std::unordered_map<const Dali::RefObject*, std::unique_ptr<AdaptorAccessible> >;
+using AdaptorAccessiblesType = std::map<const Dali::RefObject*, std::unique_ptr<AdaptorAccessible>>;
 
 // Save RefObject from an Actor in Accessible::Get()
 AdaptorAccessiblesType gAdaptorAccessibles;
index 20f8d69..d542e12 100644 (file)
@@ -18,8 +18,8 @@
  */\r
 \r
 // EXTERNAL INCLUDES\r
+#include <map>\r
 #include <string>\r
-#include <unordered_map>\r
 #include <vector>\r
 \r
 // INTERNAL INCLUDES\r
@@ -500,11 +500,11 @@ enum class AtspiEvent
   MAX_COUNT\r
 };\r
 \r
-using AtspiInterfaces   = EnumBitSet<AtspiInterface, AtspiInterface::MAX_COUNT>;\r
-using AtspiEvents       = EnumBitSet<AtspiEvent, AtspiEvent::MAX_COUNT>;\r
-using ReadingInfoTypes  = EnumBitSet<ReadingInfoType, ReadingInfoType::MAX_COUNT>;\r
-using States            = EnumBitSet<State, State::MAX_COUNT>;\r
-using Attributes        = std::unordered_map<std::string, std::string>;\r
+using AtspiInterfaces  = EnumBitSet<AtspiInterface, AtspiInterface::MAX_COUNT>;\r
+using AtspiEvents      = EnumBitSet<AtspiEvent, AtspiEvent::MAX_COUNT>;\r
+using ReadingInfoTypes = EnumBitSet<ReadingInfoType, ReadingInfoType::MAX_COUNT>;\r
+using States           = EnumBitSet<State, State::MAX_COUNT>;\r
+using Attributes       = std::map<std::string, std::string>;\r
 \r
 namespace Internal\r
 {\r
index c57a887..25de371 100644 (file)
@@ -1009,9 +1009,9 @@ DBus::ValueOrError<std::array<uint32_t, 2>> BridgeAccessible::GetStates()
   return FindSelf()->GetStates().GetRawData();
 }
 
-DBus::ValueOrError<std::unordered_map<std::string, std::string>> BridgeAccessible::GetAttributes()
+DBus::ValueOrError<std::map<std::string, std::string>> BridgeAccessible::GetAttributes()
 {
-  std::unordered_map<std::string, std::string> attributes = FindSelf()->GetAttributes();
+  std::map<std::string, std::string> attributes = FindSelf()->GetAttributes();
 
   if(mIsScreenReaderSuppressed)
   {
@@ -1045,7 +1045,7 @@ std::string BridgeAccessible::GetName()
   return FindSelf()->GetName();
 }
 
-DBus::ValueOrError<Accessible*, uint32_t, std::unordered_map<std::string, std::string>> BridgeAccessible::GetDefaultLabelInfo()
+DBus::ValueOrError<Accessible*, uint32_t, std::map<std::string, std::string>> BridgeAccessible::GetDefaultLabelInfo()
 {
   auto* defaultLabel = GetDefaultLabel(FindSelf());
   DALI_ASSERT_DEBUG(defaultLabel);
index 0f8533d..dcc74f8 100644 (file)
@@ -20,8 +20,8 @@
 
 // EXTERNAL INCLUDES
 #include <array>
+#include <map>
 #include <string>
-#include <unordered_map>
 #include <vector>
 
 // INTERNAL INCLUDES
@@ -65,10 +65,10 @@ public:
   };
 
   using ReadingMaterialType = DBus::ValueOrError<
-    std::unordered_map<std::string, std::string>, // attributes
-    std::string,                                  // name
-    std::string,                                  // labeledByName
-    std::string,                                  // textIfceName
+    std::map<std::string, std::string>, // attributes
+    std::string,                        // name
+    std::string,                        // labeledByName
+    std::string,                        // textIfceName
     uint32_t,
     Dali::Accessibility::States,
     std::string,                      // localized name
@@ -96,7 +96,7 @@ public:
     std::string,                                    // role name
     std::string,                                    // name
     std::string,                                    // toolkit name
-    std::unordered_map<std::string, std::string>,   // attributes
+    std::map<std::string, std::string>,             // attributes
     Dali::Accessibility::States,                    // states
     std::tuple<int32_t, int32_t, int32_t, int32_t>, // screen extents
     std::tuple<int32_t, int32_t, int32_t, int32_t>, // window extents
@@ -166,7 +166,7 @@ public:
   /**
    * @copydoc Dali::Accessibility::Accessible::GetAttributes()
    */
-  DBus::ValueOrError<std::unordered_map<std::string, std::string>> GetAttributes();
+  DBus::ValueOrError<std::map<std::string, std::string>> GetAttributes();
 
   /**
    * @copydoc Dali::Accessibility::Accessible::GetInterfacesAsStrings()
@@ -204,7 +204,7 @@ public:
    * @note This is a Tizen only feature not present in upstream ATSPI.
    * Feature can be enabled/disabled for particular context root object by setting value of its accessibility attribute "default_label".
    */
-  DBus::ValueOrError<Dali::Accessibility::Accessible*, uint32_t, std::unordered_map<std::string, std::string>> GetDefaultLabelInfo();
+  DBus::ValueOrError<Dali::Accessibility::Accessible*, uint32_t, std::map<std::string, std::string>> GetDefaultLabelInfo();
 
   /**
    * @brief Gets Reading material information of the self object.
index 60fbb44..8426ce4 100644 (file)
@@ -305,7 +305,7 @@ struct hash<std::pair<CoalescableMessages, Dali::Accessibility::Accessible*>>
  */
 class BridgeBase : public Dali::Accessibility::Bridge, public Dali::ConnectionTracker
 {
-  std::unordered_map<std::pair<CoalescableMessages, Dali::Accessibility::Accessible*>, std::tuple<unsigned int, unsigned int, std::function<void()>>> mCoalescableMessages;
+  std::map<std::pair<CoalescableMessages, Dali::Accessibility::Accessible*>, std::tuple<unsigned int, unsigned int, std::function<void()>>> mCoalescableMessages;
 
   /**
    * @brief Removes all CoalescableMessages using Tick signal.
index 2011130..6c88992 100644 (file)
@@ -20,7 +20,7 @@
 
 // EXTERNAL INCLUDES
 #include <algorithm>
-#include <unordered_set>
+#include <set>
 #include <vector>
 
 using namespace Dali::Accessibility;
@@ -109,7 +109,7 @@ struct BridgeCollection::Comparer
    */
   struct ComparerInterfaces
   {
-    std::unordered_set<std::string> mObject;
+    std::set<std::string> mObject;
     std::vector<std::string>        mRequested;
     Mode                            mMode = Mode::INVALID;
 
@@ -163,9 +163,9 @@ struct BridgeCollection::Comparer
    */
   struct ComparerAttributes
   {
-    std::unordered_map<std::string, std::string> mRequested;
-    std::unordered_map<std::string, std::string> mObject;
-    Mode                                         mMode = Mode::INVALID;
+    std::map<std::string, std::string> mRequested;
+    std::map<std::string, std::string> mObject;
+    Mode                               mMode = Mode::INVALID;
 
     ComparerAttributes(MatchRule* rule)
     : mMode(ConvertToMatchType(std::get<static_cast<std::size_t>(Index::ATTRIBUTES_MATCH_TYPE)>(*rule)))
index 32ea9c1..fb475d1 100644 (file)
@@ -21,7 +21,7 @@
 // EXTERNAL INCLUDES
 #include <array>
 #include <tuple>
-#include <unordered_map>
+#include <map>
 #include <vector>
 
 // INTERNAL INCLUDES
@@ -79,7 +79,7 @@ public:
   using MatchRule = std::tuple<
     std::array<int32_t, 2>,
     int32_t,
-    std::unordered_map<std::string, std::string>,
+    std::map<std::string, std::string>,
     int32_t,
     std::array<int32_t, 4>,
     int32_t,
index ec24f42..350b079 100644 (file)
@@ -22,7 +22,6 @@
 #include <array>
 #include <string>
 #include <tuple>
-#include <unordered_map>
 #include <vector>
 
 // INTERNAL INCLUDES
index 00c60a6..ff92445 100644 (file)
@@ -22,7 +22,7 @@
 #include <dali/integration-api/debug.h>
 #include <dali/public-api/actors/layer.h>
 #include <iostream>
-#include <unordered_map>
+#include <map>
 
 // INTERNAL INCLUDES
 #include <dali/devel-api/adaptor-framework/environment-variable.h>
@@ -77,21 +77,21 @@ class BridgeImpl : public virtual BridgeBase,
                    public BridgeTable,
                    public BridgeTableCell
 {
-  DBus::DBusClient                                              mAccessibilityStatusClient;
-  DBus::DBusClient                                              mRegistryClient;
-  DBus::DBusClient                                              mDirectReadingClient;
-  bool                                                          mIsScreenReaderEnabled = false;
-  bool                                                          mIsEnabled             = false;
-  bool                                                          mIsApplicationRunning  = false;
-  std::unordered_map<int32_t, std::function<void(std::string)>> mDirectReadingCallbacks;
-  Dali::Actor                                                   mHighlightedActor;
-  std::function<void(Dali::Actor)>                              mHighlightClearAction;
-  Dali::CallbackBase*                                           mIdleCallback          = NULL;
-  Dali::Timer                                                   mInitializeTimer;
-  Dali::Timer                                                   mReadIsEnabledTimer;
-  Dali::Timer                                                   mReadScreenReaderEnabledTimer;
-  Dali::Timer                                                   mForceUpTimer;
-  std::string                                                   mPreferredBusName;
+  DBus::DBusClient                                    mAccessibilityStatusClient;
+  DBus::DBusClient                                    mRegistryClient;
+  DBus::DBusClient                                    mDirectReadingClient;
+  bool                                                mIsScreenReaderEnabled = false;
+  bool                                                mIsEnabled             = false;
+  bool                                                mIsApplicationRunning  = false;
+  std::map<int32_t, std::function<void(std::string)>> mDirectReadingCallbacks;
+  Dali::Actor                                         mHighlightedActor;
+  std::function<void(Dali::Actor)>                    mHighlightClearAction;
+  Dali::CallbackBase*                                 mIdleCallback          = NULL;
+  Dali::Timer                                         mInitializeTimer;
+  Dali::Timer                                         mReadIsEnabledTimer;
+  Dali::Timer                                         mReadScreenReaderEnabledTimer;
+  Dali::Timer                                         mForceUpTimer;
+  std::string                                         mPreferredBusName;
 
 public:
   BridgeImpl()
index 78684b0..14088fa 100644 (file)
@@ -22,7 +22,7 @@
 #include <iostream>
 #include <string>
 #include <string_view>
-#include <unordered_map>
+#include <map>
 
 using namespace Dali::Accessibility;
 
@@ -68,7 +68,7 @@ void BridgeObject::EmitActiveDescendantChanged(Accessible* obj, Accessible* chil
 
 void BridgeObject::Emit(Accessible* obj, ObjectPropertyChangeEvent event)
 {
-  static const std::unordered_map<ObjectPropertyChangeEvent, std::string_view> eventMap{
+  static const std::map<ObjectPropertyChangeEvent, std::string_view> eventMap{
     {ObjectPropertyChangeEvent::NAME, "accessible-name"},
     {ObjectPropertyChangeEvent::DESCRIPTION, "accessible-description"},
     {ObjectPropertyChangeEvent::VALUE, "accessible-value"},
@@ -99,7 +99,7 @@ void BridgeObject::Emit(Accessible* obj, ObjectPropertyChangeEvent event)
 
 void BridgeObject::Emit(Accessible* obj, WindowEvent event, unsigned int detail)
 {
-  static const std::unordered_map<WindowEvent, std::string_view> eventMap{
+  static const std::map<WindowEvent, std::string_view> eventMap{
     {WindowEvent::PROPERTY_CHANGE, "PropertyChange"},
     {WindowEvent::MINIMIZE, "Minimize"},
     {WindowEvent::MAXIMIZE, "Maximize"},
@@ -145,7 +145,7 @@ void BridgeObject::Emit(Accessible* obj, WindowEvent event, unsigned int detail)
 
 void BridgeObject::EmitStateChanged(Accessible* obj, State state, int newValue, int reserved)
 {
-  static const std::unordered_map<State, std::string_view> stateMap{
+  static const std::map<State, std::string_view> stateMap{
     {State::INVALID, "invalid"},
     {State::ACTIVE, "active"},
     {State::ARMED, "armed"},
@@ -258,7 +258,7 @@ void BridgeObject::EmitCursorMoved(Accessible* obj, unsigned int cursorPosition)
 
 void BridgeObject::EmitTextChanged(Accessible* obj, TextChangedState state, unsigned int position, unsigned int length, const std::string& content)
 {
-  static const std::unordered_map<TextChangedState, std::string_view> stateMap{
+  static const std::map<TextChangedState, std::string_view> stateMap{
     {TextChangedState::INSERTED, "insert"},
     {TextChangedState::DELETED, "delete"},
   };
index 9784469..48852f1 100644 (file)
@@ -21,7 +21,6 @@
 // EXTERNAL INCLUDES
 #include <array>
 #include <string>
-#include <unordered_map>
 #include <vector>
 
 // INTERNAL INCLUDES
index e2d4d09..1007500 100644 (file)
@@ -22,7 +22,6 @@
 #include <array>
 #include <string>
 #include <tuple>
-#include <unordered_map>
 #include <vector>
 
 // INTERNAL INCLUDES