This section highlights some common points among the classes in the Essential Tools Module.
The Essential Tools Module provides implementation, not policy. Hence, it consists mostly of a large and rich set of concrete classes that are usable in isolation and independent of other classes for their implementation or semantics. They can be pulled out and used just one or two at a time. Concrete classes are the heart of the Essential Tools Module.
The Essential Tools Module also includes a rich set of abstract base classes, which define an interface for persistence, internationalization, and other issues, and a number of implementation classes that implement these interfaces.
Some Essential Tools Module classes are further categorized as collection classes, or collections, as explained in Section 2.2.4.
Collection classes generally follow the Smalltalk naming conventions and semantical model: SortedCollection, Dictionaries, Bags, Sets, and so on. They use similar interfaces, allowing them to be interchanged easily. The template-based and generic collections will hold any kind of object; the Smalltalk-like collections require that all collected items inherit from RWCollectable.
Choosing which collection classes to use in your programs is not a trivial task. Appendix A can help you decide which class is the best for your purposes. Section 3.1, "Public Classes," in the Essential Tools Module Reference Guide shows the class hierarchy of all the public Essential Tools Module classes. In addition to these public classes, the Essential Tools Module contains other classes for its own internal use.
The concrete classes consist of:
The template-based collection classes, discussed in Section 6.7, "Collection Class Templates."
The generic collection classes using the preprocessor <generic.h> facilities, discussed in Chapter 7, "Generic Classes (deprecated)."
The Essential Tools Module provides a rich set of lightweight simple classes. By lightweight, we mean classes with low-cost initializers and copy constructors. These classes include RWDate, RWDateTime, and RWTime (for dates and times, with support for various time zones and locales); RWCString (for single and multibyte strings); and RWWString (for wide character strings). Most instantiations of these classes can be stored in four bytes or less, and have very simple copy constructors (usually just a bit copy) and no virtual functions. The Essential Tools Module Reference Guide provides additional information on these classes.
Template-based collection classes, or templates, give you the advantages of speed and type-safe usage. When templates are used sparingly, their code size can be quite small. When templates are used with many different types, however, their code size can become large because each type effectively generates a whole new class. If you have the Standard C++ Library, you can use the Essential Tools Module template-based collections that are based on the Standard C++ Library. If you do not have the Standard C++ Library, you can use a subset of the templates, described in Section 6.9.1 and Section 6.14.
Generic collection classes, which are deprecated, are those which use the <generic.h> preprocessor macros supplied with your C++ compiler. Because they depend heavily on the preprocessor, it can be difficult to use a debugger on code that contains them. Chapter 7, "Generic Classes (deprecated)," provides additional information.
The Essential Tools Module includes a set of abstract base classes and corresponding specializing classes that provides a framework for many issues. The list below identifies some of these issues and associates them with their respective abstract base classes. The description of each class in the Essential Tools Module Reference Guide indicates if it is an abstract base class.
Virtual page heaps
Essential Tools Module Reference Guide
Essential Tools Module Reference Guide
©2004 Copyright Quovadx, Inc. All Rights Reserved.
Rogue Wave and SourcePro are registered trademarks of Quovadx, Inc. in the United States and other countries. All other trademarks are the property of their respective owners.
Contact Rogue Wave about documentation or support issues.