Compilers

Comment from : Brian Aberle on 2009-08-22

7 years have passed since the initial release of 5Loaves on trumphurst.com
Trumphurst would not accept a post with the hyperlink to the new version, so google "XMLFoundation" and you will find the new version quickly.

Comment from : Nikki Locke on 2009-12-22

C++ Basics - Learn C++ by example.

cppbasics.com is a beginner C++ tutorial site that attempts to teach basics of C++ programming Language using huge number of C++ source code examples. Each example demonstrates a particular feature of C++. Most examples are complete programs in that they compile and link independently. This site can also be used by advanced C++ developers

CCDL - 32-bit C compiler for DOS/DPMI

CCDL is a complete 32-bit development package for MSDOS. It
incorporates a C compiler, assembler, linker, make program, librarian,
and run-time libraries for a 32-bit implementation of ANSI C. It has
been compiled with itself.

The full source code for the compiler, utilities and run-time libraries is included. This could make it a useful learning tool, even for non DOS users.

Ch is also C compatible shell while C-shell (csh) is a C like shell. Ch is an interpretive implementation of C, similar to Unix/MS-DOS shells. Ch in Windows includes over 100 commonly-used Unix commands for portable shell programming. Ch can also be used as a login shell just like sh, csh and ksh. Ch bridges the gap between the C language and shell languages. With its built-in string type and many enhanced scripting features, Ch is an alternative to other scripting languages for automating repetitive tasks, regression test, and hardware testing.

Cilk++ - The Intel Cilk++ SDK is an extension to C++ improving performance on multicore p

The Intel® Cilk++ SDK is an extension to C++ that offers a quick, easy and reliable way to improve the performance of C++ programs on multicore processors. The Cilk++ suite offers support for programmers using the GCC compiler for Linux or the Microsoft C++ compiler for Windows. Cilk++ includes compiler support, runtime libraries, the Cilkscreen Race Detector and the Cilkview Scalability Analysis and Performance Tuning tools. The three Cilk++ keywords provide a simple yet surprisingly powerful model for parallel programming, while runtime and template libraries offer a well-tuned environment for building parallel applications.

Operating Systems

Linux

Unix

X Windows

Compilers

Visual C++

GCC

Added : 2009-12-02 Amended: 2009-12-02 Licensing : Open Source

Cilk++ - The Intel Cilk++ SDK is an extension to C++ improving performance on multicore p

Class Edit - C++ class code generator and editor

Class Edit is a Windows 95/98 MDI "RAD" C++ Class code generator and
editor. It helps in construction of new classes and maintaining or
re-coding of old c++ code. The online help is designed to aid beginner
and intermediate programmers in class syntax. ClassEdit 1.1 does not
require installation, just unzip and run. ClassEdit 1.1 is released as
Shareware version has 10 runs of full functionality.

ClassAction - OO design and C++ code gen

ClassAction is an Object Oriented design tool for Windows 95 based on an approximation of the OMT methodology. It generates C++ code suitable for MFC 4.0. Contains context sensitive help, floating/dockable toolbar, drag/drop support. Also has install/uninstall.

CoreLinux++ - C++ class libraries for Linux

CoreLinux++ is an initiative to normalize methods and conventions for OOA/OOD/C++ development for Linux, materialized in a set of Open Source C++ class libraries to support common patterns and frameworks and exploit the C++ standards.

Cppcheck - A tool for static C/C++ code analysis

Cppcheck is an static analysis tool for C/C++ code. Unlike C/C++ compilers and many other analysis tools it does not detect syntax errors in the code. Cppcheck primarily detects the types of bugs that the compilers normally do not detect. The goal is to detect only real errors in the code (i.e. have zero false positives).

Compilers

CPPSERV - C++ Servlet Server and C++ Server Pages

CPPSERV is an application server that provides Java Servlet like API to C++ programmers. It also includes CSP (C++ Server Pages) parser, that allows one to mix HTML and C++ code, like JSP, PHP, etc.. CPPSERV is implemented as separate process that communicates with webserver front-end through sockets (either Unix-domain or TCP). Currently there are modules for two web servers: Apache and Lighttpd. CSP (C++ Server Pages) are implemented as separate pre-processor, that converts CSP code into C++ servlet, that can later be compiled and loaded into CPPSERV.

Intel developed Ct Technology with a singular vision: to provide programmers with tools that would abstract data-parallel programming away from the hardware, as well-known programming languages have done for single core processors, while also delivering forward-scaling performance across manycore and multicore processors. Ct technology assumes no specific processor architecture, but the underlying model requires a generalized parallel processing architecture as found in multicore and manycore processors.

Ct Technology provides several key benefits for developers:

Reduce Errors in Parallel Programming by supporting a programming style that tends to avoid the parallel programming pitfalls which can plague parallel program development. Specifically, Ct Technology provides determinism, which helps provide certain guarantees about safety. Safety helps avoid data races and deadlocks, the two most often encountered parallel programming bugs.

Parallel Programming that is readable with an expressive syntax that stays close the domain expert’s mode of expression. Ct technology excels at providing a framework that allows programs to keep a programming notation close to the notation used by non-programmer experts.

Scaling across Multicore and Manycore Processors: Simply put, today’s programs can be ready for tomorrow’s hardware while getting the most out of today’s hardware.

Fits into Existing Programs: Ct Technology allows for effective data-parallelism to be added into legacy programs using existing tools and programming languages. Ct extends C++ for data-parallelism allowing for compatible and incremental addition of parallel programming into existing programs without the need for completely new and incompatible programming languages.

CXT - C source code analysis

CXT (C Exploration Tools) consists of CFT (C Function Tree Generator) and
CST (C Structure Tree Generator). They analyse C source code of
applications, no matter how big or complex, and are useful to explore
unknown software and to support software reuse and maintenance. By pre-
processing, scanning and analyzing the source code, these programs build
an internal representation of the function call hierarchy (CFT) and of
the data structure (CST) relations. Several features and options allow
the user to customize the generated hierarchy tree chart output and to
get a large set of useful information about the source code. The results
can be stored in a database and recalled later. The recall utility can
be integrated into editors like BRIEF or MicroEMACS (DOS, Windows) and
provides a hypertext-like feeling for function locating. The output
calltree can be generated as HTML- and as RTF-file (Windows Help).

CXT is part of the SXT Software Exploration Tools which provide similar
source code analysis features for C (CXT), DBASE (DXT), FORTRAN (FXT),
JAVA (JXT) and LISP (LXT).

cxx2html - Create HTML Pages from C++ Header Files

cxx2html creates HTML pages from C++ header file information. It uses information from both the class declaration and the comments to create an HTML page which describes the class. The information extracted from the class declaration is used to create a class summary with links to the member function documentation and to the documentation for the classes which are parameters to the member functions. These links are created automatically from the class declaration.

cxx2html is written in Perl 5.0 (Perl 4.* will not work), and it is currently used to create the library reference manual for the AIPS++ project centered at the National Radio Astronomy Observatory (NRAO).

Debea is an Object Relational Mapping library (ORM) for C++. It allows you to map C++ objects to relations in various SQL and file databases.

By removing hand-written SQL queries (or csv file parsing) for serialization of C++ objects you can speed-up development of applications that needs to store and load their data in SQL or other database formats. Another positive side effect of using this library is that you will always have database schema strictly related to C++ logical model.

DocClass - Generates class documentation from source files

Docclass is a simple C++ program which reads in C++ header files, and outputs documentation describing the class hierarchy, methods, inherited methods etc.

Docclass has a rather dumb parser, but it should cope with reasonably sane C++ class declarations. It understands comments, and tries to group the comments with the appropriate class or method.

Docclass does not require templates, or nested classes, as many people had C++ compilers which didn't support them. With any luck, it should understand them a little in the code it analyses, though.

Docclass is Copyright (c) Trumphurst Ltd. I have made it available on the Internet for personal use only. Please do not use it in a commercial situation (except for testing to see if it is suitable) without first obtaining permission (mail address below).

D_Lib - C/C++ Debug Library

The D_Lib library provides a set of easy-to-use but powerful and easily configurable tools to perform a C++ programmer's daily debug as well as diagnostics needed by a system tester/maintainer. In fact the use of the D_Lib library gives very flexible debug printing with both compile-time and run-time management and also possibility to turn on/off (even run-time) some pieces of code without any recompilation. It is tested and used for several UNIX platforms as well as MS Windows NT/95.

Imagix 4D - Reverse engineering, metrics and documentation tool

Imagix 4D is a reverse-engineering, metrics and documentation tool for legacy C and
complex C++ software, for developers who are part of a large project or who are
inheriting code. Graphical displays from high level UML class diagrams to detailed
function level flow charts provide accurate, focused visualization of the software.
Imagix 4D also generates over 50 leading software metrics and source checks, and
automatically generates comprehensive documentation in a number of formats, including
HTML and RTF.

LaKe - Make replacement

Yet another make replacement, but one that allows you to create your makefile in C++. A header and footer are added to it, and it's then compiled using your C++ compiler. Afther that it's run, and that's the point where your other sources are being compiled. Thanks to the lakeUsr extension library (which is included) many (possibly complex) compile commands can be given with just one simple function call.

MkHelp - Generate HTML documentation from source files

Pretty good beta level documentation generator.

Generates fully cross-referenced class descriptions from .i files output by your compiler's preprocessor. Can extract comments from the source code and include them in the documentation (comments have to be immediately before the class, variable or method).

Pretty configurable - can generate the files in any language, for instance.

Has a few problems with some apparently correct syntax, and does not document typedefs, enums or global variables.

ModAssert - A library of ASSERT-like macros that can use rich booleans

In C and C++ the traditional assert function is used to tell the user that something unexpected happened, that might cause the program to fail. Macros were written to extend this mechanism, like ASSERT_EQUAL(a,b) to give a short explanation "lefthand is <9>, righthand is <10>". However, such a macros functionality can't be reused in any way if we want to have a similar VERIFY_EQUAL (which still evaluates its arguments in non-debug mode), or an ASSERT_EQUAL_MSG (to add a message).

The Modular Assert macros use Rich Booleans, to have a modular assertion framework where any type of ASSERT can be combined with any Rich Boolean or a simple boolean expression. This package has 16 different types of assertion macros (ASSERT, VERIFY, ASSERT_P, ...), which can be combined with any rich boolean to provide extra information (or a simple boolean expression). So one could write ASSERT(rbEQUAL(a,b)), VERIFY(rbLESS(foo(), 10)), etc. Furthermore, the macros allow an arbitray number of expressions to be evaluated and shown when an assertion fails. A level can be assigned to each assertion (Info, Debug, Error or Fatal). Assertions can be ignored per case, level or file.

They are released under the Boost License, which allows free use in any code. It was tested with Visual C++ and Gnu C++, but contains no platform or compiler specific code (except for the demo code), so it should be portable.

Operating Systems

Linux

PC 32-bit Windows

Compilers

Visual C++

GCC

Added : 2005-02-11 Amended: 2005-02-11 Licensing : Non commercial

ModAssert - A library of ASSERT-like macros that can use rich booleans

ODB - object-relational mapping (ORM) for C++

ODB is a cross-database, compiler-based object-relational mapping (ORM) system for C++. It allows you to persist C++ objects to a relational database without having to deal with tables, columns, or SQL and without manually writing any mapping code.

The C++ code that performs the conversion between persistent classes and their database representation is automatically generated by the ODB compiler. The ODB compiler is a real C++ compiler except that instead of producing assembly or machine code, it generates portable C++ which can in turn be compiled by any C++ compiler.

ODB is not a framework. It does not dictate how you should write your application. Rather, it is designed to fit into your style and architecture by only handling C++ object persistence and not interfering with any other functionality.

OOLua - C++ and Lua binding

OOLua is a cross platform, test driven, dependancy free Open Source library which uses C++03 template meta-programming and pre-processor magic to generate non intrusive proxies that provide a fast binding for the interaction of C++ classes with Lua; in addition it also provides a thin abstraction layer for interfacing with the Lua stack. It supports multiple inheritance C++ classes without using C++ RTTI and does not use exceptions by default although they are easily enabled.

President - Surveyor for multilanguage analysis/metrics/documentation

Surveyor reduces software development timelines and improves code quality by automating the process of understanding complex source code, streamlining the development cycle, and fostering collaboration between team members. Surveyor can automatically document code, be used as a basis for code audits/reviews, and immediately imparts understanding of interactions, relationships, and structure of open source or other externally produced code elements. Surveyor is available for C, C++ and 12 other languages. www.lexientcorp.com for free demo.

PVS-Studio - Static Code Analyzer for C/C++/C++11

PVS-Studio is a static analyzer that detects errors in source code of C/C++/C++11 applications.
The PVS-Studio tool is intended for developers of contemporary applications and it integrates into the Visual Studio 2005/2008/2010 environment providing the programmer with a convenient user interface to analyze files, navigate through code and get reference information. You do not need to study documentation and settings preliminarily to work with the analyzer. The analyzer is ready to work right after it is installed.

QScimpl - Qt-based software for building GUI's for scientific applications

QScimpl -- Qt-based Scientific Modeling and Plotting Library

Based on the cross-platform C++ GUI toolkit developed by Trolltech AS, QScimpl (pronounced "Q-simple") is a scientific graphics package that provides additional functionality for the rapid development of GUI's for scientific codes that require interactive visualization of particle or field data.

Like Qt, QScimpl is readily extensible by developers.

QScimpl supports 3-D rendering with OpenGL or Mesa, as well as threaded operation; however, neither of these features are required.

QScimpl is distributed with many example executables. One of these, called "SciMovie", can animate a sequence of images in a variety of different formats.

Operating Systems

Linux

Solaris

PC Windows

Compilers

GCC

Borland C++

Added : 2002-03-08 Amended: 2002-03-08 Licensing : Non commercial

QScimpl - Qt-based software for building GUI's for scientific applications

Rich Booleans - A library to make powerful debugging libraries like ASSERT macros

The Rich Booleans framework is a set of macros that hold extra information if the condition fails, so a developer understands what goes wrong. They allow modularization of assertions and other constructs that check conditions, so on the one hand we can have different types of assertion macros (ASSERT, VERIFY, ASSERT_MSG, ...), and on the other hand macros that replace booleans in the assertion macros to provide extra information. So one could write ASSERT(rbEQUAL(a,b)), VERIFY(rbLESS(foo(), 10)), etc. These Rich Booleans can even be reused in other situations, like a TASSERT macro in a unit testing framework, or in contracts. The macros just have to know how to handle a rich boolean.

A number of interesting rich booleans are in this library, like rbEQUAL_STRING that shows where two strings are different (taking care of mismatches and insertions in an intelligent way), and similar ones for ranges of iterators and STL containers. They can be combined to make powerful checks, like checking whether the integer values in one vector are smaller than those in another vector, comparing two vectors of vectors, or combining rich booleans with logical operations.

They are released under the Boost License, which allows free use in any code. It was tested with Visual C++ and Gnu C++, but contains no platform or compiler specific code, so it should be portable.

Operating Systems

Linux

PC 32-bit Windows

Compilers

Visual C++

GCC

Added : 2005-02-11 Amended: 2005-02-11 Licensing : Non commercial

Rich Booleans - A library to make powerful debugging libraries like ASSERT macros

SWIG is a software development tool that connects programs written in C and C++ with a variety of high-level programming languages. SWIG is used with different types of languages including common scripting languages such as Perl, PHP, Python, Tcl and Ruby. The list of supported languages also includes non-scripting languages such as C#, Common Lisp (CLISP, Allegro CL, CFFI, UFFI), Java, Lua, Modula-3, OCAML, Octave and R. Also several interpreted and compiled Scheme implementations (Guile, MzScheme, Chicken) are supported. SWIG is most commonly used to create high-level interpreted or compiled programming environments, user interfaces, and as a tool for testing and prototyping C/C++ software. SWIG can also export its parse tree in the form of XML and Lisp s-expressions.

The KDevelop-Project was raised in 1998 to build u - KDevelop multilingual IDE

The KDevelop-Project was raised in 1998 to build up an easy to use IDE (Integrated Development Environment) for KDE. Since then, the KDevelop IDE is publicly available under the GPL and supports many programming languages.

Operating Systems

Linux

Solaris

Unix

Compilers

GCC

Added : 2004-02-17 Amended: 2004-02-17 Licensing : GNU copyleft

The KDevelop-Project was raised in 1998 to build u - KDevelop multilingual IDE

U++ framework - U++ framework

U++ is BSD licensed C++ cross-platform rapid application development framework focused on programmers productivity without sacrificing runtime performance.
Based on strictly deterministic design it provides an alternative to GC collected platforms, even for bussiness logic oriented problems.
U++ brings it's own integrated development environment (IDE), "TheIDE", with it and shows the following merits in particular:
- The package contains everything one needs to build a program.
- The installation is absolutely trouble-free.
- The user interface is unconventional but - after getting used to it - very efficient.
- The tool has been standing the test of time years of use in commercial applications development.
- It is subject to the little restrictive BSD license.
- It is free of charge.
- There is an U++ forum which is perfect as regards organization, contents and look.
- The very active community is extremely ready to help.

Comment from : Nikki Locke on 2009-05-15

Understand for C++ is a reverse engineering, documentation and metrics tool for C and C++ source code. It offers code navigation using a detailed cross reference, a syntax colorizing "smart" editor, and a variety of graphical reverse engineering views. It includes a PERL and C API for writing custom documentation directly from source code.

Abstract unit tests, to check whether classes derived from a common base class all satisfy the same requirements. Multiple levels of inheritance with tests on each level, and multiple inheritance are easy to do.

All testing is thread safe.

Unit tests are registered automatically.

Test wrappers, for all tests or just a test group.

Include and exclude test objects by name, level and or attribute; also using regular expressions.

The basics of UquoniTest are the same as well known open source unit testing frameworks like Unittest++. The manual is well written, with enough examples, and most skimmable so you easily find what you need.

UquoniTest has a lot more smaller features that add up to a great library to do unit testing in C++.

VCF - Visual Component Framework

A C++ framework that was created to provide a simple to use cross platform GUI framework, with many of the advanced design features of Java and Java's Swing, and Borland's Visual Component Library. In addition, the VCF provides advanced RTTI/Introspection features common in languages like Object Pascal, Objective C, Smalltalk, and Java, but not typically found in C++. The framework is divided into three main sections: FoundationKit, ApplicationKit, and GraphicsKit, in addition there are now two additional kits, the Network kit and the Remote Object Kit.

The FoundationKit provides all of the base classes for the rest of the Framework, as well as support for RTTI/Introspection, events, event listeners, properties, and basic streaming capabilities. The VCF makes use of C++'s Standard Template Library for it's collection classes, and has a number of template based classes to support the Frameworks RTTI/Introspection design. The VCF also makes use of C++ exception handling, multiple inheritance, and C++ namespaces, so compiler's that don't support these features may have problems getting the FoundationKit (and any of the other kits) to compile. The GraphicsKit provides a core set of easy to use 2D graphics classes, modeled heavily after the design of Java's Graphics2D architecture. This include support for 32bit color images, alpha channels, anti-aliased graphics primitives, basic matrix transforms, filters, image loaders, kernels, and easy to extend path classes. Image manipulation is allowed at the bit level for those who like to bit-twiddle, but higher level functions are/will be provided.

The ApplicationKit provides the classes used in the GUI portion of the Framework. This includes basics like windows, components, standard widgets (combo boxes, listboxes, trees, etc ), common dialogs, a basic layout manager, drag-and-drop, and standard windowing events. A simplified use of Model-View-Control design has been applied (sometimes referred to as UI delegate, where the Controller and View are combined ), similar to the way Java's Swing was designed. In addition it will also provide core services to extend the component framework with custom 3rd party libraries (DLL's or SO's) housing components that can be plugged into a the VCFBuilder tool, similar to Java Beans, or Borland's C++ Builder packages. The VCFBuilder is a simplified version of the C++ Builder IDE, something that can allow developer's to design their GUI's in real time, with out having to waste time writing code, and extend their set of components through 3rd party libraries.

Visual Programming Armoury is an IDE for C++ and Java. It implements a
concept of multidimensional desktop. The ergonomics of VPA helps you
maintain large projects. There are 3 frameworks: C++, Persistence Smith
and Java. All of them are compiler-independent structured processors of
source code. C++ framework includes a designer of event-driven
composite GUI and a resource editor. Persistence Smith framework is
built upon the object-relational layer which allows you to interact with
business objects instead of going directly to RDBMS. An extended
semantics of C++ provides full-featured capability to program a
back-end's logic: queries and updates are issued against the object
model instead of the storage one. Diagrams of persistent class helps
you design applied object model. Thus a system that uses relational
database is engineered in terms of object-oriented methodology. All of
your code is completely portable between variety of database products.
The set of class libraries formalize GUI up to high-level primitives
which query, retrieve, navigate, edit data, aid input, do printing job.
Java framework supports class diagrams and reverse engineering of source
code.

Compilers

XSD - XML Schema to C++ Data Binding Generator

Given an XML instance description (XML Schema), XSD generates C++ classes
that represent the given vocabulary as well as parsing and serialization
code. Compared to APIs such as DOM and SAX, the generated code allows you
to access the information in XML instance documents using your domain
vocabulary instead of generic elements, attributes, and text. Static typing
helps catch errors at compile-time rather than at run-time. XSD supports
two C++ mappings: in-memory C++/Tree and event-driven C++/Parser.

The C++/Tree mapping provides C++ classes that represent data types defined
in XML Schema, a set of parsing functions that convert XML instance documents
to a tree-like in-memory data structure, and a set of serialization functions
that convert the in-memory representation back to XML.

The C++/Parser mapping provides parser templates for data types defined in
XML Schema. Using these parser templates you can build your own in-memory
representations or perform immediate processing of XML instance documents.

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.