summaryrefslogtreecommitdiff
path: root/boost/signals2/detail/slot_call_iterator.hpp
diff options
context:
space:
mode:
authorDongHun Kwak <dh0128.kwak@samsung.com>2016-10-06 10:41:18 +0900
committerDongHun Kwak <dh0128.kwak@samsung.com>2016-10-06 10:43:11 +0900
commitf763a99a501650eff2c60288aa6f10ef916d769e (patch)
tree02af7e13f9a38c888ebf340fe764cbe7dae99da9 /boost/signals2/detail/slot_call_iterator.hpp
parent5cde13f21d36c7224b0e13d11c4b49379ae5210d (diff)
downloadboost-f763a99a501650eff2c60288aa6f10ef916d769e.tar.gz
boost-f763a99a501650eff2c60288aa6f10ef916d769e.tar.bz2
boost-f763a99a501650eff2c60288aa6f10ef916d769e.zip
Imported Upstream version 1.62.0upstream/1.62.0
Change-Id: I9d4c1ddb7b7d8f0069217ecc582700f9fda6dd4c Signed-off-by: DongHun Kwak <dh0128.kwak@samsung.com>
Diffstat (limited to 'boost/signals2/detail/slot_call_iterator.hpp')
-rw-r--r--boost/signals2/detail/slot_call_iterator.hpp18
1 files changed, 10 insertions, 8 deletions
diff --git a/boost/signals2/detail/slot_call_iterator.hpp b/boost/signals2/detail/slot_call_iterator.hpp
index ee8426f474..9fee16ec69 100644
--- a/boost/signals2/detail/slot_call_iterator.hpp
+++ b/boost/signals2/detail/slot_call_iterator.hpp
@@ -14,6 +14,7 @@
#include <boost/assert.hpp>
#include <boost/aligned_storage.hpp>
+#include <boost/core/no_exceptions_support.hpp>
#include <boost/iterator/iterator_facade.hpp>
#include <boost/optional.hpp>
#include <boost/scoped_ptr.hpp>
@@ -38,7 +39,7 @@ namespace boost {
disconnected_slot_count(0),
m_active_slot(0)
{}
-
+
~slot_call_iterator_cache()
{
if(m_active_slot)
@@ -47,9 +48,9 @@ namespace boost {
m_active_slot->dec_slot_refcount(lock);
}
}
-
+
template<typename M>
- void set_active_slot(garbage_collecting_lock<M> &lock,
+ void set_active_slot(garbage_collecting_lock<M> &lock,
connection_body_base *active_slot)
{
if(m_active_slot)
@@ -58,7 +59,7 @@ namespace boost {
if(m_active_slot)
m_active_slot->inc_slot_refcount(lock);
}
-
+
optional<ResultType> result;
typedef auto_buffer<void_shared_ptr_variant, store_n_objects<10> > tracked_ptrs_type;
tracked_ptrs_type tracked_ptrs;
@@ -104,15 +105,16 @@ namespace boost {
dereference() const
{
if (!cache->result) {
- try
+ BOOST_TRY
{
cache->result.reset(cache->f(*iter));
}
- catch(expired_slot &)
+ BOOST_CATCH(expired_slot &)
{
(*iter)->disconnect();
- throw;
+ BOOST_RETHROW
}
+ BOOST_CATCH_END
}
return cache->result.get();
}
@@ -140,7 +142,7 @@ namespace boost {
else
cache->set_active_slot(lock, (*callable_iter).get());
}
-
+
void lock_next_callable() const
{
if(iter == callable_iter)