From edef8e4e981c8bcacf9a611ce6859af5f5c1f2b1 Mon Sep 17 00:00:00 2001 From: Maxime Coste Date: Thu, 31 Jan 2013 18:58:25 +0100 Subject: [PATCH] Remove Set and use unordered_set --- src/buffer.hh | 5 +++-- src/dynamic_selection_list.cc | 16 ++++++++-------- src/editor.cc | 4 ++-- src/event_manager.cc | 8 ++++---- src/event_manager.hh | 5 +++-- src/utils.hh | 36 ----------------------------------- 6 files changed, 20 insertions(+), 54 deletions(-) diff --git a/src/buffer.hh b/src/buffer.hh index 4d8f67b5..e67c5760 100644 --- a/src/buffer.hh +++ b/src/buffer.hh @@ -4,6 +4,7 @@ #include #include #include +#include #include "line_and_column.hh" #include "option_manager.hh" @@ -167,7 +168,7 @@ public: HookManager& hooks() { return m_hooks; } const HookManager& hooks() const { return m_hooks; } - Set& change_listeners() const { return m_change_listeners; } + std::unordered_set& change_listeners() const { return m_change_listeners; } private: friend class BufferIterator; @@ -211,7 +212,7 @@ private: // this is mutable as adding or removing listeners is not muting the // buffer observable state. - mutable Set m_change_listeners; + mutable std::unordered_set m_change_listeners; OptionManager m_options; HookManager m_hooks; diff --git a/src/dynamic_selection_list.cc b/src/dynamic_selection_list.cc index 90067505..a0152341 100644 --- a/src/dynamic_selection_list.cc +++ b/src/dynamic_selection_list.cc @@ -7,19 +7,19 @@ DynamicSelectionList::DynamicSelectionList(const Buffer& buffer, SelectionList selections) : m_buffer(&buffer), SelectionList(std::move(selections)) { - m_buffer->change_listeners().add(this); + m_buffer->change_listeners().insert(this); check_invariant(); } DynamicSelectionList::~DynamicSelectionList() { - m_buffer->change_listeners().remove(this); + m_buffer->change_listeners().erase(this); } DynamicSelectionList::DynamicSelectionList(const DynamicSelectionList& other) : SelectionList(other), m_buffer(other.m_buffer) { - m_buffer->change_listeners().add(this); + m_buffer->change_listeners().insert(this); } DynamicSelectionList& DynamicSelectionList::operator=(const DynamicSelectionList& other) @@ -27,9 +27,9 @@ DynamicSelectionList& DynamicSelectionList::operator=(const DynamicSelectionList SelectionList::operator=((const SelectionList&)other); if (m_buffer != other.m_buffer) { - m_buffer->change_listeners().remove(this); + m_buffer->change_listeners().erase(this); m_buffer = other.m_buffer; - m_buffer->change_listeners().add(this); + m_buffer->change_listeners().insert(this); } check_invariant(); return *this; @@ -38,7 +38,7 @@ DynamicSelectionList& DynamicSelectionList::operator=(const DynamicSelectionList DynamicSelectionList::DynamicSelectionList(DynamicSelectionList&& other) : SelectionList(std::move(other)), m_buffer(other.m_buffer) { - m_buffer->change_listeners().add(this); + m_buffer->change_listeners().insert(this); } DynamicSelectionList& DynamicSelectionList::operator=(DynamicSelectionList&& other) @@ -46,9 +46,9 @@ DynamicSelectionList& DynamicSelectionList::operator=(DynamicSelectionList&& oth SelectionList::operator=(std::move(other)); if (m_buffer != other.m_buffer) { - m_buffer->change_listeners().remove(this); + m_buffer->change_listeners().erase(this); m_buffer = other.m_buffer; - m_buffer->change_listeners().add(this); + m_buffer->change_listeners().insert(this); } check_invariant(); return *this; diff --git a/src/editor.cc b/src/editor.cc index 0a19d5a8..70ac6068 100644 --- a/src/editor.cc +++ b/src/editor.cc @@ -319,10 +319,10 @@ class LastModifiedRangeListener : public BufferChangeListener public: LastModifiedRangeListener(Buffer& buffer) : m_buffer(buffer) - { m_buffer.change_listeners().add(this); } + { m_buffer.change_listeners().insert(this); } ~LastModifiedRangeListener() - { m_buffer.change_listeners().remove(this); } + { m_buffer.change_listeners().erase(this); } void on_insert(const BufferIterator& begin, const BufferIterator& end) { diff --git a/src/event_manager.cc b/src/event_manager.cc index 295bc622..280f4200 100644 --- a/src/event_manager.cc +++ b/src/event_manager.cc @@ -8,23 +8,23 @@ namespace Kakoune FDWatcher::FDWatcher(int fd, Callback callback) : m_fd{fd}, m_callback{std::move(callback)} { - EventManager::instance().m_fd_watchers.add(this); + EventManager::instance().m_fd_watchers.insert(this); } FDWatcher::~FDWatcher() { - EventManager::instance().m_fd_watchers.remove(this); + EventManager::instance().m_fd_watchers.erase(this); } Timer::Timer(TimePoint date, Callback callback) : m_date{date}, m_callback{std::move(callback)} { - EventManager::instance().m_timers.add(this); + EventManager::instance().m_timers.insert(this); } Timer::~Timer() { - EventManager::instance().m_timers.remove(this); + EventManager::instance().m_timers.erase(this); } void Timer::run() diff --git a/src/event_manager.hh b/src/event_manager.hh index fd304a40..788827b8 100644 --- a/src/event_manager.hh +++ b/src/event_manager.hh @@ -4,6 +4,7 @@ #include "utils.hh" #include +#include namespace Kakoune { @@ -62,8 +63,8 @@ public: private: friend class FDWatcher; friend class Timer; - Set m_fd_watchers; - Set m_timers; + std::unordered_set m_fd_watchers; + std::unordered_set m_timers; std::vector m_forced_fd; TimePoint m_last; diff --git a/src/utils.hh b/src/utils.hh index f9e72703..1e20ff34 100644 --- a/src/utils.hh +++ b/src/utils.hh @@ -207,42 +207,6 @@ const T& clamp(const T& val, const T& min, const T& max) return (val < min ? min : (val > max ? max : val)); } -// *** set *** -// generic simple set based on vector - -template -class Set -{ -public: - using iterator = typename std::vector::iterator; - using const_iterator = typename std::vector::const_iterator; - - void add(T value) - { - assert(not contains(m_values, value)); - m_values.push_back(value); - } - - void remove(T value) - { - auto it = find(m_values, value); - assert(it != m_values.end()); - m_values.erase(it); - } - - size_t size() const { return m_values.size(); } - bool empty() const { return m_values.empty(); } - - iterator begin() { return m_values.begin(); } - iterator end() { return m_values.end(); } - - const_iterator begin() const { return m_values.begin(); } - const_iterator end() const { return m_values.end(); } - -private: - std::vector m_values; -}; - } #endif // utils_hh_INCLUDED