[libsigcplusplus] signal_base::insert(): Add and use help method to avoid copy/pasting.



commit d91ca03c31b574c702419af563e023d2aea0bbfc
Author: Murray Cumming <murrayc murrayc com>
Date:   Thu Apr 21 12:38:35 2016 +0200

    signal_base::insert(): Add and use help method to avoid copy/pasting.

 sigc++/signal_base.cc |   13 +++++++++----
 sigc++/signal_base.h  |    2 ++
 2 files changed, 11 insertions(+), 4 deletions(-)
---
diff --git a/sigc++/signal_base.cc b/sigc++/signal_base.cc
index 40e3356..8b3d4d5 100644
--- a/sigc++/signal_base.cc
+++ b/sigc++/signal_base.cc
@@ -139,12 +139,18 @@ signal_impl::erase(iterator_type i)
   return slots_.erase(i);
 }
 
+void
+signal_impl::add_notification_to_iter(const signal_impl::iterator_type& iter)
+{
+  auto si = new self_and_iter(this, iter);
+  iter->set_parent(si, &signal_impl::notify_self_and_iter_invalidated);
+}
+
 signal_impl::iterator_type
 signal_impl::insert(signal_impl::iterator_type i, const slot_base& slot_)
 {
   auto iter = slots_.insert(i, slot_);
-  auto si = new self_and_iter(this, iter);
-  iter->set_parent(si, &notify_self_and_iter_invalidated);
+  add_notification_to_iter(iter);
   return iter;
 }
 
@@ -152,8 +158,7 @@ signal_impl::iterator_type
 signal_impl::insert(signal_impl::iterator_type i, slot_base&& slot_)
 {
   auto iter = slots_.insert(i, std::move(slot_));
-  auto si = new self_and_iter(this, iter);
-  iter->set_parent(si, &notify_self_and_iter_invalidated);
+  add_notification_to_iter(iter);
   return iter;
 }
 
diff --git a/sigc++/signal_base.h b/sigc++/signal_base.h
index d46fd02..43eb20f 100644
--- a/sigc++/signal_base.h
+++ b/sigc++/signal_base.h
@@ -177,6 +177,8 @@ private:
    */
   static void notify_self_and_iter_invalidated(notifiable* d);
 
+  void add_notification_to_iter(const signal_impl::iterator_type& iter);
+
 public:
   /// The list of slots.
   std::list<slot_base> slots_;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]