On Fri, 3 Apr 2015, Graeme Geldenhuys wrote:

On 2015-04-03 08:09, Michael Van Canneyt wrote:
To be sure, it was introduced to be delphi compatible.
Whether namespaces are 'modern','advanced' or not is a matter of debate.
In the end (at the assembler level) it's all a flat namespace anyway.

But namespaces are functional in Delphi - not just cosmetic. So are you
saying that FPC doesn't have the same functional ability as Delphi when
it comes to namespaces?

The following is how somebody explained Delphi namespaces to me:

In stead of having directories like this with the same unit names and
having to use IFDEF's and play with unit paths...

/GUI/VLC/tiMediators.pas
/GUI/VLC/tiListMediators.pas
/GUI/LCL/tiMediators.pas
/GUI/LCL/tiListMediators.pas
/GUI/FMX/tiMediators.pas
/GUI/FMX/tiListMediators.pas

...instead you can flatten the directory hierarchy to simply a single
GUI directory as follows:

/GUI/VLC.tiMediators.pas
/GUI/VLC.tiListMediators.pas
/GUI/LCL.tiMediators.pas
/GUI/LCL.tiListMediators.pas
/GUI/FMX.tiMediators.pas
/GUI/FMX.tiListMediators.pas


That way we don't need $IFDEFs or special Unit Search Paths, just
specify "FMX" or "VCL or "LCL" in the Project Unit Scope names list.

you just change one option -Fu/GUI/LCL to 2: -Fu/GUI -NLCL
I don't see much added value in that.

Additionally I like my files in separate directories.

It's all a matter of preference.

As for ifdefs:
The units MUST have the same interface or else the IFDEFS pop up anyway.
So nothing is gained with namespaces (in this regard). We do the above since 20 years in the RTL. The LCL has macros for it.

Don't get me wrong, I have nothing against namespaces.
I just don't think they are the "sliced bread of IT" as some do. Their usefulness in pascal is IMHO hugely overrated.

You then simply refer to those units in your uses clause by using:

 uses
   tiMediator, tiListMediator;

The compiler will then know which unit to use because of the scope you
specified in the project.

I take it FPC doesn't support this then?

To my knowledge, it does ?

Michael.
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to