On 26/07/2010 15:55, Sven Barth wrote:
Hi!

So... continuing the thread were it belongs... in fpc-devel :P

On 26.07.2010 16:36, Marcos Douglas wrote:
On Mon, Jul 26, 2010 at 11:20 AM, Sven Barth
<[email protected]>  wrote:

What about that the compiler enforces that you use the fully
qualified name
if you used it in the uses?

Not only if you used it in the uses clause, but if you COMPILED with
namespace sintaxe (eg. by Graeme unit strutils namespace my), IMHO...

The whole idea is to compile units with a namespace not just using on
in the uses because it's funny.
Either its compiled by including "namespace Foo" in the units
themselves or by using a commandline parameter "-namespace Foo", so
that not every unit needs so be changed (both modes are supported and
the "in unit" version takes precedence of the commandline one).

But we would have a problem stated by Michael:

On Mon, Jul 26, 2010 at 6:34 AM, Michael Van Canneyt
<[email protected]>  wrote:
Well, I fail to see what is more logical in my.constants than in
myconstants.
The unit is still called my.constants, not constants. So you'll end up
typing my.constants everywhere anyway. The gain of this over
myconstants is
highly debatable.

It's not about not having to type the "fully qualified name", but
about not having to rename/prefix my own units, because they conflict
with an existing unit.

Ok, so that means:
If refering to the unit, or any element in it, you always have to use the full namespace:
uses my.utils;
var a: my.utils.TFoo;

that is, inside the unit that uses the other unit, the other units name is effectively "my.utils" => with the dot being part of the name

If writing a unit, that is to be in a namespace you can do
  unit utils namespace my;
but that is no different from doing
  unit my.utils;

*** up to this point, there is no difference to using a prefix on the unit name? "unit MyUtils" ***

The new thing is that you are allowed to give the namespace on the commandline, effectively allowing to change it without needing to change all of the sources

But that can be done for prefixes too:
  fpc -unitprefix=My Utils.pas

It acts like a pre-processor, it will find the unit declaration, and prefix the unit name...

So no fancy-new and introducing-problems (ambiguity mu.utils.a => unit my; record utils) issue....

--------------
In fact if the existing
uses Foo in 'dir';

could be extended to allow a package or similar
uses Foo in 'LCL'

and an alias directive would be introduced, then it was all solved too

uses Foo in 'lcl' alias 'FooLCL', Foo in 'RTL' alias 'FooRTL'





_______________________________________________
fpc-devel maillist  -  [email protected]
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to