14#ifndef ZYPP_NG_BASE_BASE_H_INCLUDED 
   15#define ZYPP_NG_BASE_BASE_H_INCLUDED 
   20#include <unordered_set> 
   30    template <
typename Func>
 
   33    template <
typename BType, 
typename Ret, 
typename ...Args >
 
 
   65    using Ptr = std::shared_ptr<Base>;
 
   91    const std::unordered_set<Ptr> &
children() 
const;
 
  103      std::vector< std::weak_ptr<T> > result;
 
  105        std::shared_ptr<T> casted = std::dynamic_pointer_cast<T>(p);
 
  107          result.push_back( std::weak_ptr<T>(casted) );
 
 
  114      return std::static_pointer_cast<T>( shared_from_this() );
 
 
  119      return std::static_pointer_cast<T>( shared_from_this() );
 
 
  124      return std::static_pointer_cast<T>( weak_from_this().lock() );
 
 
  129      return std::static_pointer_cast<T>( weak_from_this().lock() );
 
 
  132    template<
typename Obj, 
typename Functor >
 
  141    template< 
typename SenderFunc, 
typename ReceiverFunc >
 
  143      return std::invoke( std::forward<SenderFunc>(sFun), &s ).connect( 
make_base_slot( &recv, std::forward<ReceiverFunc>(rFunc) ) );
 
 
  153    template< 
typename SenderFunc, 
typename ReceiverFunc >
 
  162    template< 
typename SenderFunc, 
typename ReceiverFunc, 
typename ...Tracker >
 
  167    template< 
typename SenderFunc, 
typename ReceiverFunc, 
typename ...Tracker  >
 
 
  178  template<
typename Obj, 
typename Functor,
 
  186  template<
typename Obj, 
typename Functor,
 
std::weak_ptr< T > weak_this()
void removeChild(const Ptr &child)
std::enable_if_t< std::is_member_function_pointer_v< SenderFunc >, connection > connectFunc(SenderFunc &&sFun, ReceiverFunc &&rFunc, const Tracker &...trackers)
std::shared_ptr< T > shared_this() const
std::thread::id threadId() const
std::vector< std::weak_ptr< T > > findChildren() const
std::shared_ptr< T > shared_this()
std::weak_ptr< Base > WeakPtr
static auto connectFunc(typename internal::MemberFunction< SenderFunc >::ClassType &s, SenderFunc &&sFun, ReceiverFunc &&rFunc, const Tracker &...trackers)
const std::unordered_set< Ptr > & children() const
void addChild(const Base::Ptr &child)
static decltype(auto) make_base_slot(Obj *o, Functor &&f)
std::shared_ptr< Base > Ptr
static auto connect(typename internal::MemberFunction< SenderFunc >::ClassType &s, SenderFunc &&sFun, typename internal::MemberFunction< ReceiverFunc >::ClassType &recv, ReceiverFunc &&rFunc)
std::weak_ptr< T > weak_this() const
auto connect(SenderFunc &&sFun, typename internal::MemberFunction< ReceiverFunc >::ClassType &recv, ReceiverFunc &&rFunc)
std::unique_ptr< BasePrivate > d_ptr
typename enable_if< B, T >::type enable_if_t
constexpr bool is_base_of_v
std::enable_if< std::is_member_pointer< typenamestd::decay< Functor >::type >::value, typenamestd::result_of< Functor &&(Args &&...)>::type >::type invoke(Functor &&f, Args &&... args)
decltype(auto) locking_fun(const Functor &f, const Obj &... o)
constexpr bool is_base_receiver
sigc::connection connection
decltype(auto) base_slot(Obj *o, Functor &&f)
#define ZYPP_DECLARE_PRIVATE(Class)
#define LIBZYPP_NG_EXPORT