libwreport
3.29
|
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). RAII 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:
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.