Note: STLplus version 3 is not backwards-compatible with STLplus version 2.
You should only make the changeover if you are prepared to do some porting
work or if you are starting a new project.
Use at Your Own Risk: STLplus version 3.0 is classified as an alpha release.
Although it is based on STLplus, which was a stable release, there is enough
reworking for all sorts of errors to have crept in. Furthermore, I have not
yet ported any significant applications to version 3, so only small test
programs have been written so far.
Changes:
*Split the library into a Collection
The original STLplus was a single, rather large, library. It has now been
split into 5 libraries. So STLplus is now referred to as a Library Collection,
containing within it the STLplus containers, portability, persistence,
subsystems and strings libraries.
*Added the stlplus Namespace
All of the components in the STLplus library collection now have their own
namespace - stlplus. Thus, the smart_ptr class is now stlplus::smart_ptr.
*Removed TextIO
STLplus had it's own I/O subsystem for historical reasons. That was OK when I
was the only user, but a bit much for new users to be expected to accept. I
decided that TextIO had to go, but needed to wait for other major changes to
justify a change that makes the library not backwards compatible.
STLplus version 3 does not have the TextIO subsystem any more - all functions
using TextIO have been rewritten to use IOStream.
*Removed string_arithmetic
The string_arithmetic package was an anachronism - it was part of another
project which seemed suitable for inclusion into STLplus, but now seems not to
fit. So I have removed it.
*Renamed error_handler to message_handler
The old name error_handler I think confused people as to the purpose of this
component. Since STLplus 3 is not compatible with previous versions, I am
taking this opportunity to rename it to better reflect its purpose -
message_handler.
*Safe Iterators
Iterators in the STL are badly designed - there are several major pitfalls
with using them as a result of their design. However, I wanted STLplus to feel
like the STL to make it easier to use, so felt I should use the iterator
concept despite the problems associated with them. Some of the STLplus
components therefore also use iterators.
In STLplus 2 I included some error checking for misuse of iterators. In
STLplus 3 I have completed the job - so I have termed the STLplus iterators
safe iterators.
*Changed Interfaces to enable Namespace Support
The old STLplus used a technique for writing template functions that required
external resources to be in the global namespace. This approach is not
compatible with placing all of the STLplus into a separate namespace. All
these functions have been rewritten to take an extra parameter so that those
external resources are now passed as parameters.
This rewrite applies to the persistence library and the strings library.
*Persistence Functions Renamed
STLplus 2 relied on overloading the functions dump and restore to implement
persistence. However, because of the redesign of the functions discussed
above, persistence functions are now passed as parameters to other persistence
functions. To avoid ambiguity, all persistence functions now have unique names
- dump_type and restore_type. See the persistence library for more
information.
Note: the persistence file format is unchanged by this rewrite, so STLplus
version 2 files can be read by version 3 and vice versa.
*Print and String-Conversion Functions Renamed
STLplus 2 string_utilities also relied on overloading the functions print and
to_string to provide printing and formatting functions for whole data
structures. However, because of the redesign of the functions discussed above,
functions are now passed as parameters to other functions. To avoid ambiguity,
all print and string-formatting functions now have unique names - print_type
and type_to_string. See the strings library for more information.
Post Categories
- Announcements (21)
- Examples (9)
- Software (35)
- C# (5)
- C++ (27)
- Shell scripting (3)
- wxWidgets (1)
- Tutorials (8)
- VHDL (3)
- Websites (7)
- Google Analytics (2)
- HTML/CSS (6)
- Javascript (1)
- MySQL (5)
- PHP (6)
- SEO (2)
- WordPress (1)
-
Recent Posts