[fpc-devel] Patches

Florian Klämpfl florian at freepascal.org
Thu Sep 30 19:56:13 CEST 2010


Am 30.09.2010 19:53, schrieb Adem:
>  On 2010-09-30 06:59, Florian Klämpfl wrote:
>> Am 30.09.2010 19:12, schrieb Adem:
>>>   On 2010-09-30 19:39, Michael Van Canneyt wrote:
>>>> If you want to move the *global variables* (as in: unit scope)
>>>> CExportLib,ExportLib to globals, you must add export to the globals
>>>> unit.
>>> Not only do I think they should be moved to globals.pas, I also think
>>> they should be fields/properties/methods of, say, TFCPGlobalSettings
>>> class.
>>>
>>> Which, in turn, should be used in the compiler object as a
>>> field/property.
>>>
>>> Doing that does not increase complexity.
>>>
>>> Just the opposite: the code becomes more decipherable and hence more
>>> robust.
>>>
>>> BTW, removing all these
>>>
>>> var
>>>    CExportLib : array[tsystem] of TExportLibClass;
>>>    ExportLib  : TExportLib;
>>>
>>> procedure RegisterExport(t: tsystem; c: TExportLibClass);
>>> procedure InitExport;
>>> procedure DoneExport;
>>>
>>> from export.pas, also enables us to remove 'globals' from the 'uses' of
>>> export.pas --which means less convolution to me.
>>>
>>> What I would like to know is why seem to think this is a bad idea?
>> Because it requires that TExportLib with all methods goes into
>> globals.pas so we can completely kick export.pas. In the end, we end up
>> with one compiler.pas file of 200k lines.
> :)
> 
> No. I don't think there's that risk.
> 
> But, if we're talking specifically about export.pas, there's no reason
> that all of it should go into globals.pas.
> 
> But, IMO, there's no reason why these should be in there
> 
>   procedure exportprocsym(sym: tsym; const s : string; index: longint;
> options: word);
>   procedure exportvarsym(sym: tsym; const s : string; index: longint;
> options: word);
>   procedure exportname(const s : string; options: word);
>   procedure exportallprocdefnames(sym: tprocsym; pd: tprocdef; options:
> word);
>   procedure exportallprocsymnames(ps: tprocsym; options: word);
> 
> var
>   CExportLib: array[tsystem] of TExportLibClass;
>   ExportLib: TExportLib;
> 
> procedure RegisterExport(t:tsystem;c:TExportLibClass);
> procedure InitExport;
> procedure DoneExport;
> 
> It is only more logical/sensible to bring together all these
> one-instance global objects into a one-instance global object, instead
> of having them scattered all around the place.

I hope you are joking ...



More information about the fpc-devel mailing list