diff --git a/AK/Forward.h b/AK/Forward.h index 45d2507958..cdd779ed1d 100644 --- a/AK/Forward.h +++ b/AK/Forward.h @@ -78,7 +78,7 @@ using OrderedHashTable = HashTable; template, bool IsOrdered = false> class HashMap; -template +template> using OrderedHashMap = HashMap; template diff --git a/AK/JsonObject.h b/AK/JsonObject.h index 9aa5bc83cd..62c9393b4f 100644 --- a/AK/JsonObject.h +++ b/AK/JsonObject.h @@ -21,32 +21,26 @@ public: ~JsonObject() = default; JsonObject(JsonObject const& other) - : m_order(other.m_order) - , m_members(other.m_members) + : m_members(other.m_members) { } JsonObject(JsonObject&& other) - : m_order(move(other.m_order)) - , m_members(move(other.m_members)) + : m_members(move(other.m_members)) { } JsonObject& operator=(JsonObject const& other) { - if (this != &other) { + if (this != &other) m_members = other.m_members; - m_order = other.m_order; - } return *this; } JsonObject& operator=(JsonObject&& other) { - if (this != &other) { + if (this != &other) m_members = move(other.m_members); - m_order = move(other.m_order); - } return *this; } @@ -80,27 +74,19 @@ public: void set(String const& key, JsonValue value) { - if (m_members.set(key, move(value)) == HashSetResult::ReplacedExistingEntry) - m_order.remove(m_order.find_first_index(key).value()); - m_order.append(key); + m_members.set(key, move(value)); } template void for_each_member(Callback callback) const { - for (size_t i = 0; i < m_order.size(); ++i) { - auto property = m_order[i]; - callback(property, m_members.get(property).value()); - } + for (auto& member : m_members) + callback(member.key, member.value); } bool remove(String const& key) { - if (m_members.remove(key)) { - m_order.remove(m_order.find_first_index(key).value()); - return true; - } - return false; + return m_members.remove(key); } template @@ -112,8 +98,7 @@ public: String to_string() const { return serialized(); } private: - Vector m_order; - HashMap m_members; + OrderedHashMap m_members; }; template diff --git a/Userland/Applications/Spreadsheet/Spreadsheet.cpp b/Userland/Applications/Spreadsheet/Spreadsheet.cpp index 9168bda722..fa6b81ae72 100644 --- a/Userland/Applications/Spreadsheet/Spreadsheet.cpp +++ b/Userland/Applications/Spreadsheet/Spreadsheet.cpp @@ -376,7 +376,7 @@ RefPtr Sheet::from_json(const JsonObject& object, Workbook& workbook) format.background_color = Color::from_string(value.as_string()); }; - cells.for_each_member([&](auto& name, JsonValue& value) { + cells.for_each_member([&](auto& name, JsonValue const& value) { auto position_option = sheet->parse_cell_name(name); if (!position_option.has_value()) return IterationDecision::Continue;