--- cvsroot/EV/typemap 2007/10/26 09:19:48 1.1 +++ cvsroot/EV/typemap 2007/10/29 09:00:43 1.6 @@ -1,11 +1,39 @@ -JSON * T_JSON +Base T_BASE +Event T_EVENT +Signal T_SIGNAL + +char * T_PVbyte +const char * T_PVbyte INPUT -T_JSON +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)) == JSON_STASH)) - croak (\"object is not of type JSON::XS\"); - $var = (JSON *)SvPVX (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);