The following are items of former releases that are compatible with the new release:
Within the new release, reference classes are no longer necessary for polymorphic use of the collections. The concrete collection classes are now directly derived from the abstract class hierarchy. A linkage of abstract and concrete classes through reference classes is therefore superfluous. Nevertheless you can continue using the reference class syntax in existing programs.
The classes IIterator and IConstantIterator are now called IApplicator and IConstantApplicator. The new names express more precisely what the purpose of objects from these classes is: They do not iterate over a collection themselves but they provide a function that is applied to the elements of a collection during iteration with allElementsDo.
The classes IIterator and IConstantIterator are still available but not recommended.
Instead of the forCursor macro the forICursor macro is introduced. The forCursor macro is still available but - as with the Iterator classes - you should prefer using the new version.
Up to now all implementation variants of the collections bag, set, sorted bag and sorted set used the element operation class IECOps. In the new release, these collections require only class ICOps which is a subset of IECOps. That means, in the new release class IECOps is no longer needed, yet it is still available.
New names have been introduced for the implementation variants as well as for the corresponding header files. The old names can still be used in existing programs. Consider the key set as example:
Old Names | New Names | ||
---|---|---|---|
IKeySet | ikeyset.h | IKeySet | iks.h |
IKeySetAsAvlTree | iksavl.h | ||
IKeySetOnBSTKeySortedSet | iksbst.h | IKeySetAsBstTree | iksbst.h |
IHashKeySet | ihshks.h | IKeySetAsHshTable | ikshsh.h |
IKeySetOnSortedLinkedSequence | ikssls.h | IKeySetAsList | ikslst.h |
IKeySetOnSortedTabularSequence | ikssts.h | IKeySetAsTable | ikstab.h |
IKeySetOnSortedDilutedSequence | ikssds.h | IKeySetAsDilTable | iksdil.h |
The following items are not compatible with the new collection class library release:
The abstract hierarchy makes use of virtual inheritance. When you subclass from a Collection Class and implement your own copy constructor, you must initialize the virtual base class IACollection<Element> in your derived classes.
Different from previous releases, the return type of the newCursor method is now for any collection a pointer to the abstract cursor class ICursor (ICursor*).
You can still derive from reference classes without overriding existing collection class member functions. Yet, you can no longer override existing collection class functions and use your derived collection class in a polymorphic way without additional effort.
Introduction to the
Collection Classes
Collection Class
Hierarchy
Overall
Implementation Structure
Element
Functions and Key-Type Functions
Collection Class
Polymorphism
Collection
Characteristics
Overview of
Iteration
Iteration with
Cursors
Iteration
with allElementsDo
Flat Collections
Trees
Defining
Equality Relation
Defining Key
or Element Equality
Defining an
Operations Class
Implementing
Element- and Key-Type Functionality
Defining
Member Functions of the Element Object Type
Defining
Separate Global Functions
Using
or Defining an Element Operation Class
Things
to Watch Out For
Class
Template Naming Conventions
Possible
Implementation Paths
Choosing One
of the Provided Implementation Variants
Taking
Advantage of the Abstract Class Hierarchy
Using
Cursors to Locate and Access Elements
Using
Cursors to Iterate Over a Collection
Using
allElementsDo and Applicators to Iterate Over a Collection
Cursors vs.
Exception Handling