[fpc-pascal] Ideas for namespace implementation

Marcos Douglas md at delfire.net
Thu Aug 5 23:08:11 CEST 2010


On Thu, Aug 5, 2010 at 5:57 PM, Marcos Douglas <md at delfire.net> wrote:
> On Thu, Aug 5, 2010 at 5:52 PM, Joël Thieffry <jo at zerezo.com> wrote:
>>  Le 05/08/2010 21:56, Marcos Douglas a écrit :
>>> On Tue, Jul 27, 2010 at 11:27 AM, Marcos Douglas <md at delfire.net> wrote:
>>>> On Tue, Jul 27, 2010 at 11:10 AM, Martin <fpc at mfriebe.de> wrote:
>>>>> [snip]
>>>>>> IMO, if there is no further concept of child units (maybe similar to Ada)
>>>>>> there is no point in adding namespaces to FPC, it's not worth the trouble.
>>>>>> After all, it's still a name and if somebody else already uses it, you still
>>>>>> need another to disambiguate.
>>>>>>
>>>>> Yes, Namespaces (those on top of units) will inherit the same conflict
>>>>> problem that units have. That is as long as the inherit the same source...
>>>>>
>>>>> That means, if the namespace for a unit is given to that unit by the writer
>>>>> of that unit, then 2 writers of 2 units will eventually give the same
>>>>> namespace to equally named units....
>>>>>
>>>>> *if*, but what is if not. What is if the namespace is not set by the writer
>>>>> of the unit, but instead of that by the user of the unit.
>>>>>
>>>>> The user will always know if 2 units do conflict => so he can then set a
>>>>> namespaces => and because the user (as in the writer of the final program)
>>>>> knows already all the names, and decides all the namespaces himself => there
>>>>> will be no conflict.
>>>> As I said:
>>>> [[
>>>>> But if you can CHOOSE the name of alias for the units of others
>>>>> programmers, in MY project, then I can see a possible solution, don't
>>>>> you?
>>>> ]]
>>>>
>>>>> that can be done by giving the namespace to an include path -Fu / -FU (if
>>>>> necessary recursive)
>>>>> => only draw back, you have to do it equally for every PC /installation that
>>>>> you use....
>>>>>   (unless the  UUID thing....)
>>>>>
>>>>> Then again, it is only worth the bother, if someone actually deems it worth
>>>>> his/her time to implement it....
>>> I was thinking... if we could use a nickname, for an unit, just to
>>> reference it on the code?
>>> The unit (same) name problem still happen, I know... then I have to
>>> rename my units with long names (this is worse) but I could codify
>>> with bit names in my code.
>>>
>>> eg:
>>> the unit mycompany_strutils.pas will be referenced on the code:
>>>
>>> uses
>>>    mycompany_strutils as stru;
>>>
>>> begin
>>>   stru.Foo('str foo');
>>> end;
>>>
>>> Got it?
>>> Is this more easy to implement?
>
>> This looks like the import as statement in Python :
>> http://www.python.org/dev/peps/pep-0221/
>
> Exactly  :)

Do not need to change the engine of search units (but we'll have to
use long names for units to not happen conflict names) and we can work
with bit names. If will exists a conflict name with any
function/classes/variable names, just use unit name as prefix.

You guys, what do you think about it?


Best regards,
Marcos Douglas



More information about the fpc-pascal mailing list