Base		T_BASE
Event		T_EVENT
Signal		T_SIGNAL

char *		T_PVbyte
const char *	T_PVbyte

INPUT

T_BASE
	if (!(SvROK ($arg) && SvOBJECT (SvRV ($arg))
            && SvSTASH (SvRV ($arg)) == stash_base))
          croak (\"object is not of type EV::Base\");
        $var = (Base)SvIV (SvRV ($arg));

T_EVENT
	if (!(SvROK ($arg) && SvOBJECT (SvRV ($arg))
            && SvSTASH (SvRV ($arg)) == stash_event))
          croak (\"object is not of type EV::Event\");
        $var = (Event)SvPVX (SvRV ($arg));

T_SIGNAL
	if (($var = sv_signum ($arg)) <= 0)
          croak (\"'%s' is not a valid signal number or name\", SvPV_nolen ($arg));

T_PVbyte
	$var = ($type)SvPVbyte_nolen ($arg)

OUTPUT

T_BASE
	sv_setref_iv ($arg, "EV::Base", (IV)$var);

T_EVENT
	$arg = e_self ($var);

T_PVbyte
	sv_setpv ((SV *)$arg, $var);

