GA::kit v0.3
G&A's in-house C++ application framework
Loading...
Searching...
No Matches
sigslot.hpp File Reference
#include <atomic>
#include <memory>
#include <mutex>
#include <type_traits>
#include <utility>
#include <thread>
#include <vector>

Go to the source code of this file.

Classes

struct  sigslot::detail::observer_type
 
struct  sigslot::trait::typelist<... >
 represent a list of types More...
 
struct  sigslot::trait::detail::voider<... >
 
struct  sigslot::trait::detail::has_call_operator< typename, typename >
 
struct  sigslot::trait::detail::has_call_operator< F, void_t< decltype(&std::remove_reference< F >::type::operator())> >
 
struct  sigslot::trait::detail::is_callable< typename, typename, typename, typename >
 
struct  sigslot::trait::detail::is_callable< F, P, typelist< T... >, void_t< decltype(((*std::declval< P >()).*std::declval< F >())(std::declval< T >()...))> >
 
struct  sigslot::trait::detail::is_callable< F, typelist< T... >, void_t< decltype(std::declval< F >()(std::declval< T >()...))> >
 
struct  sigslot::trait::detail::is_weak_ptr< T, typename >
 
struct  sigslot::trait::detail::is_weak_ptr< T, void_t< decltype(std::declval< T >().expired()), decltype(std::declval< T >().lock()), decltype(std::declval< T >().reset())> >
 
struct  sigslot::trait::detail::is_weak_ptr_compatible< T, typename >
 
struct  sigslot::trait::detail::is_weak_ptr_compatible< T, void_t< decltype(to_weak(std::declval< T >()))> >
 
struct  sigslot::detail::mock::a
 
struct  sigslot::detail::mock::b
 
struct  sigslot::detail::mock::c
 
union  sigslot::detail::mock::fun_types
 
union  sigslot::detail::func_ptr
 
struct  sigslot::detail::function_traits< T, typename >
 
struct  sigslot::detail::function_traits< T, std::enable_if_t< trait::is_func_v< T > > >
 
struct  sigslot::detail::function_traits< T *, std::enable_if_t< trait::is_func_v< T > > >
 
struct  sigslot::detail::function_traits< T, std::enable_if_t< trait::is_pmf_v< T > > >
 
struct  sigslot::detail::function_traits< T, std::enable_if_t< trait::has_call_operator_v< T > > >
 
struct  sigslot::detail::object_pointer< T, typename >
 
struct  sigslot::detail::object_pointer< T *, std::enable_if_t< trait::is_pointer_v< T * > > >
 
struct  sigslot::detail::object_pointer< T, std::enable_if_t< trait::is_weak_ptr_v< T > > >
 
struct  sigslot::detail::object_pointer< T, std::enable_if_t<!trait::is_pointer_v< T > &&!trait::is_weak_ptr_v< T > &&trait::is_weak_ptr_compatible_v< T > > >
 
struct  sigslot::detail::null_mutex
 
struct  sigslot::detail::spin_mutex
 
class  sigslot::detail::copy_on_write< T >
 
class  sigslot::detail::slot_state
 
class  sigslot::connection_blocker
 
class  sigslot::connection
 
class  sigslot::scoped_connection
 
struct  sigslot::observer_base< Lockable >
 
struct  sigslot::detail::cleanable
 
class  sigslot::detail::slot_base< Args >
 
class  sigslot::detail::slot< Func, Args >
 
class  sigslot::detail::slot_extended< Func, Args >
 
class  sigslot::detail::slot_pmf< Pmf, Ptr, Args >
 
class  sigslot::detail::slot_pmf_extended< Pmf, Ptr, Args >
 
class  sigslot::detail::slot_tracked< Func, WeakPtr, Args >
 
class  sigslot::detail::slot_pmf_tracked< Pmf, WeakPtr, Args >
 
class  sigslot::signal_base< Lockable, T >
 

Namespaces

namespace  sigslot
 
namespace  sigslot::detail
 
namespace  sigslot::trait
 
namespace  sigslot::trait::detail
 
namespace  sigslot::detail::mock
 

Macros

#define SIGSLOT_MAY_ALIAS
 

Typedefs

template<typename... T>
using sigslot::trait::detail::void_t = typename detail::voider< T... >::type
 
using sigslot::group_id = std::int32_t
 
using sigslot::detail::obj_ptr = const void *
 
using sigslot::observer_st = observer_base< detail::null_mutex >
 
using sigslot::observer = observer_base< std::mutex >
 
template<typename... T>
using sigslot::detail::slot_ptr = std::shared_ptr< slot_base< T... > >
 
template<typename... T>
using sigslot::signal_st = signal_base< detail::null_mutex, T... >
 
template<typename... T>
using sigslot::signal = signal_base< std::mutex, T... >
 

Functions

template<typename T >
std::weak_ptr< T > sigslot::trait::to_weak (std::weak_ptr< T > w)
 
template<typename T >
std::weak_ptr< T > sigslot::trait::to_weak (std::shared_ptr< T > s)
 
template<typename T >
func_ptr sigslot::detail::get_function_ptr (const T &t)
 
template<typename T >
obj_ptr sigslot::detail::get_object_ptr (const T &t)
 
template<typename T >
const T & sigslot::detail::cow_read (const T &v)
 
template<typename T >
const T & sigslot::detail::cow_read (copy_on_write< T > &v)
 
template<typename T >
T & sigslot::detail::cow_write (T &v)
 
template<typename T >
T & sigslot::detail::cow_write (copy_on_write< T > &v)
 
template<typename B , typename D , typename ... Arg>
std::shared_ptr< B > sigslot::detail::make_shared (Arg &&... arg)
 

Variables

template<typename P >
constexpr bool sigslot::trait::is_weak_ptr_compatible_v = detail::is_weak_ptr_compatible<std::decay_t<P>>::value
 determine if a pointer is convertible into a "weak" pointer
 
template<typename L , typename... T>
constexpr bool sigslot::trait::is_callable_v = detail::is_callable<T..., L>::value
 determine if a type T (Callable or Pmf) is callable with supplied arguments
 
template<typename T >
constexpr bool sigslot::trait::is_weak_ptr_v = detail::is_weak_ptr<T>::value
 
template<typename T >
constexpr bool sigslot::trait::has_call_operator_v = detail::has_call_operator<T>::value
 
template<typename T >
constexpr bool sigslot::trait::is_pointer_v = std::is_pointer<T>::value
 
template<typename T >
constexpr bool sigslot::trait::is_func_v = std::is_function<T>::value
 
template<typename T >
constexpr bool sigslot::trait::is_pmf_v = std::is_member_function_pointer<T>::value
 
template<typename T >
constexpr bool sigslot::trait::is_observer_v
 

Macro Definition Documentation

◆ SIGSLOT_MAY_ALIAS

#define SIGSLOT_MAY_ALIAS