[fpc-pascal] Namespace collisions

Jonas Maebe jonas at freepascal.org
Thu Nov 7 20:38:11 CET 2024


On 07/11/2024 16:27, Adriaan van Os via fpc-pascal wrote:
> In ObjectiveC we have the infamous namespace collision problem. I am 
> wondering how this applies to Objective Pascal.
> 
> For example, I have a plugin, written in Pascal, with only one global 
> external symbol, the plugin entry point
> 
> 000000000000a6d0 (__TEXT,__text) external _MyPluginEntryPoint
> 
> But the plugin uses Cocoa internally, e.g. to declare an 
> NSApplicationDelegate. This ends up in the plugin code as a non-global 
> symbol, e.g.
> 
> 000000000006aa80 (__TEXT,__text) non-external (was a private external) 
> -[NSApplicationDelegate application:openFile:]
> 
> And I have another plugin that does the same. So, there are two 
> non-global symbols like this
> 
> 000000000006aa80 (__TEXT,__text) non-external (was a private external) 
> -[NSApplicationDelegate application:openFile:]
> 
> Does the namespace collision problem apply now ? or only to symbols that 
> are global external symbols ? Is this different in Objective Pascal from 
> Objective C ?

It works exactly the same in Objective Pascal as in Objective C, as this 
is defined by the Objective C ABI. Since that one is completely 
name-based, any time you define two classes with the same name you have 
a potential problem, in the sense that it is unpredictable which one 
will be used at run time.


Jonas


More information about the fpc-pascal mailing list