Руслан, огромное тебе спасибо.<div><br><div>Я крутился вокруг да около, но все никак не мог наткнуться на правильный кусочек кода )</div><div>оказывается указатель на CV * нам просто передается в XS(...) {...}</div><div>А я блин искал его в стеке и в падлистах.</div>

<div><br></div><div>и в результате есть как минимум 3 способа:</div><div><br></div><div>1. CvXSUBANY(cv).any_ptr = (void *) ...;</div><div>2. sv_magicext((SV *) cv, NULL, PERL_MAGIC_ext, &null_mg_vtbl, (void *)..., 0);<br>

</div><div>3. CvPADLIST(cv) = pad_new ...</div><div><br></div><div>Я пока заюзал первый, по крайней мере могу с чего-то уже начать. а там посмотрю.</div><div><br></div></div><div>Вот работающий пример:</div><div><a href="https://gist.github.com/4154184">https://gist.github.com/4154184</a><br>
</div><div><br></div><div><br></div>
<div class="gmail_extra"><br><br><div class="gmail_quote">2012/11/27 Ruslan Zakirov <span dir="ltr"><<a href="mailto:ruz@bestpractical.com" target="_blank">ruz@bestpractical.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
2012/11/27 Mons Anderson <<a href="mailto:mons@cpan.org">mons@cpan.org</a>>:<br>
<div class="im">> 2012/11/27 Ruslan Zakirov <<a href="mailto:ruz@bestpractical.com">ruz@bestpractical.com</a>><br>
>><br>
>><br>
>> А следующее не подходит почему?<br>
>><br>
>> AE::io( $fileno, $flag, sub { on_event($fileno, $flag) } );<br>
>><br>
>> Накладные расходы вызова сабы?<br>
>><br>
>><br>
> потому что on_event - сишная функция. и вот как-раз у меня не получается так<br>
> собрать анонимную функцию, находясь внутри XS.<br>
> т.е. грубо говоря<br>
><br>
> у меня есть<br>
> void on_event( ... ) { ... }<br>
><br>
> я могу сделать:<br>
> PUSHMARK(SP);<br>
> EXTEND(SP,3);<br>
> PUSHs( sv_fileno );<br>
> PUSHs( sv_flag );<br>
> PUSHs( ??? );<br>
> PUTBACK;<br>
> call_pv( "AE::io", G_VOID )<br>
><br>
> А что мне передать как 3й аргумент?<br>
<br>
</div>RV на CV :) Все равно придется обернуть on_event или оно работает со стеком?<br>
<br>
Вот еще про замыкания в XS:<br>
<br>
<a href="http://perl-users.jp/articles/advent-calendar/2010/english/3" target="_blank">http://perl-users.jp/articles/advent-calendar/2010/english/3</a><br>
<div class="im HOEnZb"><br>
> --<br>
> Best wishes,<br>
> Vladimir V. Perepelitsa aka Mons Anderson<br>
> <<a href="mailto:inthrax@gmail.com">inthrax@gmail.com</a>>, <<a href="mailto:mons@cpan.org">mons@cpan.org</a>><br>
> <a href="http://github.com/Mons" target="_blank">http://github.com/Mons</a><br>
><br>
</div><div class="HOEnZb"><div class="h5">> --<br>
> Moscow.pm mailing list<br>
> <a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
<br>
<br>
<br>
--<br>
Best regards, Ruslan.<br>
--<br>
Moscow.pm mailing list<br>
<a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>Best wishes,<br>Vladimir V. Perepelitsa aka Mons Anderson<br><<a href="mailto:inthrax@gmail.com">inthrax@gmail.com</a>>, <<a href="mailto:mons@cpan.org">mons@cpan.org</a>><br>
<a href="http://github.com/Mons">http://github.com/Mons</a><br>
</div>