Available C++ Libraries FAQIntroductionAbout the listHere is the latest draft of the "Available C++ libraries FAQ".This list is not exhaustive. If you are looking for a particular library, and you don't find it here, try an ordinary Web search engine (e.g. Google). If you do find a suitable library, why not use the submission form to add it to this list for the next person? Due to the increasing size of this list, and problems with updating the automatic poster at rtfm.mit.edu, the full list is now only available on the Web (at www.trumphurst.com/cpplibs/). Marshall Cline's C++ FAQ is available on his Web page. I have not included a credits list, because it would be nearly as large as the rest of the file! Many thanks to all those who contributed, and I hope you won't be offended that I haven't mentioned you. Please send comments, criticisms, additions and amendments to me using the forms on the Web site. Please DO NOT mail me with requests for assistance in finding files mentioned in the list. I am unable to provide such a service. Definite information such as "file xyz is no longer at site xxx" IS welcome - even better if you can tell me an alternative site where it can be found. If you are new to the Internet, I recommend the newsgroups "news.announce.newusers" and "news.answers" for starters.
Added : 1995-01-01 Amended: 2008-06-26 Licensing : N/A
Comment from : Nikki Locke on 2008-06-26I recently made major changes to the FAQ, adding forms to let people make submissions and add comments without using email. Please let me know if I screwed up anywhere.Dos and don'ts - (Mostly don'ts)
Added : 1997-12-04 Amended: 2008-07-06 Licensing : N/A
Comment from : Nikki Locke on 2008-07-22Big thanks go to Andrew Marlow, who has been going through the FAQ checking the URLs and various other details.Adding or amending entriesSending in a new entryIf your library isn't mentioned, or you wish to update your entry in this list, feel free to submit an entry via the Web form. Please note that entries will be restricted to a couple of paragraphs - if you send me a 100k text file giving minute details, I will have to summarise it. Or I might just ignore it, if I'm busy. It is much easier for me if you just send me an entry which is the right size to start with.Please try to format your entry in the same way as the entries already in this list. If you wish, you may include HTML tags in your Long description text, which will make it through to the WWW version of this document. Please do not use heading levels 1-3, and please do not include any hot links in the body of the text - all links should occur at the end of the text.
NOTE TO VENDORSThis FAQ contains details of both free and commercial libraries. Vendors who have sent me details of their libraries for inclusion in the FAQ have been pleasantly surprised by the level of interest generated. Please remember, I only allow 2 or 3 paragraphs describing the product, and no advertising hype !
Added : 1995-01-01 Amended: 2008-07-21 Licensing : N/A
IndexesHow to find libraries in the FAQThe recommended way to search the database is via the index page, which accesses the database directly.
Added : 1995-01-01 Amended: 2008-07-06 Licensing : N/A
Libraries available to download (A-C)ACDK - A Java-oriented C++ framework for server developmentACDK (Artefaktur Component Development Kit) is a platform-independent library for generating distributed server-based components and applications. With support for memory-managment, threading, networking and scripting (Lisp, Perl, Tcl, Java, PHP).
Operating Systems
Compilers
Added : 2000-12-22 Amended: 2008-07-22 Licensing : GNU copyleft
ADAPTIVE Communication Environment (ACE) - C++ IPC wrappersThis release contains contains the source code, documentation, and example test drivers for a number of C++ wrapper libraries and higher- level distributed application frameworks developed as part of the ADAPTIVE project at the University of Calfornia, Irvine.The C++ wrappers encapsulate many of the user-level BSD and System V Release 4 IPC facilities such as sockets, TLI, select and poll, named pipes and STREAM pipes, the mmap family of memory-mapped file commands, System V IPC (i.e., shared memory, semaphores, message queues), and explicit dynamic linking (e.g., dlopen/dlsym/dlclose) using type-secure, object-oriented interfaces. The higher-level distributed application frameworks integrate and enhance the lower-level C++ wrappers to support the configuration of concurrent network daemons composed of monolithic and/or stackable services A relatively complete set of documentation and extensive examples are included in the release. A mailing list is available for discussing bug fixes, enhancements, and porting issues regarding ACE. Please send mail to ace-users-request@ics.uci.edu if you'd like to become part of the mailing list.
Added : 1995-01-01 Amended: 1997-03-19 Licensing : Not known
ADBLib - Database lib for Visual C 6ADBLib.dll provides some classes and routines to develop DAO(r) database applications quickly using Microsoft Visual C 6.0, the important feature of this library is,besides the power and coding speed, you can still access DAO derived objects from your programs allowing you to accomplish complex tasks when needed. To simplify your task when creating modeless form, a simple tool ADBWizard has been added - it will automate the process of base class substitution, so that you can create forms and add them to your application very quickly.
Operating Systems
Compilers
Added : 1999-06-04 Amended: 1999-06-04 Licensing : Shareware
Alcatraz - Software copy protection C++ libraryAlcatraz is a C++ library that can be used to provide copy protection capabilities to an application. You can create and distribute time-locked trial versions and hardware-locked full versions of your software. Both applications and components can be copy protected. The license file is signed and encrypted to prevent tampering. A license file generation program is provided along with the library. Online help is included with the software.
Added : 1999-06-04 Amended: 1999-06-04 Licensing : Shareware
Amulet - User Interface Development EnvironmentAMULET is a user interface development environment in C++. Code written using Amulet will work with little or no changes on all platforms.More than just another free "virtual toolkit," Amulet includes many features specifically designed to make the creation of highly-interactive, graphical, direct manipulation user interfaces significantly easier. Based on a proven earlier system, called Garnet, that was in wide use in the Lisp community, Amulet adds a number of important innovations and refinements. Important features of Amulet include:
Operating Systems
Compilers
Added : 1996-02-29 Amended: 1996-02-29 Licensing : Public Domain
APE - Portable C++ threading and sockets frameworkAPE is the "APE Portable Environment" and class libraries for writing portable threaded servers in C++, under UNIX (pthread) and Win32 API's. APE provides portable class abstraction for threads and sockets, and is used as a base framework for other projects. The goal of APE is to make writing threaded servers in C++ both practical and convenient, even for small and simple projects, and hence simplicity and low runtime overhead are design goals.The 1.0.0 release of APE is available at ftp://ftp.voxilla.org/pub/ape with both source and pre-built binary packages. APE has been used not only in server applications, but also in conjunction with client class frameworks, such as QT/KDE, to offer threading and socket services. APE is licensed under the GPL with additional priviledges as annoted in the source under terms similar to Guile. As of March 14th, 2000, the APE project was merged with the Common C++ project to form the newly introduced Common C++ portable application framework.
Operating Systems
Compilers
Added : 2000-04-26 Amended: 2008-07-22 Licensing : GNU copyleft
Arabica - SAX2 implementationSAX is an event-based XML processing API. Arabica is a full SAX2 implementation, including the optional interfaces and helper classes. It provides uniform SAX2 wrappers for the Expat parser, Xerces, Libxml2 and, on Windows, for the Microsoft XML parser. The DOM is a platform- and language-neutral interface which models an XML document as a tree of nodes, defined by the W3C. Arabica implements the DOM Level 2 Core on top of the SAX layer. XPath is a language for addressing parts of an XML document. Arabica implements XPath 1.0 over its DOM implementation. XSLT is a language for transforming XML documents into other XML documents. Arabica builds XSLT over its XPath engine. Arabica is written in Standard C++ and should be portable to most platforms. It is parameterised on string type. Out of the box, it can provide UTF-8 encoded std::strings or UTF-16 encoded std::wstrings, but can easily be customised for arbitrary string types.
Operating Systems
Compilers
Added : 2008-08-05 Amended: 2008-08-05
Architector - GradSoft C++ ToolBoxThis is multiplatform C++ library, which incapsulate set of common C++ programmer tasks: Threading, Logging, Parsing options and more.
Operating Systems
Compilers
Added : 2000-12-29 Amended: 2000-12-29 Licensing : Copyright (other)
Arjuna - For writing fault-tolerant (distributed) applicationsArjuna provides a set of tools (C++ classes and libraries) for writing fault-tolerant distributed applications using persistent objects, atomic actions, and replication. Included in the system is a C++ stub generator (and associated RPC mechanism) which takes a C++ class definition for an object and generates client and server stub code. Using these stub classes occurs in a relatively transparent manner: the differences between a local and distributed application are typically only a single line.The system has been ported to a wide range of architectures and C++ compilers, both by the authors and other users, and has been in use for several years. A comprehensive manual is available with the distribution. The system has been ported to a wide range of architectures and C++ compilers, both by the authors and other users, and has been in use for several years.
Added : 1995-01-01 Amended: 1995-01-01 Licensing : Education
Armadillo - Armadillo linear algebra (matrix) libraryThe Armadillo C++ Library aims to provide an efficient base for linear algebra operations (matrix and vector maths), while at the same time having a straightforward and easy to use interface. To keep it relatively lean, it does not aim to provide a boilerplate of functionality, such as GNU Octave. Its intended target audience is scientists and engineers. A delayed evaluation approach is employed (during compile time) in order to combine several operations into one and reduce (or eliminate) the need for temporaries. Where applicable, the order of operations is optimised. Delayed evaluation and optimisation are achieved through recursive templates and template meta-programming.
Operating Systems
Compilers
Added : 2008-12-09 Amended: 2008-12-09 Licensing : Open Source
AvlTree - C++ AVL tree class implementationThis is a C++ implementation of AVL trees. It is targeted more for teaching purposes than for efficiency.
Operating Systems
Compilers
Added : 1997-03-19 Amended: 2008-07-22 Licensing : Public Domain
Awesime - A C++ task library explicitly designed for simulationSimulation library
Added : 1995-01-01 Amended: 2008-07-22 Licensing : GNU copyleft
b64 - base-64 Encoding and DecodingSimple, lightweight, library for RFC-1113 compatible base-64 encoding and decoding. The core library is written in C, with a C-API. The C++ mapping offers a flexible facade over the C-API, and is 100 per cent header-only. All code is platform-independent.
Operating Systems
Compilers
Added : 2006-04-29 Amended: 2008-06-26 Licensing : Public Domain
BCGControlBar - MFC extension libraryThe MFC extension framework library which allows you create Microsoft® Office, Visual Studio® and Internet Explorer®-like applications with full toolbars/menus customization, docking control bars, menu bars, Office-2000 menus and more.
Operating Systems
Compilers
Added : 2000-04-26 Amended: 2006-12-02 Licensing : Shareware
BIGINT - N-bit integer math classBIGINT is an unsigned N-bit integer math class for the C++ programming language.BIGFP is a floating point math class based on BIGINT for the C++ programming language.
Added : 1997-11-27 Amended: 2008-07-22 Licensing : Public Domain
Blitz++ - Scientific computing in C++Blitz++ is a C++ class library for scientific computing which provides performance on par with Fortran 77/90. It uses template techniques to achieve high performance. The current versions provide dense arrays and vectors, and small vectors and matrices.
Operating Systems
Compilers
Added : 1998-07-27 Amended: 1998-07-27 Licensing : GNU copyleft
Brent's univariate minimizer and zero finder.Ref: G.Forsythe, M.Malcolm, C.Moler, Computer methods for mathematical computations. Precision - doubleObsolete - now part of the linalg package
Added : 1995-01-01 Amended: 2008-11-04 Licensing : Not known
BRL10 - Binary Relations Library for C/C++Binary relations are more directly based on semantic concepts rather than on recordlike structures as traditional (relational, hierarchies, networks, object-oriented) models are.Binary Relations tend to be more functionally complete in their information processing capability, and more precise in their semantic modelling. The Binary Relations Approach was implemented in Binary Relations Library for C/C++. BRL is not a full featured DBMS. It does not support all ideas of the Binary Relations Approach. BRL is however a small, fast and reliable engine. BRL provides basic tools for using binary relations in C and C++ programs.
Operating Systems
Compilers
Added : 1996-11-13 Amended: 2008-07-22 Licensing : Non commercial
C* In C++ - Parallel Programming Classes for C++:
Added : 1995-01-01 Amended: 1995-01-01 Licensing : Not known
C++ implementation of differential algebraThis is temporarily unavailable while we resolve the question of whether inclusion of codes from Numerical Recipes makes distribution illegal.Available from the netlib mailing list, in c++/mxyzptlk.shar
Added : 1995-01-01 Amended: 1995-01-01 Licensing : Not known
C++ Portable Components - Portable classes for network and XML developmentThe C++ Portable Components are a collection of class libraries for developing network-centric, portable applications in C++. The classes integrate perfectly with the C++ Standard Library and cover functionality like threads, thread synchronization, filesystem access, streams, shared libraries and class loading, sockets and network protocols (HTTP, FTP, SMTP, etc.), including an HTTP server, as well as an XML parser with SAX2 and DOM interfaces.The C++ Portable Components are available on a variety of platforms. All major desktop and server platforms are supported, including Windows XP, Mac OS X, Linux, HP-UX, Tru64, Solaris and OpenVMS, in addition to Windows CE and POSIX-compliant embedded operating systems. For use in open-source projects, the C++ Portable Components are available for free under an open-source license. Non open-source commercial use requires a separate license.
Operating Systems
Compilers
Added : 2005-02-28 Amended: 2008-07-22 Licensing : Boost
C++ Sockets Library - Unix / Windows Socket programming made easyWhen making this library, there were a few things I wanted to achieve. I did not want to end up with C++ code that had to be used in the same way as the berkeley socket C API are being used ( connect/bind/accept - check result, write - check result, read - check result, etc, etc ). Another thing was the ability to manage multiple sockets in the same thread; the library should be singlethreaded - but not limited to one thread. So.. I never wanted to manage a fd_set for a select() call ever again, no more writing code for accepting a connection - this has already been done again and again in every single networking project ever made.One decision made early on was to treat one socket as one object. And so was the Socket class born. The socket class, by itself, has all the functions needed for address translation (hostname to ip, ip to hostname etc). It owns the file descriptor / SOCKET handle. But it can't do anything. Code for actually doing something with the socket is implemented in other, Socket derived classes.
Operating Systems
Compilers
Added : 2005-01-31 Amended: 2005-02-01 Licensing : GNU copyleft
C++/Tcl - A library for integration between C++ and Tcl.C++/Tcl is a library that allows to easily integrate C++ and Tcl.It provides the following features:
Operating Systems
Compilers
Added : 2004-11-24 Amended: 2008-07-22 Licensing : Open Source
C++/Tk - A complete interface to the Tk GUI toolkit.C++/Tk is a complete C++ interface to the popular Tk GUI toolkit, known from many scripting languages, like Tcl, Python or Perl. The C++/Tk library uses templates and operator overloading to achieve syntactic similarity to Tcl/Tk code.
Operating Systems
Compilers
Added : 2004-11-08 Amended: 2008-07-22 Licensing : Open Source
C++Advio - Advanced i/o, Networking, and Arithmetic CompressionA set of classes (C++ streams) that perform:
Operating Systems
Compilers
Added : 1996-05-22 Amended: 2000-04-26 Licensing : Public Domain
C++SIM 1.5.2 - A simulation package written in C++.C++SIM provides discrete process based simulation similar to that provided by the simulation class and libraries of SIMULA. The linked list manipulation facilities provided by SIMSET are also included in the package, and there is support for a variety of statistics gathering classes.The simulation package requires the use of a threads package and currently only works with the following:
Added : 1995-01-01 Amended: 1997-03-19 Licensing : Education
C/C++ cyclic logs - Record log informationCyclic logs provide a platform-independent way for a server to record stdout and stderr such that the most recent information can be retained in a logfile without such logfiles growing in size such that they might fill the disk up. A cyclic log has a fixed size upon creation and a structure that allows older data to be overwritten on the arrival of new data to be logged.It consists of a C++ library, a C library, a set of commands and a user manual. It is released under the GPL license.
Operating Systems
Compilers
Added : 2008-07-22 Amended: 2008-07-22 Licensing : GNU copyleft
CalcPlus - Interpreter of procedural languageThe CalcPlus library is the C++ class library which provides an ability to use your own programming language built into C++ project. Any algorithm or any constant needed by application can be carried out into the special file, when process comes to the key point, it calls function or procedure stored in the text file. Interpreter runs the function and process returns back to C++ code. Library contains the interpreter which understands simple nameless procedural language. Bi-directional communication between C++ and the code for interpreter available.Version of the language that comes with the library allows to use functions, procedures, blocks, preprocessor, global and local variables and constants, if/for/while statements. Each variable can have value of type: nil, bool, long, float, string, date. Type definitions and arrays are allowed. Functions and procedures may be recursive. New functions written in C++ may be easily added to the language. Syntax of the language can be modified by changing YACC rules. Interpreter is fast enough and may be helpful for many tasks. Platform independent, YACC required.
Operating Systems
Compilers
Added : 1996-05-22 Amended: 1996-05-22 Licensing : Shareware
CBMT - Collaborative BioMolecular ToolsCBMT provides a number of easy-to-use fundamental classes for biologists, chemists and crystallographers. They include: Molecular Structure, Sequence, Standard Formats (PDB, CIF, GCG, etc), Geometry, Statistics, TextParsing, and a single container class (a dynamic Array). All documentation is in HTML, and member functions have *.c examples. I hope that the system can be extended as a communal effort and am piloting this idea in the C++ course at the Globewide Network AcademyVersion 1.3 will be posted shortly including an experimental script language (generated automatically from the *.h files) providing support for persistent objects manipulatable by other languages such as tcl or csh.
Added : 1995-01-01 Amended: 1995-01-01 Licensing : Non commercial
CCL110JE.ZIP - Coroutine class libraryDOS PC/Borland C++ specific.
Operating Systems
Compilers
Added : 1995-01-01 Amended: 1995-01-01 Licensing : Not known
CDBFile - C++ library to handle dBASE III filesCDBFile is a C++ object-oriented package for programmers who need to manipulate dBASE III files in their programs. It enables you to perform many operations on an existing DBF file: reading/writing to it, accessing its values, sorting the records, adding/deleting records, etc. It comes with full text and postscript documentation, and commented source code. A demonstration program, TestDBF, shows the various possibilities of the CDBFile library, and its source file, testdbf.cpp, demonstrates how to implement CDBFile within a program. CDBFile was designed to be as portable as possible: you should be able to compile it under "as is" any DOS/Windows C++ compiler; porting it to Un*x/Linux should also require little effort.Since CDBFile is distributed under the GNU Public License for libraries, I hope that programmers will like it and suggest or implement enhance- ments and additional features to that piece of software.
Operating Systems
Added : 1997-03-19 Amended: 1997-03-19 Licensing : GNU copyleft
CGAL - Computational Geometry Algorithms LibraryCGAL - the Computational Geometry Algorithms Library - is a C++ software library of geometric data structures and algorithms. The CGAL library contains:
The product is also available commercially.
Operating Systems
Compilers
Added : 1998-12-03 Amended: 2001-10-25 Licensing : Education
CGI++ - A C++ Library for CGI ProgrammingCGI++ combines an easy and intuitive 'look and feel' with a powerful and rich object-oriented implementation. Features include:
Shareware. Distributed as source code; modification permitted Free download/unlimited trial; license payable for installation on a WWW or Intranet server. Developer arrangements available for products incorporating the Library. Nick Kew is also author and keeper of the CGI programming FAQ - archived as /www/cgi-faq at RTFM.
Jeff Garzik
Added : 1997-03-19 Amended: 1998-12-03 Licensing : Shareware
The library is highly portable, and can be used with no problems on any unix-system
using gcc/g++, and has also been tested with SGI C++ and Sun CC. The library
has also been succesfully ported to PCs (both 16-bit DOS and 32-bit DOS/Windows).
Added : 1997-11-27 Amended: 2004-09-10 Licensing : Public Domain
Added : 1998-07-22 Amended: 1998-07-22 Licensing : Demo
Added : 2001-01-31 Amended: 2008-07-22 Licensing : GNU copyleft
Changes: The necessary adjustments have been made for CMATH to work with
the new version 4 of BCBuilder, while maintaining compatibility
with the older BC++ versions. Slight improvements with respect
to speed and accuracy have also been made for the forward and
inverse trigonometric functions.
Added : 1998-07-24 Amended: 1999-06-04 Licensing : Shareware
Added : 1997-03-19 Amended: 1997-03-19 Licensing : Copyrighted freeware
Added : 1995-01-01 Amended: 2008-07-22 Licensing : GNU copyleft
Features:
Added : 2001-01-10 Amended: 2001-01-10 Licensing : GNU copyleft
While Common C++ is not directly related to GNU portable threading (GNU Pth), it should work with the Pth "pthread emulation" library at present. Common C++ will become usable as a class framework for GNU Pth directly in future releases.
The primary goal of Common C++ is to promote a very low overhead abstract C++ interface to common system services. Consistent with this goal, and the desire for broad portability with wide compiler support, specific aspects and practices in C++ programming were selected when writing code in this package, and other practices were discarded that seemed to detract from this goal.
Added : 2003-12-15 Amended: 2008-07-22 Licensing : GNU copyleft
Added : 1997-11-27 Amended: 1997-11-27 Licensing : Public Domain
CONICAL is still under development, but documentation is fairly complete and includes both introductory material and demo programs.
Added : 1996-07-30 Amended: 2001-04-02 Licensing : Education
Evaluation version.
Added : 1997-03-19 Amended: 1997-03-19 Licensing : Not known
Added : 2008-12-05 Amended: 2008-12-05
Added : 1995-01-01 Amended: 1995-01-01 Licensing : Not known
Added : 1999-06-04 Amended: 1999-06-04 Licensing : Shareware
Added : 2003-04-09 Amended: 2008-07-22 Licensing : GNU copyleft
The smart_ptr class can be used with STL containers to create containers of smart pointers, moreover it can be used to create a container of abstract based objects via smart_ptr. In general, smart_ptr is faster than boost::shared_ptr. When used with STL containers, the smart pointer is faster than the boost pointer containers, and more generic.
Added : 2006-03-14 Amended: 2006-03-14 Licensing : Public Domain
Added : 2006-03-14 Amended: 2006-03-14 Licensing : Public Domain
Added : 1995-01-01 Amended: 2008-07-22 Licensing : Not known
Added : 2006-07-03 Amended: 2006-07-03 Licensing : Commercial
Added : 2006-12-21 Amended: 2006-12-21 Licensing : Copyright (other)
Special requirements: The Shareware version supports compilation only
under Tiny or Small memory models. Borland C++ compiler recommended.
Added : 1997-03-19 Amended: 1997-03-19 Licensing : Shareware
Includes a class documentation facility (DocClass) which will generate a large text file from the source code giving details of every class, structure, enum and extern in the toolkit. This program will also work on your own C++ source code. Source is provided.
Added : 1995-01-01 Amended: 2008-07-22 Licensing : Non commercial
Added : 1996-02-05 Amended: 2006-12-02 Licensing : Not known
It contains classes for any kind of evolutionary computation
you might come up to, except maybe genetic programming. Here are its
features
Added : 1998-07-24 Amended: 2008-07-22 Licensing : Copyrighted freeware
FLTK was originally created to build in-house applications at
Digital Domain for image processing and 3D graphics. The original
author, Bill Spitzak, received
permission from Digital Domain to release it to the public domain in
the hopes that it could be used to make better, faster, and
nicer-looking UNIX programs. Digital Domain has since withdrawn
support for FLTK, but Bill is still able to work o!n it from time to
time.
FLTK was designed to be small and modular enough to be statically linked.
FLTK also works fine as a shared library and has started being included
on Linux distributions.
Here are some of the core features unique to FLTK:
Added : 2000-04-26 Amended: 2000-04-26 Licensing : GNU copyleft
FastFormat is an open source C++ formatting library, whose design parameters are 100% type-safety, efficiency, and flexibility. It is simple to use, highly-portable (platform and compiler-independent), and is infinitely extensible.
FastFormat supports output/formatting of statements of arbitrary complexity, consisting of heterogeneous types. It provides two APIs:
FastFormat writes to output "sinks", which can be of arbitrary type. It implicitly supports any type that is structurally conformant with the standard library's string, and the library includes adaptors to allow writing to:
FastFormat is robust. Both APIs are 100% type-safe - something no other C/C++ widely-used formatting library can claim - and with the Write API it is impossible to compile defective code. FastFormat is fast. The processing of each statement involves at most one memory allocation to hold the entire statement, and each statement element is measured and copied exactly once. As a consequence, the library is on a par with (the type-unsafe) C's Streams (printf()-family) of functions, faster than C++'s IOStreams (by 2-10x) and Loki.SafeFormat (by 1-5x), and considerably faster than Boost.Format (by 5-17x). FastFormat supports I18N/L10N by using numbered arguments, enabling reordering of arguments by exchanging format strings. The library comes with a number of resource bundles, classes whose instances can load sets of localised resource strings for use as format strings. FastFormat does not contain any compiler-specific or platform-specific constructs. It supports UNIX (including Linux and Mac OS-X), and Windows, and should work with any operating system. It is known to be compatible with Comeau (4.3.3+), GCC (3.4+), Intel (8+), Metrowerks (8+), Microsoft Visual C++ (6.0+), and should work with any reasonably modern C++ compiler. FastFormat is completely free and includes source released under a BSD-style license. Commercial customisations and related consultancy are provided by Synesis Software. FastFormat features in a series of articles in ACCU's peer-reviewed Overload magazine:
Examples:
Performance:
FastFormat's performance has been extensively tested, and in every case it has superior performance
to the C++ standard library's IOStreams, Boost.Format and Loki.SafeFormat. In most cases it has
equivalent performance to the (type-unsafe) C standard library's Streams ( Features:
Requirements:STLSoft libraries (1.9.1 beta 81 or later); 100% header-only open-source.
Operating Systems
Compilers
Added : 2009-05-11 Amended: 2009-05-11
FCE - Ftp Client Engine Library for C/C++FTP Client Engine (FCE) Library for C/C++ Win16 & Win32 DLLs v1.1, [ASP]. The FCE can connect to any FTP server and navigate its directory structure, list files, download files, delete files, and upload files all from within your application. Requires Windows C/C++ compiler. By MarshallSoft Computing.
Operating Systems
Added : 1999-06-21 Amended: 1999-06-21 Licensing : Shareware
FEMTown - Open-Source Multi-Physics Finite Element FrameworkFEMTown is designed to solve partial differential equations (PDE) using spatial finite-element discretizations. FEMTown provides
<h4>Applications</h4> FEMTown also includes open-source end-user applications:
Operating Systems
Compilers
Added : 2001-09-28 Amended: 2001-09-28 Licensing : Public Domain
FFTPACK++ - C++ version of FFTPACKFFT_Pack is a C++ wrapper for FFTPACK complex routines using LAPACK++ Matrix and Vector classes. FFTPACK routines were converted to C using f2c and also modified to use double precision complex using -r8 to f2c.Most of this code was lifted directly from GNU OCTAVE v1.1.0, hence the copyright notice at the top. The forward FFT takes you to freq domain (ala direction == -1), and backward the other way. Passing LaVectorComplex/Double or LaGenMatComplex/Double with one dimension set to 1 will implicitly perform 1D FFT on the data. The members of the FFT_Pack class are declared static, since they really need no private member storage. There are two types of transform routines: ones that return a new complex matrix and the ones that change the matrix in place. The original FFTPACK does not appear to be available any more, but I found the link below to a different (possibly improved) version.
Compilers
Added : 1995-01-01 Amended: 2008-07-22 Licensing : GNU copyleft
FFTW - Fast C library for computing the Fast Fourier Transform (FFT)FFTW is a C library for performing the FFT in one or more dimensions. It also includes real-complex and parallel transforms. In our benchmarks, FFTW compares favorably to other portable codes for most platforms and transform sizes, and is often competitive with vendor-tuned libraries for specific machines.
Operating Systems
Added : 1997-11-27 Amended: 1999-06-21 Licensing : GNU copyleft
FRUCTOSE - Andrew Marlow's C++ Unit Testing FrameworkC++ unit testing framework, very cutdown compared to CppUnit but very simple and implemented entirely using header files.
Operating Systems
Compilers
Added : 2008-07-29 Amended: 2008-07-29
GAGS - C++ class library for Genetic algorithmsIt includes classes for chromosomes and populations.Library:binary chromosome representation. Genetic operators: mutation, xOver (n-pt and uniform), remove/reinsert. Selection operator: steady state, tournament, roulette wheel. Perl and/or tcl/tk graphic front-end. Graphics through gnuplot. Training from file. Application generator: it needs only an ANSI-C definition of the fitness function. It's parsed, and a program that runs a GA on it is generated.
Operating Systems
Compilers
Added : 1996-02-08 Amended: 1996-02-08 Licensing : Copyrighted freeware
GAME - Parallel Genetic Algorithms Theory and ApplicationsEdited by: J. StenderPublisher: IOS Press Frontiers in Artificial Intelligence and Applications series 1993, 225 pp; hard cover; w/ disk ISBN: 90 5199 087 1 Price: $85, 59 pounds sterling The first version of the GAME Virtual Machine software and two examples that come with the book can be obtained also by ftp.
Added : 1995-01-01 Amended: 1995-01-01 Licensing : Not known
GECOOL 2.1 - A reworking and enhancement of Texas Instrument's "C++ Object Oriented Library"By some programmers at General Electric.Also available is JCOOL. Its main difference from COOL and GECOOL is that it uses real C++ templates instead of a similar syntax that is preprocessed by a special 'cpp' distributed with COOL and GECOOL. Some users behind "firewalls" have had difficulty accessing the ftp site.
Added : 1995-01-01 Amended: 1996-02-05 Licensing : Not known
Generic Linked List PackageA package to define, create, update query and delete one or more (nodes of) linked lists, to sort linked lists, and so on. The user doesn't have to take care of allocating a number of bytes for a node, inserting on the right place, deleting and freeing a node and so on.
Added : 1995-01-01 Amended: 1995-01-01 Licensing : Not known
GiNaC - Symbolic computation embedded in C++GiNaC is an iterated and recursive acronym for GiNaC is Not a CAS, with CAS standing for Computer Algebra System. It is designed to allow the creation of integrated systems that embed symbolic manipulations together with more established areas of compute r science (like computation- intense numeric applications, graphical interfaces, etc.) under one roof. It is distributed under the terms and conditions of the GNU general public license GPL.It implements a class hierarchy with the basic classes needed to create symbolic expressions, including abritrary length/precision numbers (drawing from the CLN library). The classes provide basic symbolic manipulations as well as memory management through reference counting, disk-I/O, etc. Using the Cint C/C++ interpreter it is even possible to use it in an interactive manner. It is written in standard C++ and should compile on any compliant compiler. Since it has to be linked with CLN, however, it is somewhat tricky (but not impossible) to do so on other compilers than GCC.
Operating Systems
Compilers
Added : 2001-01-31 Amended: 2001-01-31 Licensing : GNU copyleft
gleem - OpenGL Extremely Easy to use ManipulatorsA C++ library of Open Inventor-style manipulators (3D widgets) for direct interaction with a 3D scene. Written using OpenGL and GLUT and very easy to incorporate into an existing OpenGL/GLUT application. Developed on Irix, but should be easily portable.NOTE: this version of gleem is no longer being maintained. The current sources are in the jogl-demos workspace at the url below and are covered under the BSD license.
Operating Systems
Compilers
Added : 1998-12-03 Amended: 2008-07-29 Licensing : GNU copyleft
GNU Plotutils - A library for exporting 2-D vector graphics in many file formats.The GNU plotutils package contains software for both programmers and technically oriented users. Its centerpiece is the libplot/libplotter, a C/C++ function lib for exporting 2-D vector graphics in many file formats (including WebCGM format, recommended by the graphics Activity of the W3 Consortium). It can also do vector graphics animations, has thread-safe APIs, and supports the use of Posix threads (if available). The program also contains the following command-line programs for plotting scientific data:
Operating Systems
Compilers
Added : 1999-07-01 Amended: 2008-07-22 Licensing : GNU copyleft
Grail - Symbolic computation with finite-state machines and regular expressionsSupports conversion of FSM to RE and back and also conversion to and from finite languages. Supports many algebraic operations on FSM and RE. All objects are templates, so you can parameterize FSM or RE to use any C++ class or base type as its alphabet type (hence, Mealy machines are supported by using ordered pairs as the alphabet type).
Compilers
Added : 1996-05-22 Amended: 2008-07-29 Licensing : Education
Grayscale Image ProcessingEnhanced grayscale image processing class library and verification code, source codeKeywords: image arithmetics, median filtration, morphological filtration, convolution, lazy image, TIFF, plasma fractals, nondeterministic filter, class library
Operating Systems
Compilers
Added : 1996-05-22 Amended: 1997-03-19 Licensing : Public Domain
GRETA Regular Expression Template Archive - Fast, Perl 5-compliant regular expression template library for C++GRETA is a (yet another) C++ template library for regular expression pattern matching. It was developed in Microsoft Research. GRETA's distinguishing features are: high performance, Perl compatibility, and clean STL integration. You can perform matches with any bidirectional iterator type, or on a std::basic_string, or on a C-style NULL-terminated string. It supports wide and narrow character types (wchar_t and char) and respects the C locale setting (as specified by setlocale()). GRETA lets you customize regular expression syntax via a syntax module template parameter. Perl 5 and Basic POSIX syntax modules are included.
Operating Systems
Compilers
Added : 2002-06-21 Amended: 2004-06-15 Licensing : Non commercial
GTAD - Graph Toolkit for Algorithms and DrawingsThe GTAD (Graph Toolkit for Algorithms and Drawings) is an attempt to construct a set of flexible, reusable, and efficient C++ implementations of graph representations and algorithms (including drawing/layout). It is developed with the generic programming paradigm and under the same principles of the BGL (Boost Graph Library).
Operating Systems
Compilers
Added : 2008-09-16 Amended: 2008-09-16 Licensing : Open Source
GTL - The Graph Template LibraryThe Standard Template Library (STL) is supposed to become a part of the C++ standard library and therefore is an ideal basis when writing portable programs. Unfortunately, STL has no support for graphs and graph algorithms. However, graphs are widely used to model complex relational structures. Since we are intensively working with graph algorithms and Graphlet, we decided to implement GTL, a graph library based on STL. For the design of GTL's API the API of LEDA has served as a basis. GTL contains the classes needed to work with graphs, nodes and edges and some basic algorithms as building blocks for more complex graph algorithms. Further algorithms are under work.
Operating Systems
Compilers
Added : 2000-04-26 Amended: 2000-04-26 Licensing : Copyright (other)
GzipFile - MFC C++ objects compressed to disk.Gzipfile compresses MFC serialized document data. The only code changes required are a few include statements and macro instantiations in a CDocument derived class. Uncompressed documents can still be loaded and all saved documents are compressed.The compression engine is mature, widely used and extremely fast.
Operating Systems
Compilers
Added : 1998-07-24 Amended: 2003-07-29 Licensing : Shareware
Hans Boehms GC - Hans Boehms free Garbage CollectorConservative garbage collector for C/C++. Several interfaces are provided. Can be used as a transparent malloc replacement, or implements much of the Detlefs/Ellis C++ GC proposal, or can be used as an allocator for SGI's STL.Can be used with the large majority of operating systems that support 32- or 64-bit flat addressing, i.e. almost all UNIX variants, win32, and a few others.
Operating Systems
Added : 1995-01-01 Amended: 2008-07-29 Licensing : Copyrighted freeware
High level vector operationsContains the Aitken-Lagrange interpolation over the table of uniform or arbitrary mesh, and the Hook-Jeevse multidimensional minimizer. Precision single/double.Obsolete - now part of the Lin-alg package.
Added : 1995-01-01 Amended: 2008-11-04 Licensing : Not known
HugeCalc - Arbitrary accuracy large integer calculationsHugeCalc is a package for performing long integer calculations with up to 300 digits of accuracy. The package allows C++ programmers to define objects of type HugeInt and use them just like ordinary integers to perform addition, subtraction and multiplication operations. Most of the ordinary mathematical operators are supported in the ordinary fashion. Includes object modules for Borland C++, example programs and complete documentation. Shareware version contains object modules for tiny, small and medium memory models only.
Operating Systems
Compilers
Added : 1997-11-27 Amended: 1997-11-27 Licensing : Shareware
ICU - Unicode Support LibraryProvide Unicode Support for C++, C and Java Short list of features: Character set conversions, Unicode Strings, collation, Unicode character properties access, locale management, resource management, calendars, date/time, message formatting, language transliteration, text layout, regular expressions. Separate APIs for C++ and C.Licence restrictions: Open Source, X license, http://www.x.org/terms.htm
Operating Systems
Compilers
Added : 2002-03-08 Amended: 2008-07-29 Licensing : Copyrighted freeware
Image Magick - Image manipulation application and librariesJeff DonnerIt isn't C++ but C, but it's so cross-platform and comprehensive an image package, I thought you should know about it. If you look at their page you don't see anything about the libs, but they (and all source) are included with the app. They're free, (commercial use OK, copyright only) and useful. ImageMagick does a pretty thorough job of reading & writing most image formats.
Added : 1998-12-03 Amended: 2003-03-13 Licensing : Copyrighted freeware
ImageLib - An Image Processing C++ Class LibraryImageLib is a C++ class library providing image processing and related facilities.The main set of classes provides a variety of image and vector types, with additional modules supporting scalar and vector quantisation, wavelet transforms, DCT transforms, and simple histogram operations. Tested on Solaris and FreeBSD, but should work with most other UNIX versions. Most features are not operating system specific.
Operating Systems
Compilers
Added : 1998-07-27 Amended: 2000-04-26 Licensing : GNU copyleft
iMatrix - Matrix classes implementationKeywords: matrix, matrix operation, C++, class template .Implementation of a matrix and some matrix operation based on class-template concept. The key different from others is the implemenation of the separate matrix operation as separate class-template. A few small particularities would be effective.
Operating Systems
Compilers
Added : 2000-05-25 Amended: 2000-05-25 Licensing : Public Domain
Comment from : F. Beekhof on 2008-09-10Link is dead.InterViews - GUI class library developed by Stanford UniversityMake sure you get v3.1 or later. This library contains excellent examples of multiple inheritance used profitably. I understand that InterViews development will not continue past the current version; author Mark Linton is concentrating his efforts on the X Consortium Fresco project, which should show up in X11R6.
Added : 1995-01-01 Amended: 1995-01-01 Licensing : Not known
iof - Replacement for printf/scanf in C++Many people wonder how to get the same effects using C++ streams as they would using printf/scanf. They are usually pointed to STL manipulators with std::setw etc.There is at least one: the iof library at http://iof.sourceforge.net. There is also the boost format library (http://www.boost.org) but it doesn't support scanf-like input.
Operating Systems
Compilers
Added : 2006-12-01 Amended: 2007-04-10 Licensing : Copyrighted freeware
ISC366.ZIP - Interrupt Service Class (v. 3.66)Allows hooking of interrupts (software and hardware) into classes, comes with classes for staying resident, for serial communication (interrupt driven), and like-wise classes. Comes with full source code!
Operating Systems
Compilers
Added : 1995-01-01 Amended: 1995-01-01 Licensing : Public Domain
Ivf++ - C++ OpenGL visualisation libraryIvf++ is a simple OpenGL based C++ visualisation framework. The main goal with Ivf++ was not to create a complete visualisation library, but create a foundation of classes that can be extended in simple ways. Ivf++ contains a simple gui framework based on FLTK. Ivf++ can also be used together with other GUI libraries using provided widgets. Currently Win32, FLTK, and MFC are supported.
Operating Systems
Compilers
Added : 2000-04-26 Amended: 2008-07-29 Licensing : GNU copyleft
ivmaps - C++ libraries for manipulation and visualization of geo-spatial map dataivmaps is a set of C++ libraries for reading, writing, processing, painting, viewing, and querying map data, with 2D and 3d map viewers that support DEM elevation data, DLG and VPF vector map data, and DRG and DOG raster. Compiles on ivtools and PROJ-4.3.3 from the USGS. Optionally can be compiled to use ACE, clippoly, Vtk, and Mesa.
Added : 1998-07-22 Amended: 1998-07-22 Licensing : Freeware
ivtools - C++ frameworks for graphical editors and spatial data serversivtools is a set of C++ frameworks for building graphical editors, spatial data servers, and combinations of both. It incorporates an alternate distribution of the InterViews and Unidraw libraries last published by Stanford University and Silicon Graphics in release 3.2a. New C++ libraries augment the baseline drawing editor mechanism of Unidraw with various features, which are then used in drawing editors evolved from idraw: a network-ready editor, a multi-frame flipbook editor, and a hiearchical node-graph editor. Optionally can be compiled to use ACE and clippoly C++ libraries.
Added : 1998-07-22 Amended: 1998-07-22 Licensing : Freeware
ixlib - c++ tools libraryixlib is a C++ tools library based upon the STL. It provides garbage collection, a small well-integratable JavaScript interpreter, linear algebra components (e.g., linear solver, LU decomposition), planar geometry, polygons, automatic arrays, rasterization for geometric primitives and polygons, regular expressions and XML parsing (non-DTD). Its main design goals were simplicity and small size.GNU C++ 2.95.2 (linux and mingw32) tested, any ISO-compliant compiler should work.
Compilers
Added : 2001-01-22 Amended: 2001-01-22 Licensing : GNU copyleft
jjLibrary - C++ Pattern LibraryjjLibrary is a C++ library which provides
jjPattern has unique feature which can be compared to STL.
Operating Systems
Compilers
Added : 2004-09-06 Amended: 2004-09-06 Licensing : GNU copyleft
JPTUI - Textual user interface for DJGPPTextual user interface for DJGPP 2, v4.0eJPTUI is an object-oriented textual user interface. Designed for C++, it provides a simple to use application programming interface. JPTUI is available for DJGPP 2 and Borland C++ 4. I am told that this library is no longer on Simtel, but there is an older version stil available via ftp from a different site.
Operating Systems
Compilers
Added : 1998-02-24 Amended: 2000-04-26 Licensing : Copyrighted freeware
JThreads/C++ - Java-like Threads for C++JThreads/C++ is the short-form of "Java-like Threads for C++". JThreads/C++ is a high-level thread abstraction library that gives C++ programmers the "look & feel" of Java threads.JThreads/C++ is free for non-commercial use and available with its full source code.
Operating Systems
Compilers
Added : 1998-02-24 Amended: 1998-02-24 Licensing : Copyright (other)
Comment from : Andrew Marlow on 2008-07-29OOC was acquired by IONA who incorporated JThreads/C++ into Orbacus. Thus JThreads/C++ is no longer available separately (except via old copies in various free software reposistories)JX - Application framework and widget library for use with X WindowsJX is a full-featured C++ application framework and GUI class library for X Windows. It provides support for all facets of application development, including distributed applications, and aims to combine the best of MacOS and NeXTSTEP. It is built directly on top of Xlib and has been carefully optimized for performance.
Operating Systems
Compilers
Added : 1997-12-06 Amended: 2008-07-29 Licensing : Copyright (other)
Kalman - A class library for Kalman filteringContains lumatrix.c++ etc.
Compilers
Added : 1995-01-01 Amended: 2003-10-20 Licensing : Not known
kplib - Basic but highly optimised C++ libraryThe library consists of the following classes:
Operating Systems
Compilers
Added : 2000-04-26 Amended: 2000-12-22 Licensing : Public Domain
|