[racket-users] Re: access a `#` from c code

2020-10-05 Thread Nate Griswold
Note this is from a return value of racket_apply; i called a racket
function from c code and want to store the cptr it has returned.

Nate


On Mon, Oct 5, 2020 at 3:25 AM Nate Griswold  wrote:

> What is the best way to access a value that is a cpointer from c code?
> Should i convert it to an integer? I have been looking at this for a while,
> about an hour, and will continue to look but just thought the list might be
> able to answer faster. I know there are chez functions to convert `ptr`s to
> integers but those aren't working for me (not an integer error).
>
> Nate
>

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/CAM-xLPpcyOPQuX-pHa-2QjDStbT3uDB73qr3-OtL7SyYT32%3DMQ%40mail.gmail.com.


[racket-users] Re: access a `#` from c code

2020-10-05 Thread Nate Griswold
I have a temporary workaround where i have created an ffi function
racket-side to call into c, so that i can automatically use the _cptr's
racket-to-c function. I wonder if there is a way to manually extract the c
value for the case where i want it in a return value of racket_apply.

Nate


On Mon, Oct 5, 2020 at 3:26 AM Nate Griswold  wrote:

> Note this is from a return value of racket_apply; i called a racket
> function from c code and want to store the cptr it has returned.
>
> Nate
>
>
> On Mon, Oct 5, 2020 at 3:25 AM Nate Griswold 
> wrote:
>
>> What is the best way to access a value that is a cpointer from c code?
>> Should i convert it to an integer? I have been looking at this for a while,
>> about an hour, and will continue to look but just thought the list might be
>> able to answer faster. I know there are chez functions to convert `ptr`s to
>> integers but those aren't working for me (not an integer error).
>>
>> Nate
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/CAM-xLPrLiyjzqZvuKd-fK57%2BE6nfJXxz8YF7vpTkZTpsa%3D80SA%40mail.gmail.com.


[racket-users] Re: access a `#` from c code

2020-10-06 Thread Nate Griswold
I realized i already asked this question and Matthew Flatt had responded
like this, for anyone wondering:

---

I see that there's not a good way right now, but here's a workaround
that uses information about the current layout:

A cpointer value is implemented as a Chez Scheme record with either 1
field or 2 fields. There are 2 fields only when the cpointer has an
offset as a result of `ptr-add`, so you can probably ignore that.

To extract the first field, assume that a record has the same layout as
a vector, so use `Svector_ref(p, 0)` to extra the field from the
cpointer `p`.

Then you can use `Sunsigned_value()` to convert that field value to a
pointer-sized integer, then case.

I might have some part of that wrong, but it should be close... Of
course, there should be better support for record-field access and
cpointer extraction, so I'll add to the API.

---

Nate


On Mon, Oct 5, 2020 at 3:59 AM Nate Griswold  wrote:

> I have a temporary workaround where i have created an ffi function
> racket-side to call into c, so that i can automatically use the _cptr's
> racket-to-c function. I wonder if there is a way to manually extract the c
> value for the case where i want it in a return value of racket_apply.
>
> Nate
>
>
> On Mon, Oct 5, 2020 at 3:26 AM Nate Griswold 
> wrote:
>
>> Note this is from a return value of racket_apply; i called a racket
>> function from c code and want to store the cptr it has returned.
>>
>> Nate
>>
>>
>> On Mon, Oct 5, 2020 at 3:25 AM Nate Griswold 
>> wrote:
>>
>>> What is the best way to access a value that is a cpointer from c code?
>>> Should i convert it to an integer? I have been looking at this for a while,
>>> about an hour, and will continue to look but just thought the list might be
>>> able to answer faster. I know there are chez functions to convert `ptr`s to
>>> integers but those aren't working for me (not an integer error).
>>>
>>> Nate
>>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/CAM-xLPr9dZkz3FkWs_oh-jtcR7bgsuhSgYfTvKHFrCPaqo6GLQ%40mail.gmail.com.