Signal		T_SIGNAL

ev_watcher *	T_WATCHER
ev_io *		T_WATCHER
ev_timer *	T_WATCHER
ev_periodic *	T_WATCHER
ev_signal *	T_WATCHER
ev_idle *	T_WATCHER
ev_prepare *	T_WATCHER
ev_check *	T_WATCHER
ev_child *	T_WATCHER
ev_embed *	T_WATCHER
ev_stat *	T_WATCHER

char *		T_PVbyte
const char *	T_PVbyte

INPUT

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)

T_WATCHER
	if (!(SvROK ($arg) && SvOBJECT (SvRV ($arg))
              && (SvSTASH (SvRV ($arg)) == stash_" . ($type =~ /ev_(\S+)/, "$1") . "
                  || sv_derived_from ($arg, \"EV::" . ($type =~ /ev_(\S+)/, ucfirst "$1") . "\"))))
          croak (\"object is not of type EV::" . ($type =~ /ev_(\S+)/, ucfirst "$1") . "\");
	$var = ($type)SvPVX (SvRV ($arg));

OUTPUT

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

T_WATCHER
	$arg = e_bless ((struct ev_watcher *)$var, stash_${ ($type =~ /ev_(\S+)/, \"$1") });


