Unless otherwise specified, follow the Boost “Design and Programming”
guidelines and header guidelines. They do not address purely stylistic
matters of indentation, spacing, and brace placement; those are addressed for
Starting from the 2019 version:
Optimization does matter for FleCSI, but only where the overhead it introduces is expected to be a significant fraction of the application’s runtime.
Obviously FleCSI uses certain additional libraries (like Legion). Do not add further dependencies without discussion. As a single component, there is no need to limit use of one part of FleCSI by another.
The ABI concerns, especially for Windows, are irrelevant.
noexcepthas replaced exception-specifications and should be used as appropriate, especially for move operations.
FleCSI uses its own unit-testing framework, not Boost’s.
The preferable line-length limit is 78 characters, so that even a diff of such a file avoids the line continuations used in some displays.
Individual documentation files do not get their own copyright/license.
The source-file header is of course different.
maxdo not require special treatment.
Header and source files are suffixed with
There are no “primary directories”.
Code documentation is generated by Doxygen, prose by Sphinx.
Changes purely for stylistic reasons should be rare and must appear in a separate commit (preferably a separate merge request).
Class and enumeration names do not get a suffix
Header names are “absolute” (i.e., begin with
Function documentation uses the imperative mood.
The source code for the core FleCSI infrastructure is located in the top-level/flecsi directory. For the most part, the subdirectories of this directory correspond to the different namespaces in the core infrastructure. Each of these subdirectories must contain a valid CMakeLists.txt file. However, none of their children should have a CMakeLists.txt file, i.e., the build system will not recurse beyond the first level of subdirectories. Developers should use relative paths within a CMakeLists.txt file to identify source in subdirectories.
Unit test files should be placed in the test subdirectory of each namespace subdirectory. By convention, developers should not create subdirectories within the test subdirectory.