The Boost libraries come with their own build tool Boost.Build. While Boost.Build was developed for the Boost libraries, it can be used for any C++ project. Many developers struggle though to setup Boost.Build for C++ their projects due to the lack of documentation. This session will provide a complete overview on Boost.Jam and Boost.Build. It will explain the difference of Boost.Jam and Boost.Build and how configuration files – so-called Jamfiles – are used to setup projects. It will introduc...
Embedded Domain Specific Languages are actually rising as a design of choice to handle small to middle sized problem in a declarative and efficient way. Among others, C++ is actually a pretty interesting choice for a host languages of such development thanks to libraries like Boost.Proto. This tutorial aims at giving a quick start on using Proto in realistic situation and to demonstrate that Proto-enabled code is both elegant, compact and efficient.
Boost.Process is a library under construction to manage system processes. It should be used to run shell commands, create child processes, setup environment variables and standard streams for child processes, communicate with child processes both synchronously and asynchronously and wait for child processes to terminate – or kill them. A first version of the library was created five years ago. Since then the library went through a lot of changes: Many ideas have been tried and were rejected. I...
We present an algorithm for computing the Voronoi diagram of input data sets of points and non-intersecting segments in the plane. Building upon the plane sweep algorithm by Fortune that computes the Voronoi diagram of points we extend the algorithm to line segments while maintaining optimal O(n log n) time complexity. The Voronoi diagram of line segments can trivially produce the medial axis of polygons and has many applications in VSLI CAD, and manufacturing CAM. Approaches to ensuring numer...
Warning: This is not a talk for the faint-hearted. There will be bleeding-edge language features. There will be hackery. There will be language abuse. It just might all end in chair throwing. For the thrill-seeking geek, it should be a fun ride. We’ll see how some of the new C++0x language and library features, and some old ones as well, can be combined with Boost.Asio to create network programs that are terse, expressive and efficient.
ODB is an open-source, cross-platform and cross-database object-relational mapping (ORM) system for C++. Unlike other libraries offering a similar functionality, ODB automatically generates the code that performs the conversion between persistent classes and their database representation from C++ class declarations. ODB is also highly customizable. Components such as basic types, smart pointers, and containers from popular frameworks and libraries such as Boost and Qt can be used seamlessly in...
Boost.Asio is best known as the portable network library of the Boost C++ libraries. The library hasn’t been called Boost.Net though for a reason. The real strength of Boost.Asio is the framework it provides to implement asynchronous operations. Network functions are just very good examples of asynchronous operations. This tutorial explains how Boost.Asio can be extended and new asynchronous operations can be implemented. We’ll have a look at existing extensions like a directory monitor to wat...
There has always been much demand for a solution in Boost to deal with Unicode, the industry standard to consistently represent and manipulate text across most of the world’s writing systems. In this talk, we present our solution which was initially started during the Google Summer of Code 2009. Based on the concept of Range, it is lightweight, non-intrusive, flexible and generic, and potentially lazy too.
It has been all over the news: the IPv4 address space is officially exhausted. The solution is a new Internet Protocol, IPv6. IPv6 has been around for a long time, but unless you develop code for a government department that has mandated its use, chances are you’ve never had to worry about it until now. This isn’t going to be an overnight change. IPv4 is going to stick around fora few years yet, and networked applications are going to have to support both protocols. This presentation covers th...
Boost.Units is a flexible library for compile time dimensional analysis and unit conversions. It is designed to reduce programming errors by allowing users to declare exactly what a value is supposed to repesent, forbidding operations that don’t make sense, and applying conversions where necessary.