[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