Sergei Gorelkin schreef:
Graeme Geldenhuys wrote:

Beats me, I thought that might be needed for querying a object for
interfaces it supports...  As far as CORBA is concerned, I'm just
shooting in the dark here...  Information on CORBA usage is limited
and I can't find any FPC code examples to give me hints.  It seems
quite useless having the Corba support in FPC, if everything related
to Interfaces requires COM methods.

Think of Corba-styled interfaces as about "interfaces without COM glue", not just as about "interfaces without refcounting". To get runtime typecasting features, you have to implement it yourself. OTOH, you are free to implement anything you want.

As for non-refcounted interfaced base class, you may want to use TComponent. Of course, it has some overhead compared with TInterfacedObject, but its features are quite useful in almost every application.

Given:
type
  TAddCommand = class(TBaseCommnad, ICommand)
  <bla>
  end;

Does the compiler store somewhere that that TAddCommand implements ICommand? I assume it does the compile time check that TAddCommand implements all ICommands methods, but is there something similar provided by the compiler (or RTTI) which can be used to do something like
  ACommnd := TAddCommand.Create;
  if (ACommand is TBaseCommand) then
    writeln('This works');
  if (ACommand.InheritsFrom('TBaseCommand') then
    writeln('This works');
  if (ACommand is ICommand) then
writeln('I don't know if this works, but I would expect it if you consider interfaces similar to abstract base classes');
  if (ACommand.Implements(ICommand)) then
    writeln('I don't know if this works, but it is similar to the InheritsFrom 
case');

Vincent
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to