Alien’s Coding Style¶
Naming¶
CamelCase for c++ objects
underscore_separator_and_no_capital for filenames
C++¶
- Alien is (at the moment) a C++ library. We follow directives of Arcane, mainly:
C++14 code
Avoid passing parameters by reference (specially it is forbidden for all Array classes).
File Organization¶
- Alien consists in different modules:
core
movesemantic
refsemantic
- Modules are located in the src directory and each module is organized following this directory structure:
alien directory, that mimics header hierarchy and contains both header files and source files
tests directory, that contains unit tests for this module.
.
├── CMake
├── docker # Contains docker images for CI and development
├── docs # Documentation and examples
│ ├── sphinx # This Sphinx documentation
│ └── tutorial # Alien's tutorial
├── framework # Arccon and Arccore for embedded build
│ ├── arccon # Arccon
│ ├── arccore # Arccore
│ └── CMake # CMake glue for find_package to work with embedded
├── plugins # Alien's backend
│ ├── hypre
│ └── petsc
└── src # Alien's sources
├── core # Alien core module
│ ├── alien # Sources for `core` module
│ └── tests # Unit tests for `core` module
├── movesemantic # `move` API
│ ├── alien # Sources for `move` API
│ └── tests # Unit tests for `move`
├── refsemantic # `ref` API
│ ├── alien # Sources for `ref` API
│ └── tests # Unit tests for `ref`
└── test_framework # Unit test framework