Am 29.07.2011 12:11, schrieb Mark Morgan Lloyd:
Sven Barth wrote:
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).

So if I understand you correctly, use of interfaces does not imply use
of OS or ORB facilities, but can permit it if required.


Simply spoken: yes (although I don't know of a CORBA ORB usage myself(!))

Regards,
Sven
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to