--- cvsroot/EV/typemap 2007/10/26 09:19:48 1.1 +++ cvsroot/EV/typemap 2007/12/20 07:12:57 1.13 @@ -1,11 +1,43 @@ -JSON * T_JSON +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 +ev_fork * T_WATCHER + +char * T_PVbyte +const char * T_PVbyte INPUT -T_JSON +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)) == JSON_STASH)) - croak (\"object is not of type JSON::XS\"); - $var = (JSON *)SvPVX (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") });