SupplyChain is a C++ library that simulates a supply chain. It takes full advantage of concurrent programming and multi-core CPUs without the programmer having to know anything about it. A supply chain consists of two mandatory components: initial producers and final consumers. Apart from these components, a supply chain can include any number of manufacturer nodes. Each node can contain any number of elements of its own type. These elements allow very powerful supply chains to be modeled and constructed.
The Hummus PDF Writer library allows you to generate PDF files. It was developed with a principal “one-off” method of generating PDF files. Adhering to this idea, it is both fast and retains a low memory signature regardless of how large the file grows. The library has a set of high level features for adding content to a PDF, including creation of pages; drawing primitives and any of the simple PDF operators for drawing content; embedding of PDF, JPEG, and TIFF images; Unicode text support with Type1, TrueType, and OpenType fonts; and defining reusable objects using XObject Forms. You can also use the library as a PDF parser. The library is very extensible. It is easy to implement more PDF features by using the lower level set of methods, which provide access to the PDF building blocks themselves. Adding a feature requires you to be familiar with the PDF formatting of that feature, but will not require you to write the basic PDF building blocks, as the library handles this.
The YB.ORM library aims to simplify writing C++ code that has to deal with SQL databases. The goal is to provide a convenient interface like SQLAlchemy (Python) or Hibernate (Java). The library itself is cross-platform and supports a variety of SQL dialects: SQLite3, MySQL, Postgres, Oracle, and Firebird. Integration with Boost, Qt4, and wxWidgets is built-in. In a typical usage scenario, you would describe your database schema and table relationships in a simple XML-based format, generate SQL code to populate database schema with tables, generate C++ classes, add application-specific logic to the classes, and use these classes in cooperation with the Session object to query objects from the database, create new or modify/delete existing objects, or link and unlink objects using relations. Simple serialization to XML is supported along with connection pooling.
libLunchbox facilitates the development and deployment of multi-threaded applications. It provides OS Abstraction, using utility classes abstracting common operating system features (such as threads, locks, memory maps, shared library loading, and condition variables), high-performance primitives (including thread-safe utilities tuned for performance, such as atomic variables, spin locks, and lock-free containers), and utility classes (including helper primitives which are not in the standard library, such as logging, pools, and random number generation).
cipra is a simple, TAP-compatible Unit Testing Framework for C++. It's written in 100% standard C++11 and is only a couple of header files, making it easy to include in your C++11 project. TAP, the Test Anything Protocol, is a standard output format for software unit test frameworks which was originally designed for Perl, but can serve other languages. It has a rich number of tools ("harnesses") which parse TAP-formatted output and do useful things with it. TAP, however, is equally human-readable. The name cipra (pronounced /ˈʃi.pɾaː/ "SHEE-prah") comes from the lojban phrase "lo cipra", which means "the test". It is properly written with an initial minuscule "c", even when at the start of a sentence.