Am 28.07.2011 23:04, schrieb Mark Morgan Lloyd:
I wonder if I could ask a silly question here, without displaying too
much ignorance.
I generally understand the significance of an interface in the Windows
context, where COM (or whatever today's name for it) is integrated
fairly deeply into the OS.
But what of other OSes like Linux? Does the use of interfaces as a way
of getting refcounted storage assume the presence of CORBA etc., and how
much overhead is there at program startup- does it demand that an ORB be
loaded into memory?
While COM-interfaces in Delphi/FPC are designed to be Delphi compatible,
they do not rely on COM. Basically a IInterface or IUnknown is simply an
interface that contains calls for increasing/releasing a reference
count. You as the implementor of the interface need to provide the
implementation. So e.g. TInterfacedObject which implements IInterface
implements a reference counting mechanism where the object is freed when
the reference count reaches zero. In FPC/Delphi this reference count is
normally controlled by the compiler by calling the methods of IUnknown,
but in C/C++ these calls need to be done manually (AFAIK).
CORBA-interfaces as implemented by FPC are just plain interfaces without
any methods defined. Also the compiler does not generate code to
influence the reference count as it does with COM-interfaces.
Basically an interface in FPC/Delphi is something that allows you to use
certain methods (those provided by the interface) without knowing what
the implementing class does. The COM-interface just contain a bit more
compiler magic, but that's it.
So no, you don't need an ORB or something like that.
Regards,
Sven
PS: There is also a third kind of interfaces called dispinterface that
contain again more compiler magic and are indeed used with COM
automation (or XPCOM on non-Windows).
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal