Here is some code that may be helpful:

https://github.com/githwxi/ATS-Postiats-test/blob/master/contrib/hwxi/TEST30/struct1.dats

On Saturday, September 3, 2016 at 9:16:44 AM UTC-4, gmhwxi wrote:
>
>
> For the field 'f', you can provide a getref function (instead of a get 
> function),
> which returns the pointer to the field (instead of the content of the 
> field).
>
> >>I think this problem has its roots in ATS record/struct can't keep 
> at-view for pointer member in themselves. Then we only need 
> setter/getter for pointer member in the record/struct. Members without 
> pointer should be accessed by normal method in ATS language. 
>
> A record in ATS CAN keep the proof of an at-view inside a record. However,
> doing so would complicate programming quite a lot; it may not be suitable
> for translating C code into ATS.
>
> On Saturday, September 3, 2016 at 4:45:13 AM UTC-4, Kiwamu Okabe wrote:
>>
>> Hi Hongwei, 
>>
>> On Thu, Sep 1, 2016 at 1:02 PM, gmhwxi <...> wrote: 
>> > I think you need to try it on a realistic example in order to get a 
>> sense 
>> > as to how it works in practice. My suspicion is that the at-view style 
>> may 
>> > not be adequate for a "complex" struct. I would go with the aptr-style, 
>> > which 
>> > allows you to take advantage of the support for overloading in ATS. 
>>
>> I think I should firstly choose at-view-style, because it's good for a 
>> struct has another struct as member. 
>>
>> Using aptr-style, the code having such struct is following: 
>>
>>
>> https://github.com/jats-ug/practice-ats/tree/53cffb10c1f46603201fbff178e6c1a43eb20e85/mutual_struct3
>>  
>>
>> https://github.com/jats-ug/practice-ats/blob/53cffb10c1f46603201fbff178e6c1a43eb20e85/mutual_struct3/main.dats#L43
>>  
>>
>> Above code read whole struct member `f` in `struct bar` to read int 
>> member `b` in `struct foo`. It can not access the member only. It 
>> means needing much memory access. If using the other style of 
>> setter/getter for struct in struct, this problem may be fixed. 
>> However, It will drop coherence on getter/settter. 
>>
>> On the other side, using at-view-style, the code having such struct is 
>> following: 
>>
>>
>> https://github.com/jats-ug/practice-ats/tree/53cffb10c1f46603201fbff178e6c1a43eb20e85/mutual_struct2
>>  
>>
>> https://github.com/jats-ug/practice-ats/blob/53cffb10c1f46603201fbff178e6c1a43eb20e85/mutual_struct2/main.dats#L31
>>  
>>
>> Above code can directly read/write int member `b` in `struct foo` in 
>> `struct bar`. 
>>
>> I think this problem has its roots in ATS record/struct can't keep 
>> at-view for pointer member in themselves. Then we only need 
>> setter/getter for pointer member in the record/struct. Members without 
>> pointer should be accessed by normal method in ATS language. 
>>
>> Of course, if I know mistake on choosing at-view-style, I'll secondly 
>> choose your aptr-style. 
>>
>> Best regards, 
>> -- 
>> Kiwamu Okabe at METASEPI DESIGN 
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"ats-lang-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/ats-lang-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ats-lang-users/7678574a-df78-4cf7-96f4-db1b7898a0d6%40googlegroups.com.

Reply via email to