Doug Turner wrote:

>    static nsresult GetGlobalServiceManager(nsIServiceManager* *result);
> 
> To maintain the symbol to pre-service-manager-change binaries, I need to 
> make sure that I do not change the parameter. My changes include 
> renaming existing nsIServiceManager to nsIServiceManagerObsolete.  Now, 
> what do we do with this call?  It need to return the old 
> nsIServiceManager named type, but I want the nsIServiceManagerObsolete 
> implementation returned.  Okay, so I know how bad this is but, I force 
> the return type via casting. yicky.


Assuming you want to keep binary compatibility I think that you need to 
keep the name of the interface the same, as yucky as that is.  Why are 
you so gung ho on changing the name of the interface, anyway?


> 
> What really sucks is supporting this static class anyway.  Name mangling 
> fear should have stopped everyone from using this, but I guess there was 
> no other way to get the service manager.  As of today, you can QI the 
> component manager (which is passed into your module) for the service 
> manager.  After I check in my changes to the service manager, there will 
> be a new call NS_GetGlobalServiceManager.  This call will be the 
> standard way to get the service manager.
> 
> 

Yeah, looks like we have some defacto freezing going on here.  We are 
beholden to binary plugins already.  ( Yucky again. )

--Chris

-- 
------------
Christopher Blizzard
http://people.redhat.com/blizzard/
Mozilla.org - we're on a mission from God.  Still.
------------


Reply via email to