<div dir="auto">Great! </div><div class="gmail_extra"><br><div class="gmail_quote">16 июл. 2017 г. 2:32 ПП пользователь "Maciej Fijalkowski" <<a href="mailto:fijall@gmail.com">fijall@gmail.com</a>> написал:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Armin<br>
<br>
We ended up (Aleksandr is here at pycon russia) using rffi_platform to<br>
get the exact shape of the structure from the header file. There were<br>
a few bugs how exactly this got mapped, so it ended up being a good<br>
way to do it.<br>
<br>
On Sat, Jul 15, 2017 at 8:02 AM, Armin Rigo <<a href="mailto:armin.rigo@gmail.com">armin.rigo@gmail.com</a>> wrote:<br>
> Hi Aleksandr,<br>
><br>
> On 11 July 2017 at 18:33, Aleksandr Koshkin <<a href="mailto:tinysnippets@gmail.com">tinysnippets@gmail.com</a>> wrote:<br>
>> So ok, I have to specify headers containing my structs and somehow push it<br>
>> to rpython toolchain, if I got you correctly.<br>
>> 0. Why? This structures are already described in the vm file as a bunch of<br>
>> ffi.CStruct objects.<br>
><br>
> rffi.CStruct() is used to declare the RPython interface for structs<br>
> that are originally defined in C.<br>
><br>
> You can use lltype.Struct(), but it's not recommended in your case<br>
> because lltype.Struct() is meant to define structs in RPython where<br>
> you *don't* need a precise C-level struct; for example,<br>
> lltype.Struct() could rename and reorder the fields in C if it is more<br>
> efficient.<br>
><br>
> We don't have a direct way to declare the struct in RPython but also<br>
> force it to generate exactly the C struct declaration you want,<br>
> because we never needed it.  You need to use rffi.CStruct() and write<br>
> the struct in the .h file manually too.<br>
><br>
>> 1. If I have to, how would I do that, is there any example of embedding<br>
>> rpython into something?<br>
><br>
> Not really.  Look maybe at tests using rpython.rlib.entrypoint, like<br>
> rpython/translator/c/test/<wbr>test_genc:test_entrypoints.<br>
><br>
><br>
> A bientôt,<br>
><br>
> Armin.<br>
</blockquote></div></div>