use num_derive::FromPrimitive;
#[repr(u8)]
#[derive(FromPrimitive)]
#[allow(missing_docs)]
pub enum Signal {
    ZERO = 0,
    SIGHUP = 1,
    SIGINT = 2,
    SIGQUIT = 3,
    SIGILL = 4,
    SIGTRAP = 5,
    SIGABRT = 6,
    SIGEMT = 7,
    SIGFPE = 8,
    SIGKILL = 9,
    SIGBUS = 10,
    SIGSEGV = 11,
    SIGSYS = 12,
    SIGPIPE = 13,
    SIGALRM = 14,
    SIGTERM = 15,
    SIGURG = 16,
    SIGSTOP = 17,
    SIGTSTP = 18,
    SIGCONT = 19,
    SIGCHLD = 20,
    SIGTTIN = 21,
    SIGTTOU = 22,
    SIGIO = 23,
    SIGXCPU = 24,
    SIGXFSZ = 25,
    SIGVTALRM = 26,
    SIGPROF = 27,
    SIGWINCH = 28,
    SIGLOST = 29,
    SIGUSR1 = 30,
    SIGUSR2 = 31,
    SIGPWR = 32,
    SIGPOLL = 33,
    SIGWIND = 34,
    SIGPHONE = 35,
    SIGWAITING = 36,
    SIGLWP = 37,
    SIGDANGER = 38,
    SIGGRANT = 39,
    SIGRETRACT = 40,
    SIGMSG = 41,
    SIGSOUND = 42,
    SIGSAK = 43,
    SIGPRIO = 44,
    SIG33 = 45,
    SIG34 = 46,
    SIG35 = 47,
    SIG36 = 48,
    SIG37 = 49,
    SIG38 = 50,
    SIG39 = 51,
    SIG40 = 52,
    SIG41 = 53,
    SIG42 = 54,
    SIG43 = 55,
    SIG44 = 56,
    SIG45 = 57,
    SIG46 = 58,
    SIG47 = 59,
    SIG48 = 60,
    SIG49 = 61,
    SIG50 = 62,
    SIG51 = 63,
    SIG52 = 64,
    SIG53 = 65,
    SIG54 = 66,
    SIG55 = 67,
    SIG56 = 68,
    SIG57 = 69,
    SIG58 = 70,
    SIG59 = 71,
    SIG60 = 72,
    SIG61 = 73,
    SIG62 = 74,
    SIG63 = 75,
    SIGCANCEL = 76,
    SIG32 = 77,
    SIG64 = 78,
    SIG65 = 79,
    SIG66 = 80,
    SIG67 = 81,
    SIG68 = 82,
    SIG69 = 83,
    SIG70 = 84,
    SIG71 = 85,
    SIG72 = 86,
    SIG73 = 87,
    SIG74 = 88,
    SIG75 = 89,
    SIG76 = 90,
    SIG77 = 91,
    SIG78 = 92,
    SIG79 = 93,
    SIG80 = 94,
    SIG81 = 95,
    SIG82 = 96,
    SIG83 = 97,
    SIG84 = 98,
    SIG85 = 99,
    SIG86 = 100,
    SIG87 = 101,
    SIG88 = 102,
    SIG89 = 103,
    SIG90 = 104,
    SIG91 = 105,
    SIG92 = 106,
    SIG93 = 107,
    SIG94 = 108,
    SIG95 = 109,
    SIG96 = 110,
    SIG97 = 111,
    SIG98 = 112,
    SIG99 = 113,
    SIG100 = 114,
    SIG101 = 115,
    SIG102 = 116,
    SIG103 = 117,
    SIG104 = 118,
    SIG105 = 119,
    SIG106 = 120,
    SIG107 = 121,
    SIG108 = 122,
    SIG109 = 123,
    SIG110 = 124,
    SIG111 = 125,
    SIG112 = 126,
    SIG113 = 127,
    SIG114 = 128,
    SIG115 = 129,
    SIG116 = 130,
    SIG117 = 131,
    SIG118 = 132,
    SIG119 = 133,
    SIG120 = 134,
    SIG121 = 135,
    SIG122 = 136,
    SIG123 = 137,
    SIG124 = 138,
    SIG125 = 139,
    SIG126 = 140,
    SIG127 = 141,
}
impl Signal {
    #[cfg(feature = "libc")]
    pub fn from_libc(sig: libc::c_int) -> Option<Self> {
        match sig {
            libc::SIGHUP => Some(Self::SIGHUP),
            libc::SIGINT => Some(Self::SIGINT),
            libc::SIGQUIT => Some(Self::SIGQUIT),
            libc::SIGILL => Some(Self::SIGILL),
            libc::SIGTRAP => Some(Self::SIGTRAP),
            libc::SIGABRT => Some(Self::SIGABRT),
            libc::SIGFPE => Some(Self::SIGFPE),
            libc::SIGKILL => Some(Self::SIGKILL),
            libc::SIGBUS => Some(Self::SIGBUS),
            libc::SIGSEGV => Some(Self::SIGSEGV),
            libc::SIGSYS => Some(Self::SIGSYS),
            libc::SIGPIPE => Some(Self::SIGPIPE),
            libc::SIGALRM => Some(Self::SIGALRM),
            libc::SIGTERM => Some(Self::SIGTERM),
            libc::SIGURG => Some(Self::SIGURG),
            libc::SIGSTOP => Some(Self::SIGSTOP),
            libc::SIGTSTP => Some(Self::SIGTSTP),
            libc::SIGCONT => Some(Self::SIGCONT),
            libc::SIGCHLD => Some(Self::SIGCHLD),
            libc::SIGTTIN => Some(Self::SIGTTIN),
            libc::SIGTTOU => Some(Self::SIGTTOU),
            libc::SIGIO => Some(Self::SIGIO),
            libc::SIGXCPU => Some(Self::SIGXCPU),
            libc::SIGXFSZ => Some(Self::SIGXFSZ),
            libc::SIGVTALRM => Some(Self::SIGVTALRM),
            libc::SIGPROF => Some(Self::SIGPROF),
            libc::SIGWINCH => Some(Self::SIGWINCH),
            libc::SIGUSR1 => Some(Self::SIGUSR1),
            libc::SIGUSR2 => Some(Self::SIGUSR2),
            libc::SIGPWR => Some(Self::SIGPWR),
            _ => None,
        }
    }
    #[cfg(feature = "libc")]
    pub fn into_libc(self) -> Option<libc::c_int> {
        match self {
            Self::SIGHUP => Some(libc::SIGHUP),
            Self::SIGINT => Some(libc::SIGINT),
            Self::SIGQUIT => Some(libc::SIGQUIT),
            Self::SIGILL => Some(libc::SIGILL),
            Self::SIGTRAP => Some(libc::SIGTRAP),
            Self::SIGABRT => Some(libc::SIGABRT),
            Self::SIGFPE => Some(libc::SIGFPE),
            Self::SIGKILL => Some(libc::SIGKILL),
            Self::SIGBUS => Some(libc::SIGBUS),
            Self::SIGSEGV => Some(libc::SIGSEGV),
            Self::SIGSYS => Some(libc::SIGSYS),
            Self::SIGPIPE => Some(libc::SIGPIPE),
            Self::SIGALRM => Some(libc::SIGALRM),
            Self::SIGTERM => Some(libc::SIGTERM),
            Self::SIGURG => Some(libc::SIGURG),
            Self::SIGSTOP => Some(libc::SIGSTOP),
            Self::SIGTSTP => Some(libc::SIGTSTP),
            Self::SIGCONT => Some(libc::SIGCONT),
            Self::SIGCHLD => Some(libc::SIGCHLD),
            Self::SIGTTIN => Some(libc::SIGTTIN),
            Self::SIGTTOU => Some(libc::SIGTTOU),
            Self::SIGIO => Some(libc::SIGIO),
            Self::SIGXCPU => Some(libc::SIGXCPU),
            Self::SIGXFSZ => Some(libc::SIGXFSZ),
            Self::SIGVTALRM => Some(libc::SIGVTALRM),
            Self::SIGPROF => Some(libc::SIGPROF),
            Self::SIGWINCH => Some(libc::SIGWINCH),
            Self::SIGUSR1 => Some(libc::SIGUSR1),
            Self::SIGUSR2 => Some(libc::SIGUSR2),
            Self::SIGPWR => Some(libc::SIGPWR),
            _ => None,
        }
    }
}