[fpc-pascal] 2.1.1 new protected

Martin Schreiber fpmse at bluewin.ch
Sat Aug 12 09:43:49 CEST 2006


On Friday 11 August 2006 20.35, Marc Weustink wrote:
> >> What's the alternative?
> >
> > To have most of internal procedures public with a comment "for internal
> > use only", I really don't like it, or to have all code in a single file,
> > I don't like it too.
> > What about "friend units'?
>
> Or something like as it is "solved" in delphi with helper classes (p215).
> (Maybe we can also implement the strict version (p168))
>
> http://info.borland.com/techpubs/delphi/Delphi2006/Reference.pdf
>

It seems that FPC 2.1.1 implements the behaviour of Delphi 2006 'strict 
protected' by default.

In MSEgui I have the problem that there is too much low level stuff to fit in 
one unit and the dependences are too complex to be mapped into a simple class 
hierarchy. Up to time I did as follows to access low level elements of 
classes in other units:
"
implementation
type
 TLowLevelClassInOtherUnit1 = class(TLowLevelClassInOtherUnit);

procedure TLowLevelClassInThisUnit.DoSomething;
begin
 TLowLevelClassInOtherUnit1
            (InstanceOfTLowLevelClassInOtherUnit).DoSomethingProtected;
end;
"
It is ugly, produces warnings and is possibly forbidden in FPC 2.1.1 (I don't 
know). A more elegant solution would be to have something like 'friend units' 
where protected class members are visible:
"
unit secondlowlevelunit;
interface
uses
 firstlowlevelunit,highlevelunit;
friends        //use appropriate keyword and notation
 firstlowlevelunit;
"

-> In "secondlowlevelunit" all protected class members of "firstlowlevelunit" 
are visible, protected class members of "highlevelunit" are visible in 
descendant classes.

Martin



More information about the fpc-pascal mailing list