#include "idescriptor_rust_codebase/src/hause_arrest.cxxqt.h"


// Define namespace otherwise we hit a GCC bug
// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56480
namespace rust::cxxqt1 {
template <>
SignalHandler<::CXX::rust::cxxqtgen1::HauseArrestCxxQtSignalParamsinit_session_finished *>::~SignalHandler() noexcept
{
    if (data[0] == nullptr && data[1] == nullptr)
    {
        return;
    }

    drop_HauseArrest_signal_handler_init_session_finished(::std::move(*this));
}

template <>
template <>
void SignalHandler<::CXX::rust::cxxqtgen1::HauseArrestCxxQtSignalParamsinit_session_finished *>::operator()<CXX::HauseArrest&, bool>(CXX::HauseArrest& self, bool success)
{
    call_HauseArrest_signal_handler_init_session_finished(*this, self, ::std::move(success));
}

static_assert(alignof(SignalHandler<::CXX::rust::cxxqtgen1::HauseArrestCxxQtSignalParamsinit_session_finished *>) <= alignof(::std::size_t), "unexpected aligment");
static_assert(sizeof(SignalHandler<::CXX::rust::cxxqtgen1::HauseArrestCxxQtSignalParamsinit_session_finished *>) == sizeof(::std::size_t[2]), "unexpected size");
} // namespace rust::cxxqt1

namespace CXX::rust::cxxqtgen1 {
::QMetaObject::Connection
HauseArrest_init_session_finishedConnect(CXX::HauseArrest& self, ::CXX::rust::cxxqtgen1::HauseArrestCxxQtSignalHandlerinit_session_finished closure, ::Qt::ConnectionType type)
{
    return ::QObject::connect(
        &self,
        &CXX::HauseArrest::init_session_finished,
        &self,
        [&, closure = ::std::move(closure)](bool success) mutable {
            closure.template operator()<CXX::HauseArrest&, bool>(self, ::std::move(success));
        },
        type);
}
} // namespace CXX::rust::cxxqtgen1

// Define namespace otherwise we hit a GCC bug
// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56480
namespace rust::cxxqt1 {
template <>
SignalHandler<::CXX::rust::cxxqtgen1::HauseArrestCxxQtSignalParamscheck_is_dir_and_list_finished *>::~SignalHandler() noexcept
{
    if (data[0] == nullptr && data[1] == nullptr)
    {
        return;
    }

    drop_HauseArrest_signal_handler_check_is_dir_and_list_finished(::std::move(*this));
}

template <>
template <>
void SignalHandler<::CXX::rust::cxxqtgen1::HauseArrestCxxQtSignalParamscheck_is_dir_and_list_finished *>::operator()<CXX::HauseArrest&, bool, QMap_QString_QVariant const&>(CXX::HauseArrest& self, bool success, QMap_QString_QVariant const& entries)
{
    call_HauseArrest_signal_handler_check_is_dir_and_list_finished(*this, self, ::std::move(success), ::std::move(entries));
}

static_assert(alignof(SignalHandler<::CXX::rust::cxxqtgen1::HauseArrestCxxQtSignalParamscheck_is_dir_and_list_finished *>) <= alignof(::std::size_t), "unexpected aligment");
static_assert(sizeof(SignalHandler<::CXX::rust::cxxqtgen1::HauseArrestCxxQtSignalParamscheck_is_dir_and_list_finished *>) == sizeof(::std::size_t[2]), "unexpected size");
} // namespace rust::cxxqt1

namespace CXX::rust::cxxqtgen1 {
::QMetaObject::Connection
HauseArrest_check_is_dir_and_list_finishedConnect(CXX::HauseArrest& self, ::CXX::rust::cxxqtgen1::HauseArrestCxxQtSignalHandlercheck_is_dir_and_list_finished closure, ::Qt::ConnectionType type)
{
    return ::QObject::connect(
        &self,
        &CXX::HauseArrest::check_is_dir_and_list_finished,
        &self,
        [&, closure = ::std::move(closure)](bool success, QMap_QString_QVariant const& entries) mutable {
            closure.template operator()<CXX::HauseArrest&, bool, QMap_QString_QVariant const&>(self, ::std::move(success), ::std::move(entries));
        },
        type);
}
} // namespace CXX::rust::cxxqtgen1

namespace CXX {
static_assert(alignof(HauseArrestCxxQtThread) <= alignof(::std::size_t), "unexpected aligment");
static_assert(sizeof(HauseArrestCxxQtThread) == sizeof(::std::size_t[2]), "unexpected size");

HauseArrest::HauseArrest(QString arg0, QString arg1)
  : HauseArrest(::CXX::cxx_qt_HauseArrest::routeArguments0(::std::move(arg0), ::std::move(arg1)))
{ }

HauseArrest::HauseArrest(::CXX::cxx_qt_HauseArrest::CxxQtConstructorArguments0&& args)
  : QObject()
  , ::rust::cxxqt1::CxxQtType<RHauseArrestBackend>(::CXX::cxx_qt_HauseArrest::newRs0(::std::move(args.new_)))
  , ::rust::cxxqt1::CxxQtThreading<HauseArrest>(this)
{
  ::CXX::cxx_qt_HauseArrest::initialize0(*this, ::std::move(args.initialize));
}

} // namespace CXX

