> Peter Vreman wrote: > > There is no garauntee either within a single unit. With forward defined > > classes you can make any > > order you want. > > > > And relying on order in memory has also problems with shared libraries. > > afaik there is no rule > > that new libaries are always loaded at larger adresses > > Thank you for this information, Peter. I hadn't thought of shared > libraries yet. > > Anyway, as far as I understood shared libraries each have their own VMTs, > so you can't compare classes that come from different dll's or the main > executable. Is that correct?
For pure shared libraries yes, for packages no. For packages, Peter is right. > BTW I now realize that I was using a little bit confusing terminology; with > 'depth-first order traversal' I meant 'preorder traversal'. The 'NextSibling' > and 'LastChild' names are also confusing. What I actually meant, I'd rather > call 'NextSubtree' and 'LastInSubtree'. > > Consider the following example: > > TObject > | > +- TPersistent > | | > | +- TMyPersistent > | | > + +- TComponent > | | > | +- TDataset > | > +- TList > > Here: > - TMyPersistent.NextSubtree = TComponent, .LastInSubtree = TMyPersistent > - TComponent .NextSubtree = TList, .LastInSubtree = TDataset > - TDataSet .NextSubtree = TList, .LastInSubtree = TDataset > - TList .NextSubtree = <inf>, .LastInSubtree = TList > > An every-day example is a directory treeview, such as e.g. the left pane > in Windows Explorer. When all nodes are expanded, iterating the rows from > top to bottom corresponds exactly with preorder traversal. With this > picture in mind, it is relatively easy to see the correctness of the > proposed InheritsFrom implementation. Assume everything on the 1st and 2nd level above is in a package A. Progam B and C both use package A. What do we do about lastinsubtree? _______________________________________________ fpc-devel maillist - [email protected] http://lists.freepascal.org/mailman/listinfo/fpc-devel
