TYPEMAP SignalBase* O_OBJECT Connection* O_OBJECT Person* O_HANDLE PersonHandle* O_OBJECT Lobby* O_HANDLE Room* O_HANDLE RoomHandle* O_OBJECT Player* O_OBJECT Meta* O_OBJECT Timeout* O_OBJECT AtlasObject T_ATLAS AtlasConstObject* T_ATLAS_CONST World* O_HANDLE Avatar* O_HANDLE WorldHandle* O_OBJECT AvatarHandle* O_OBJECT Entity* O_ENTITY TypeInfo* O_HANDLE TypeInfoHandle* O_OBJECT OUTPUT O_HANDLE sv_setref_pv( $arg, CLASS, (void*) new HandleType::type($var) ); O_ENTITY $arg = dynamic_cast($var)->sv(); T_ATLAS_CONST $arg = AtlasToSV(*$var); INPUT O_HANDLE if( sv_isobject($arg) && (SvTYPE(SvRV($arg)) == SVt_PVMG) ) { HandleType::type* handle = (HandleType::type*) SvIV((SV*)SvRV( $arg )); assert(handle); $var = *handle; if(!$var) { warn( \"Stale reference for $type\" ); XSRETURN_UNDEF; } } else { warn( \"${Package}::$func_name() -- $var is not a blessed SV reference\" ); XSRETURN_UNDEF; } O_ENTITY $var = PerlEntity::get($arg); if(!$var) { warn( \"${Package}::$func_name() -- $var is not a blessed SV reference\" ); XSRETURN_UNDEF; } T_ATLAS try { SVToAtlas($arg, $var); } catch (...) { warn( \"Unable to convert $var to an Atlas::Message::Object\" ); XSRETURN_UNDEF; }