On Sat, 2005-03-19 at 03:55 +0200, Nikolay Nikolov wrote: > ml wrote: > > >3. This one is not some little beauty hack. So, no pressure here. But, I > >must admit that I'm most interested in this answer. Classes do support > >multiple interface inheritance, but interfaces don't. That cuts almost > >all of the interface flexibility. Any good reasons why? > > > > > Probably because of Delphi and COM. >
??? You mean,... outdated technology that's ceasing to exist even on Microsoft grounds? COM will not exist anymore, and Delphi will be .net only :) More != Less ;) You can be backward compatible if you support more. And to cut a powerful feature? I just hope that fpc-devel team is planing to implement it. Well, problem can be solved, but its ugly solution. Is there any way except include file to specify global macros???? Probably not:) I think I'll probably have to live with some kind of {$I multiple_interfaces.inc} in every file. Now I wish I can do something for foreach() and world will be looking much brighter. It should be doable now that I have multiple interfaces. Solution: {$MACRO+} {$define INamedList := IList, INamed, IUnique} function SupportsInterface(aInterface: IUnknown; aGUID: array of TGUID): boolean; // check for complete support of all passed interfaces function SupportsInterface(aObject: TObject; aGUID: array of TGUID): boolean; // check for complete support of all passed interfaces type TGUIDArray = array of TGUID; // Tests for detecting interface functionality // // and if "is" can't be assigned,... "><" can operator >< (const source: IUnknown; data: TGUID) dest : boolean; operator >< (const source: IUnknown; data: TGUIDArray) dest : boolean; operator >< (const source: TObject; data: TGUID) dest : boolean; operator >< (const source: TObject; data: TGUIDArray) dest : boolean; type TObjectCollection = class(TInterfacedObject, INamedList) yaddayaddayadda end; begin if (someobjectorinterface >< [INamedList]) then ... end. Looks ugly as hell, but it does its job done with a lot of code shortage and software doesn't grow up in heights (hierarchy) but stays as low as possible, with much wider variety of combination possible p.s. One couldn't believe how such small feature (like macro) can make your day better??? or night:) p.p.s. fpc-devel team if anyone reads this, thanks for macros and operators. You just made one man a very happy person ml > _______________________________________________ > fpc-pascal maillist - fpc-pascal@lists.freepascal.org > http://lists.freepascal.org/mailman/listinfo/fpc-pascal _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal