[fpc-pascal]Interface-only units (was: shared libraries interface)
Full_Name
memsom at post.interalpha.co.uk
Fri Aug 2 14:06:39 CEST 2002
Quoting Jonas Maebe <jonas at zeus.rug.ac.be>:
>
>
> On Fri, 2 Aug 2002, Full_Name wrote:
>
> > One other point.. surely the interface is there just for the
> > convenience of the developer - like a C header file.
>
> No, it's mainly to guarantee portability between different compiler
> versions.
But the interface is still to be thought of as 'read only' ? Otherwise, it
would be possible to alter the interface... not good for maintenance.
eg. consider the following...
unit whatever;
{$pureint+}
interface
uses x, y, z;
type
TSomeEnumType = (set1, set2, set3, set4);
type
TMyClass = class
{...}
function SomeFunction(x: TSomeEnumType): string;
function SomeFunction2: TSomeEnumType;
procedure SomeProcedure(x: TSomeEnumType);
property X: TSomeEnumType read getX write setX;
{...}
end;
end.
What would happen if I compiler this, gave it to people, and someone changed
TSomeEnumType? For example to the following:
TSomeEnumType = (setNone, set1, set2, set3, set4, set5, set6);
If I had written code internally well, hopefully not too much would break, but
I still think this is dangerous. This is one reason why the DCU/TPU concept
arrived in the first place.
Matt
--
"Computer games don't affect kids; I mean if Pac-Man affected us as kids,
we'd all be running around in darkened rooms, munching magic pills and
listening to repetitive electronic music."
Kristian Wilson,
Nintendo, Inc, 1989
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS d? s+++:+ a- C++ UL+ P L++ E---- W- N+ o+ K- w
O- M V PS PE-- Y PGP- t- 5-- X- R- tv+ b+ DI++ D+
G e++ h--- r+++ y+++
------END GEEK CODE BLOCK------
More information about the fpc-pascal
mailing list