/** @page style Coding style

Everything in wreport/*.h is considered public API, but everything in
subdirectories should be considered private implementation details. No headers
in wreport/*.h can include headers in subdirectories. wreport/tests.h is the
only exception, to include the test framework from utils/tests.h

The public API is supposed to be API and ABI stable. Implementation details are
removed as much as possible from headers to make this easier.

Unit tests are collected in files *-test.cc which generally correspond to the
module they are testing. The unit testing framework is contained inside
wreport, and comes from https://github.com/spanezz/wobble

Documentation is automatically generated by doxygen.

C++ use tries to follow a "Do Not Call Up That Which You Cannot Put Down" rule
of avoiding to use language features and abstraction layers unless they are
really needed or make code significantly simpler.

Errors are reported through exceptions (see error.h).
<a href="http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization">RAII</a>
is used (see for example wreport::notes::Collect) to simplify programming and ensure
proper resource handling also in case of errors.

Memory management responsibilities are made obvious by the use of:
 - references and const pointers, which implicitly deny pointer ownership
   transfer;
 - std::unique_ptr to explictly mark ownership transfer (see wreport::Var::seta());
 - documentation for all other cases.

Dependencies are kept to a bare minimum for ease of deploying.

The code is migrating from tab-indent to 4-spaces indent. To preserve useful
diffs across VCS version, old code has not been reformatted, and gets
reformatted only as code is otherwise modified.

*/
