IAP GITLAB

Skip to content

WIP: Project structure refactoring

Remy Prechelt requested to merge rprechelt-framework-refactor into master

Since C8 is currently under heavy development (with PROPOSAL, CONEX, Radio, and Cherenkov all underway), I think we need to make the major project structure changes that have been discussed over the past 6 months now so that these upcoming MRs can use the new project structure and we can reduce the complexity (and therefore, pain) of performing the future merge with Augusto's majorly-refactored fork (which is currently 150 commits behind master according to Gitlab). This MR builds on the previous (smaller) refactoring MRs opened in the last few days to take a large step towards the new C8 (refactored) project structure.

--

This MR contains a restructured project repo that applies some of the major changes proposed by Augusto here, and implemented here, so that the future merge will be less painful (note: this does not implement all of the changes proposed in that document).

Each change has been isolated to its own commit so that we can easily undo particular changes if desired. In particular, this MR makes the following changes:

  1. The CORSIKA framework is now completely header-only. I have not moved implementations into the detail:: namespace yet. No implementation details were changed (strictly a copy-and-paste exercise)
  2. Source and header files have been renamed to .cpp and .hpp.
  3. Include guards have been replaced with #pragma once
  4. Tests that were in the Framework directory are now in a top-level tests directory.

One of the goals of the original refactoring discussion (see links above) was to have the folder structure mirror the namespace structure and naming. To take a big step towards this, this MR makes the following changes:

  1. The Framework directory is now corsika (to be consistent with Augusto's branch)
  2. Environment is now corsika/environment
  3. Setup is now corsika/setup
  4. Stack is now corsika/stack
  5. ThirdParty is now thirdparty
  6. Tools is now tools
  7. COAST is now corsika/coast
  8. Processes is now processes
  9. Documentation is now documentation
  10. Main is now deleted (for the time being). The CMake file was empty and the source file was an empty main function and it had not been touched in a year. This can be added once we have an actual "main" target to add.

All feedback is welcome - I have tried to only implement the non-controversial changes from our previous refactoring discussions but let me know if there is a consensus to undo some of these changes.

Merge request reports