Diagnostics: reduce reliance on WarpX::GetInstance() #5752
+63
−33
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Reduce reliance on
WarpX::GetInstance()
in diagnostics by passing more parameters as arguments.What do you think about passing a group of parameters as a struct?
I think that it is useful especially for
WarpXIO.cpp
since several function calls requiring these parameters are made.I am really sorry that C++17 doesn't have label initialization for structs like C .
FlushFormatSensei
requires a pointer to the base class of the WarpX object, which is now passed as an argumentauto* p_warpx_mesh = dynamic_cast<amrex::AmrMesh*>(this);
. Before, this was obtained byconst
casting aconst
pointer obtained fromWarpX::GetInstance()
. The refactored code has the added benefit that it removes thisconst_cast
(usage ofconst_cast
is often discouraged because it could lead to Undefined Behavior issues, see: https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es50-dont-cast-away-const).