[M3devel] Referencing opaque C structs in M3 code?
Tony Hosking
hosking at cs.purdue.edu
Sat Mar 6 16:12:47 CET 2010
You can have a
TYPE foo = BRANDED "foo" ADDRESS
to distinguish from other void types.
On 5 Mar 2010, at 16:03, hendrik at topoi.pooq.com wrote:
> On Thu, Mar 04, 2010 at 04:59:42PM -0500, Tony Hosking wrote:
>> You can assume that ADDRESS is entirely interchangeable with a C void *.
>
> What struct opaque_foo_t provides that void doesn't is some further
> type-checking -- struct opaque_foo_t is a different type from struct
> other_foo_t.
>
> Presumably you should use Modula 3 techniques for making an opaque
> types in your interface.
>
> - hendrik
>
>>
>> Antony Hosking | Associate Professor | Computer Science | Purdue University
>> 305 N. University Street | West Lafayette | IN 47907 | USA
>> Office +1 765 494 6001 | Mobile +1 765 427 5484
>>
>>
>>
>>
>> On 4 Mar 2010, at 16:29, Chris wrote:
>>
>>> Alright, this has thrown me for a bit of a loop...no pun intended...
>>>
>>> Suppose I'm linking my Modula 3 code with a C library where the public API has a declaration like this...
>>>
>>> typedef struct opaque_foo_t opaque_foo_t;
>>>
>>> And the type opaque_foo_t is defined in the private part of the library.
>>>
>>> Do I need to create a seperate representation of the structure for my Modula3 program or can I just create a pointer for it and pass the pointer around? Assuming of course I dont have to actually reference anything inside opaque_foo_t. Would I just create an UNTRACED REF Ctypes.void_star or something similiar?
>>>
>>> I'm a little puzzled. Any help would be appreciated.
>>>
>>>
>>>
>>> --
>>> Chris <Highjinks at gmx.com>
>>
More information about the M3devel
mailing list