Boost

From: LSST Toolsets

To Quote the boost home page:

Boost provides free peer-reviewed portable C++ source libraries.

We emphasize libraries that work well with the C++ Standard Library. Boost libraries are intended to be widely useful, and usable across a broad spectrum of applications. The Boost license encourages both commercial and non-commercial use.

We aim to establish "existing practice" and provide reference implementations so that Boost libraries are suitable for eventual standardization. Ten Boost libraries are already included in the C++ Standards Committee's Library Technical Report ( TR1) as a step toward becoming part of a future C++ Standard. More Boost libraries are proposed for the upcoming TR2.

The LSST project's DM group endorse the attempt to produce standardized, high quality libraries. Accordingly, we plan to use Boost whenever appropriate.

If you find functionality in Boost but would prefer not to use it, please check with DManagement before taking a decision.

LSST's Choice of Boost Libraries

Approved version of boost libraries: Boost 1.35.0 (as of 7 May 2008)

Libraries blessed for use in LSST code:

any
Safe, generic container for single values of different value types
format
Type-safe 'printf-like' format operations
GIL
The Generic Image Library (CCB, 2008-09-03).
lambda
Lambda functions for use with generic programming (e.g. std::transform)
MPI
Message Passing Interface library, for use in distributed-memory parallel application programming
shared_ptr
Object ownership shared among multiple pointers
shared_array
Array ownership shared among multiple pointers
test
Support for simple program testing, full unit testing, and for program execution monitoring. Approval limited to 'header-only' version, not compiled boost:unittest library.
weak_ptr
Non-owning observers of an object owned by shared_ptr

Libraries that may not be used:

Libraries under consideration:

Usage as of 2008-11-05

Boost Libraries in LSST

algorithm/string (Status: unknown)
daf/base
any (Status: approved)
afw daf/base daf/data pex/logging pex/policy utils
config (Status: unknown) Helps boost library developers adapt to compiler idiosyncrasies; not intended for library users.
pex/policy
cstdint (Status: unknown) The typedef's useful for writing portable code that requires certain integer widths.
afw detection ip/diffim ip/isr
filesystem TR2 (Status: unknown) Portable paths, iteration over directories, and other useful filesystem operations.
afw pex/policy
format TR2 (Status: approved)
afw daf/base daf/data detection ip/diffim ip/isr pex/exceptions pex/logging utils
gil (Status: approved)
afw
iterator/zip_iterator (Status: unknown)
afw
lambda TR2 (Status: approved)
afw
mpl/assert (Status: unknown)
afw
mpl/at (Status: unknown)
afw
mpl/bool (Status: unknown)
afw
mpl/for_each (Status: unknown)
afw
mpl/or (Status: unknown)
afw
mpl/vector (Status: unknown)
afw
multi_index (Status: unknown) Containers with multiple STL-compatible access interfaces
utils
multi_index_container (Status: unknown)
utils
regex TR1 (Status: unknown) Perl-style regular expressions.
daf/base daf/persistence pex/logging pex/policy utils
scoped_ptr TR2 (Status: unknown) Stores a pointer to a dynamically allocated object.
daf/base daf/persistence pex/policy
serialization (Status: unknown) Serialization for persistence and marshalling. serialization archives
Text (or XML) archives render data as text (or XML) and are portable across platforms. :: afw daf/persistence
shared_array TR2 (Status: approved)
daf/persistence
shared_ptr TR1 (Status: approved)
afw daf/base daf/data daf/persistence detection ip/diffim ip/isr pex/exceptions pex/logging pex/policy security
static_assert C++0X (Status: unknown) Static assertions (compile time assertions).
afw pex/policy
test (Status: approved)
afw
throw_exception (Status: unknown) Intended to be used in Boost libraries that need to throw exceptions, but support configurations and platforms where exceptions aren't available
pex/policy
timer (Status: unknown) Event timer, progress timer, and progress display classes.
ip/diffim
tokenizer (Status: unknown) Break of a string or other character sequence into a series of tokens. Proposal for inclusion: TokenizerProposal
pex/logging
type_traits TR1 (Status: unknown) Templates for fundamental properties of types.
afw pex/policy

Attachments