#pragma once
#include <type_traits>
#include "rust/cxx.h"
namespace rust::cxxqt1 {
template<typename CXXArguments>
class SignalHandler
{
public:
SignalHandler() = delete;
SignalHandler(const SignalHandler&) = delete;
SignalHandler(SignalHandler&& other)
{
data[0] = std::exchange(other.data[0], nullptr);
data[1] = std::exchange(other.data[1], nullptr);
}
~SignalHandler() noexcept;
template<typename... Arguments>
void operator()(Arguments... args);
private:
void* data[2];
};
}
namespace rust {
template<typename CXXArguments>
struct IsRelocatable<rust::cxxqt1::SignalHandler<CXXArguments>>
: ::std::true_type
{};
}