GA::kit v0.3
G&A's in-house C++ application framework
Loading...
Searching...
No Matches
sigslot::detail Namespace Reference

Namespaces

namespace  mock
 

Classes

struct  cleanable
 
class  copy_on_write
 
union  func_ptr
 
struct  function_traits
 
struct  function_traits< T *, std::enable_if_t< trait::is_func_v< T > > >
 
struct  function_traits< T, std::enable_if_t< trait::has_call_operator_v< T > > >
 
struct  function_traits< T, std::enable_if_t< trait::is_func_v< T > > >
 
struct  function_traits< T, std::enable_if_t< trait::is_pmf_v< T > > >
 
struct  null_mutex
 
struct  object_pointer
 
struct  object_pointer< T *, std::enable_if_t< trait::is_pointer_v< T * > > >
 
struct  object_pointer< T, std::enable_if_t< trait::is_weak_ptr_v< T > > >
 
struct  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  observer_type
 
class  slot
 
class  slot_base
 
class  slot_extended
 
class  slot_pmf
 
class  slot_pmf_extended
 
class  slot_pmf_tracked
 
class  slot_state
 
class  slot_tracked
 
struct  spin_mutex
 

Typedefs

using obj_ptr = const void *
 
template<typename... T>
using slot_ptr = std::shared_ptr< slot_base< T... > >
 

Functions

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

Typedef Documentation

◆ obj_ptr

using sigslot::detail::obj_ptr = typedef const void*

◆ slot_ptr

template<typename... T>
using sigslot::detail::slot_ptr = typedef std::shared_ptr<slot_base<T...> >

Function Documentation

◆ cow_read() [1/2]

template<typename T >
const T & sigslot::detail::cow_read ( const T &  v)

Specializations for thread-safe code path

◆ cow_read() [2/2]

template<typename T >
const T & sigslot::detail::cow_read ( copy_on_write< T > &  v)

◆ cow_write() [1/2]

template<typename T >
T & sigslot::detail::cow_write ( copy_on_write< T > &  v)

◆ cow_write() [2/2]

template<typename T >
T & sigslot::detail::cow_write ( T &  v)

◆ get_function_ptr()

template<typename T >
func_ptr sigslot::detail::get_function_ptr ( const T &  t)

◆ get_object_ptr()

template<typename T >
obj_ptr sigslot::detail::get_object_ptr ( const T &  t)

◆ make_shared()

template<typename B , typename D , typename ... Arg>
std::shared_ptr< B > sigslot::detail::make_shared ( Arg &&...  arg)
inline

std::make_shared instantiates a lot a templates, and makes both compilation time and executable size far bigger than they need to be. We offer a make_shared equivalent that will avoid most instantiations with the following tradeoffs:

  • Not exception safe,
  • Allocates a separate control block, and will thus make the code slower.