gcc visibility used by moz

Tristan Wibberley maihem@maihem.org
Wed Jul 12 01:05:00 GMT 2006


Jason Merrill wrote:

> It seems that you have a different mental model of type visibility.  The 
> way I was thinking about it, if a type has hidden visibility, we can't 
> refer to it from outside its object.  Thus, it doesn't make sense for 
> members or objects with that type to have greater visibility because 
> even if people can call the accessor they can't do anything with the 
> return value.
 >
> However, I'm not attached to this in defiance of practical concerns. 
> What is your model of type visibility?

This isn't "type" visibility. Shared objects don't export "types" they 
export "symbols". The types are defined in headers and are thus known to 
exist - no visibility attributes will or should change that.

If the programmer had intended that the type should appear to not exist. 
it wouldn't be defined in a header #include-able by client code. The 
compiler should assume that the type exists and can be used if it is 
defined and shouldn't change attributes on other parts of the program.

In the examples above, client code that knows (via headers) that the 
classes exist should be able to get pointers to instances via exported 
functions, access any visible or virtual members, and pass the pointers 
back into visible functions of the shared object - or even dereference 
the pointers to pass by reference.

-- 
Tristan Wibberley

These opinions are my own, and do not reflect those of my employer.



More information about the Gcc mailing list