Available C++ Libraries FAQ

Commercial libraries (O-Z)

ObjectBuilder - GUI library

ObjectBuilder includes the Object Interface (OI) class library which is a C++ object-oriented implementation of both Motif and Openlook interfaces. Note that interested parties can read more about the OI library in the 1300 page "OI Programmer's Guide" by Gary Aitken and Amber Bensen published by Prentice-Hall.

ObjexxFCL - Fortran Compatibility Library

ObjexxFCL is a C++ library that provides Fortran-compatible array, string, formatted i/o, and intrinsic function support for Fortran-to-C++ interfacing and migrations, as well as reengineering and modernization of C++ applications. The ObjexxFCL multi-dimensional arrays have advanced high performance and dynamic allocation and resizing capabilities. A unique automatic allocation system is ideal for applications migrating from static sizing or when the size parameters become known at different stages of a run.

Octo+ - Extenstion library to MFC

The Octo+ MFC class library is an extenstion library to MFC. Subscription entitles you to the use of all the classes developed for the duration of a year. There is a commitment to issue a new class every two weeks. De facto at least one new class is added every week. You could compare it to the subscription to an online MFC source magazine. The class library is accessible at : www.periphere.be where you can get all the latest information up-to-date. New classes issued are eMailed to registered users.

Open Dialogue

Operating Systems

Open Interface Version 3.0

This is a C-based UI library, but type-safe for C++ compatibility. The software also comes with a WYSIWYG GUI builder.

They include tons of extra widgets like business graphics (bar, pie, and line charts), images (all standard formats), and hypertext help.

Other software in Open Interface includes international character support, multi-font support, full printer support, memory management, file I/O support as well as Windows DDE support (the latter is, of course, non- portable).

They also have a product called Nexpertobject, which is an expert systems tool intended for GUI development.

Performance Plus for C/C++ is a native C and C++ implementation of the LAPACK, levels 1-3 of BLAS, FFTPACK, VFFTPACK, and LINPACK math libraries. It is highly optimized and parallelized to take advantage of multiple CPUs when they are available. It includes modules to accelerate programs that use Rogue Wave's Math.h++ and LAPACK.h++ so that Rogue Wave users can get the optimization and parallelization benefits of Performance Plus for C/C++ without making any source code changes.

Performance Plus for C/C++ is available for Windows NT, Windows 95, Solaris/SPARC, and Solaris/x86. It is compatible with Borland C++, Microsoft Visua!l C++, and Absoft C++ on Windows, and with Apogee and SunSoft C++ on Solaris.

ppLinear - General Linear Algebra lib

A general purpose linear algebra library in C+ also
lso provides FFT's and polynomial manipulations. Extremely
powerful and requires an adept C++ programmer familiar with
the Standard Library.
Distributed as a static library and headers. Examples provided.
free - currently in beta.

Rogue Wave SourcePro C++ - C++ libraries

Rogue WaveŽ SourceProŽ C++ is a set of cross-platform enterprise C++ development components. Have been around for more than a decade now, deployed in some of the world's most sensitive mission-critical systems.

SourceProŽ Analysis contains a full range of C++ components for solving mathematical problems in business and research. The algorithms they encapsulate can be relied upon for accurate and precise calculations.

(Note: the Tools.h++ libraries shipped with the Sun C++ compiler are a very early, limited OEM version of the current Rogue Wave offering).

rxstring - Regular expression library.

The rxstring library is an extension of the C++ stdlib string class. The rxstring class is a powerful alternative to traditional regular expression libraries. Because the syntax used by traditional regular expression packages is difficult to learn, rxstring uses a alternative notational system that is much easier to learn to read and write. Because indirection is a fundamental programming technique, rxstring regular expressions can be nested within each other using labels. Also the regular expressions can be self referential, this makes it possible to write very powerful regular expressions that can validate input just as a recursive descent parser does, but without the hassle of hand coding or resorting to a tool like yacc or bison. rxstring has much more than the usual search and match functions, There are a large number of functions that aid in validating, parsing, and modifying text. In spite of the number of functions, there is an underlying system that makes it easy to recall the entire library off the top of your head without much effort.

The SCSI++ version 2.5 SDK is now available. Quickly and easily develop SCSI control applications for Windows NT 4.0, Windows 2000, or Windows 9X using an Object Oriented Interface.

No more messing around with ASPI32 and IOCTL interfaces. No more deciphering the SCSI specification. An application can execute SCSI commands on any Windows system using the same binary. Use High Level C++ classes and methods to control any SCSI Devices. Roll your own commands easily. Update mode page data easily. Version 2.5 has the capability to control ATAPI CD-ROM and CD-R devices.

The product includes online (.INF) and printed documentation, a demo program, and samples.

TOUCH-GUI 2.1 costs DM 1.720,00 excl. VAT (ca. US $990), the runtime DLL's may be distributed royalty free. For upgrade prices and special project licenses (including source code of TOUCH-GUI) contact the supplier. NOTE: TOUCH-GUI 2.1 single license will be available at a special price of DM 199,00 excl. VAT (ca. US $120) during 04/01/94 - 06/30/94. Printed documentation is not shipped with the special price product, it is available for another DM 99,00 excl. VAT (ca. US $60). However, full online documentation is included.

Time Series API - Professional time series modelling and simulation library for C++

Time Series API is a professional C++ class library for simulating (backtesting) and deploying financial trading strategies as well as general purpose time series modelling. The library is a stand-alone time series engine that can be extended via a component object model.
Models are defined using 'formula syntax and semantics' made possible by a set of lightweight interface classes that supersede the component framework. The library supports the modelling of even the most complex ideas, is easily extended, and supports deployment in any timeframe (variable or fixed, with intervals as short as one millisecond). The library also benefits from a set of highly optimized database classes for reading and writing millions of records in seconds.
As a general purpose tool for modelling time series, Time Series API has applications in many domains, such as:

Trading and investment strategy simulation and deployment:

Individual market and inter-market models

Iterative evaluations on baskets

Evaluation on aggregates (e.g. custom indices)

Fundamental company data models

Economic modelling

Time series normalization and processing:

Normalizing neural training data

Data transformations

Timeframe conversions

Data monitoring (e.g. financial, scientific):

Notification

Pattern recognition

Filtering applications, (e.g. noise reduction)

Computational modelling

Genetic algorithms

Operating Systems

PC DOS

PC 32-bit Windows

PC Windows

Compilers

Any standard C++ compiler

Added : 2009-08-10 Amended: 2009-08-10 Licensing : Commercial

Time Series API - Professional time series modelling and simulation library for C++

Comment from : Jean-Daniel NICOLET on 2011-12-15

Tools.h++ was once one of the best general purpose C++ library available. Its container classes were well-designed, offering template-based as well as non-template based classes.
Its string and container classes have nowadays been superceded by the standard library, which offers essentially the same (and even better) features essentially for free.
Two things remain interesting with Tools.h++: its persistence mechanisms, coupled with portable streams allowing to transport objects accross platforms, and its associated twin library, DbTools.h++, that was ahead of its time for allowing portable database access with a C++ way of defining SQL-like queries, based on template meta-programming tricks that were totally non popular at that time.

This C++ library implements an object-oriented approach for reversing transactions at the C++ object level. A transaction consists of a series of three types of operations on objects: creation, modification, and deletion. The reversal (undo) of the transaction is implemented by effectively deleting the originally created objects, restoring the state of the modified objects, and effectively re-creating the deleted objects. References between objects are properly restored. This approach can significantly reduce the cost of implementing multiple level undo in an application, compared to a ! procedural "reverse transaction" approach. Object level undo also supports transaction rollback in other scenarios such as caught C++ exceptions.

The $495 product includes a 100-page tutorial and over 300 pages of documentation in helpfile and printed format. A free demonstration version of the library can be downloaded from the Web site listed below.

Valentina - Fast, Cross-platform, Object-Relational SQL database

Valentina is an extremely fast and powerful cross-platform,
cross-application, Object-Relational SQL database. It executes operations in
hundreds and sometimes 1000 times faster than other databases. Valentina has
all types of fields from Bit to BLOB and Picture (i.e. allows you easy
create multi-media dbs). Valentina provides reach set of features: SQL, full
text indexing, RegEx search, encryption, compression, and calculation
fields. It can be used with a lot of APIs: C/C++, Java, COM, Director,
REALbasic, PHP, Objective-C, AppleScript, xCards, WebSiphon.

Vettrasoft Z Directory - General-purpose library of c++ objects

The Z Directory (as of 2010) currently deals with the following subject
matter:

object - database storage. You can store and retrieve
objects, so their state can extend beyond the lifetime of
a program's run. This is not the same as an o-o database.
The Z Directory provides a simple mechanism for writing
objects to a database, but it does not supply the database.

data representation. "Data bags" are a way to store data
in text stings. The data may be put into lists or a matrix and can
recurse. The format is defined by a meta-data schema. This may sound
suspiciously like XML. Once again, the data bag concept pre-dated
XML, having existed in the early- to mid-1990's. Whereas XML focuses
on HTML and web applications, data bags are to be used by programs
written in C++.

message transport. The problem of moving a block of bytes
from one place to another is a major topic in software engineering
usually assigned to the category of networks. the Z Directory has
code to do it with the following defining characteristics: (1)
an address class set is provided to address the topic of defining
a location. There are many types of addresses: internet, web,
computer memory, e-mail, postal, etc. (2) the interface for moving
a block of data over a circuit (a path between an originating and
destination address) has no reference to the implementation.
Typically the mechanism is sockets, but with the Z Directory, this
can also be via shared memory (if within the same host computer),
TLI (if within a system V unix environment), or other transport
system.

containers. The Z Directory provides template-based
containers to store your data: linked lists, arrays, stacks,
and [coming soon] trees. You will probably immediately think STL.
the Z Directory's container interface is a bit different, and you
might find, simpler. The same member function names are used
irregardless of the implementation. Peering into your data in
a debugger is much easier than with STL. There are other
differences.

string and text processing.
One common complaint opponents of C++ use is the lack of tools for
managing strings. The Z Directory attacks and destroys this argument.
String operations include regular expression searches; extracting
words, sentences, and quoted text sub-strings; trimming lines;
string to type conversion; monetary formatting; concatenation;
white-space processing; and much more.

encryption. There are a number of encryption and decryption
algorithms available for encrypting your data, including
Chambers-Rantgen, DES, and Blowfish.

postal addresses. Strings containing addresses can be
easily parsed. Currently only American addresses are fully
handled. We expect to grow this to encompass all addressing
formats used world-wide.

time and date. If you ever need to get the current time/date,
and then add or subtract a span of time to/from it, the Z Directory
provides unparalled ease for that. You can add say 1 week 3 days and
15 hours to any given date and get the result with only a couple
lines of code.

threads and semaphores. In a Microsoft environment,
you would need to use functions such as CreateMutex(),
WaitForSingleObject(), and ReleaseMutex().
In some unix environments, the corresponding calls would be
pthread_mutex_init(), pthread_mutex_lock(), and
pthread_mutex_unlock(). Or, you can use the Z Directory
and use a single function call, instead of learning the
specifics for each operating system to intend to port to.

clients and servers. There are a set of classes dealing
providing client-server architecture. A dispatch mechanism forwards
a message to your message processing code when it arrives to a
server.

error processing, logging, tracing and debugging.
An elaborate but general-purpose group of classes help you manage
what to do in case of an error, above and beyond the simple mechanics
embedded in c++. You can create event logs and control when a message
is to be generated. You can control when a message is created, and to
where it is to go.

Files and directories. In Microsoft, directories are
called folders. Once again, by using the Z Directory you need not
concern yourself with the specifics of any particular operating system.
How to read the contents or traverse them is handled by a simple set
of classes and routines in the Z Directory. Creating, removing,
renaming, opening and closing a file or directory are handled in a
portable fashion. You can do things like add text to a file, get a
line of text or a specific number of characters.

One fact: Z Directory is devoid of graphics utilities. Writing tools for
GUI programming is a specialized, big, never-ending work sink. We have
decided to focus on more 'framework' issues. Also, there are plenty of
libraries out there dealing with GUIs and graphics.

ViewKit includes generic application classes, menu, dialog, and preference classes; as well as ToolTalk and UNIX process control systems.

ViewKit ObjectPak builds on the C++/Motif programming methods established by Doug Young in his book "Object-Oriented Programming with C++ and OSF/Motif". ViewKit ObjectPak provides a variety of ready-to use components and enables developers to easily extend ViewKit by creating new component classes. With these high-level components, ViewKit ensures consistency throughout a family of applications, and promotes enterprise-wide software reuse. In addition, ViewKit supports easy and effective communication between applications by using ToolTalk(tm), the CDE standard for inter-application messaging.

ViewKit ObjectPak is available in binary and source form. Originally developed by Silicon Graphics, ViewKit is now available through ICS for most UNIX platforms.

Visibility for C++ - Create Windows GUI's without using any UI code

Visibility for C++ is a revolutionary new product for creating user interfaces. It enables object systems written in C++ to be visualized and interacted with via a state of the art GUI on the Windows platform and it accomplishes this without requiring any UI code to be written, generated or otherwise created. User Intefaces that would normally take weeks or even months to create, can be created in no time at all.

Visibility for C++ is the first in a series of products that utilize a new technology called Outerfacing. This new technology embodies a powerful new paradigm for creating User Interfaces for object systems called Object Visualization. This paradigm replaces the Model-View-Controller (MVC) paradigm on which almost all current UI technology is based. By utilizing the inherent structure found in an object system, it eliminates the need for the View and Controller portions of the MVC paradigm and all its attendant code requirements. In their place Object Visualization gives the objects in the object system the inherent ability to be visualized and interacted with directly.

Instead of having to write large amounts of UI code to implement the view and controller as is required with the MVC, Object Visualization places an outer face of UI elements over the object system structure and utilizes the internal state of the objects to control their appearance and behavior. This enables the entire UI for an object system to be created interactively while the program is executing without having to write any code.

Since creating the UI often accounts for over half of the entire programming effort, we firmly believe that this new paradigm is going to revolutionize the way that User Interfaces are developed.

Warne's Garbage Collector (WGC)

WGC is a full-featured high-performance C++ memory manager that includes:

an incredibly fast explicit memory manager (drop-in new/delete)

a parallel incremental generational non-copying collector

a transparent just-in-time heap-checker

WGC's fast explicit memory manager provides a drop-in accelerated new/delete. Using a multi-tiered parallel algorithm with the first tier inline, WGC can allocate most objects inline in less than 10 instructions! To enhance space efficiency WGC uses address-aligned storage algorithms with no per-object overhead (no linked lists!). To reduce fragmentation, WGC maintains a single process free store for all threads, modules, and DLLs.

WGC's collector implements both conservative and accurate scanning and fully supports C++ code. Classes, arrays, scalars, interior pointers, unions, cross-heap pointers, anonymous unions (really!), large objects, library code you have no control over, etc. are all supported. Plus, you can incrementally deploy automatic memory management in existing or new applications, making some classes or objects collected and some not.

WGC's just-in-time heap-checker stays active during the entire development cycle, transparently checking every new and delete. If a check fails, WGC will spawn your debugger and take you live to the line in question. To complement the live access to the line that failed a delete check, WGC provides detailed pointer/object info (allocating thread/line/file/pass count, object allocation time in microseconds, etc.) Debugging extensions allow interactive display/logging of object/pointer status and process stats.

WGC is currently available for all major C++ compilers under Windows NT, Windows 95, and OS/2. WGC is priced at $895 per developer for all platforms, with no royalties. Team & Volume discounts apply. Source available. Ports to other platforms in progress.

Wind/U - Cross platform Windows environment

Wind/U lets you port existing Windows applications to UNIX, OpenVMS,
OS/390, or create new applications for Windows 95, Windows NT, and UNIX
environments efficiently and cost effectively. It provides the
standard Win32 API and MFC 4 on UNIX, allowing a single set of source
code across all platforms. Wind/U applications maintain identical
functionality between Windows and non-Windows versions. Features
include ActiveX controls, OLE, COM, multithreading, Windows 95 common
controls and common dialogs, WinInet, Service APIs, OpenGL, online help,
and printing.

WinSockets++ 1.1 - A C++ class library for WinSockets.

This is more than just a wrapper for the WinSockets calls. It provides higher-level functions that make reading/writing to sockets very easy. Additionally, the Async aspect of the library makes using the asynchronous functionality of WinSockets *very* easy and your code *very* clean.

Operating Systems

WNDX - Graphical User Interface development environment

WNDX was a set of C libraries, NOT (never) C++. The WNDX domain has
NOT disappeared. It redirects to the current owner's web site.
WNDX has not been actively under development since 2000, however,
numerous companies are still using the product to develop and deploy
solutions currently.
Inquiries can still be sent to info@wndx.com

WSC4C - Windows Standard Serial Communications Library for C/C++

The Marshallsoft serial communications component library for C/C++ (WSC4C) is a serial communication library based on the Windows serial comm API. WSC4C uses the standard Windows API to communicate with any device connected to a serial port from within a C/C++, Visual C++, C# or .NET application. The component library includes 34 functions plus serial line status & control, modem control, XMODEM and YMODEM, ASCII and ANSI terminal emulation. A good selection of example programs is provided, including console mode and multi-threaded examples as well as Microsoft Foundation Class (MFC) and Borland C++ Builder (BCB) examples.

zApp Developer's Suite V2.2

The zApp Developer's Suite is a set of libraries and a designer containing over 300 object classes that provide GUI and other capabilities. It is the single solution to the problem of quickly writing commercial quality applications that run on multiple platforms. The zApp Developer's Suite consists of:

zApp, the industry leading C++ application framework

zApp Factory, a visual designer and code generator for the zApp environment

zApp Interface Pack, a set of powerful custom controls for zApp.

The software comes with about 2500 pages of documentation and complete on-line help. It costs between $1,000 and $5,000 per developer, depending on the platforms needed.

ZGRAF - C++ Multi-Platform Graph Toolkit

The ZGRAF C++ Multi-Platform Graph Toolkit is a library for generating and printing tech. and business graphs in a number of environments. Graph styles include X/Y, Bar, Pie, Area, Scatter, Polar, Log, 3-D Surface, Contour, Smith Chart, and more. Support for X-Windows soon.Full C++ source code is included. Price: $30 - $99, with no royalties.

Zinc V4.1

This is a full C++ class library that comes with the Zinc Designer (a WYSIWYG GUI builder). Their classes include some graphic capabilities, a rather nice error system, and a portable, if rudimentary, help system. Also included is the source for the library (and for the Designer!).

In addition to the usual GUI stuff, Zinc also provides international character support (an extended version, for extra bux, is in the works), some container classes, and filesystem portability. They also allow you to incorporate platform-specific stuff (e.g., system messages) into their API; but, of course, you're on your own when it comes to porting any additions. The main new feature for 4.1 is object persistence.
, (800) 638 8665, (801) 785-8900, (801) 785-8996 (fax), (801) 785-8997 (bbs)

Copyright (c) 2019 Nikki Locke, Trumphurst Ltd.
Permission is granted to distribute over the Internet without charge.
The author's permission is required (and usually given) to distribute
in any other way, including on CD.