* C++ standard: C++11 (or newer, but consider portability)
* C++ standard: C++11 (or newer, but consider portability)
* supported compilers: gcc/clang (must be supported at least)
* supported compilers: gcc/clang (must be supported at least)
@ -22,32 +22,30 @@
## Coding conventions
## Coding conventions
* Code-formatting: use clang-format
* Code-formatting: use clang-format (Please try to use the .clang-format with the least necessary changes (maintainability and consistency within pEp))
* Please try to use the .clang-format with the least necessary changes (maintainability and consistency within pEp)
* static-analysis: use clang-tidy (Please try to use the .clang-tidy with the least necessary changes (maintainability and consistency within pEp))
* static-analysis: use clang-tidy
* Please try to use the .clang-tidy with the least necessary changes (maintainability and consistency within pEp)
### Filenames
### Filenames
implementation: .cc
implementation: `.cc`
header: .hh
header: `.hh`
template-implementation: .hxx
template-implementation: `.hxx`
### Namespaces
### Namespaces
all pEp source code must be in a top level namespace 'pEp'.
all pEp source code must be in a top level namespace `pEp`.
With this exception all other nested namespaces must be in 'CamelCase'
With this exception all other nested namespaces must be in CamelCase.
#### using namespace
#### using namespace
it is never encouraged to do 'use namespace std;'. In header files it is actually forbidden, and in implementation files it is
it is never encouraged to do `use namespace std;`. In header files it is actually forbidden, and in implementation files it is
stronly discouraged, because as soon as you want to templatize, the 'using namespace' directive has to be replaced with explicit 'std::' prefixes,
stronly discouraged, because as soon as you want to templatize, the `using namespace` directive has to be replaced with explicit `std::` prefixes,
because the templateized implementation will have to be in a header file extension (.hxx)
because the templateized implementation will have to be in a header file extension (.hxx)
This applies strongly for the namespace 'std' and needs to be carefully considered for all other namespaces.
This applies strongly for the namespace `std` and needs to be carefully considered for all other namespaces.
### Include guards
### Include guards
Do not use #pragma once , use #ifdef/#define style (portability reasons)
Do not use #pragma once , use #ifdef/#define style (portability reasons)