[M3devel] declaring a type's existance but not enough to instantiate it?

Tony Hosking hosking at cs.purdue.edu
Mon Jan 12 01:13:00 CET 2009


What's wrong with using ADDRESS for references to opaque values?  If  
sigset_t is never instantiated in Modula-3, then why do you need it  
declared there?

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 12 Jan 2009, at 01:44, Jay wrote:

> Is there a way in Modula-3 to declare that a type exists, and there  
> are <*external*> instances of it, without "fully" declaring it, so  
> that no Modula-3 can instantiate it?
>
> I have done this for sigset_t and sem_t, but they could erroneously  
> be instantiated by Modula-3 and I'd like to remove that ability to  
> mess up so easily.
>
> (* This type is not declared correctly. It is only instantiated in C  
> code. *)
>   sigset_t = RECORD END;
>
> (* This type is not declared correctly. It is only instantiated in C  
> code. *)
>   sem_t = RECORD END;
>
> In C I believe you can do this, like:
>   typedef struct foo foo_t;
>   extern foo_t foo;
>
>  void UseFoo(foo_t*);
>   foo_t* GetFoo(void);
>
> Thanks,
>  - Jay
>
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://m3lists.elegosoft.com/pipermail/m3devel/attachments/20090112/3d9ccf54/attachment-0002.html>


More information about the M3devel mailing list