Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

replace itkstaticconstmacro with constexpr #51

Open
wants to merge 5 commits into
base: main
Choose a base branch
from

Conversation

hjmjohnson
Copy link
Member

  • STYLE: Add itkVirtualGetNameOfClassMacro + itkOverrideGetNameOfClassMacro
  • STYLE: Replace itkStaticConstMacro with static constexpr

…acro

Added two new macro's, intended to replace the old 'itkTypeMacro' and
'itkTypeMacroNoParent'.

The main aim is to be clearer about what those macro's do: add a virtual
'GetNameOfClass()' member function and override it. Unlike 'itkTypeMacro',
'itkOverrideGetNameOfClassMacro' does not have a 'superclass' parameter, as it
was not used anyway.

Note that originally 'itkTypeMacro' did not use its 'superclass' parameter
either, looking at commit 699b66cb04d410e555656828e8892107add38ccb, Will
Schroeder, June 27, 2001:
https://github.com/InsightSoftwareConsortium/ITK/blob/699b66cb04d410e555656828e8892107add38ccb/Code/Common/itkMacro.h#L331-L337
@hjmjohnson hjmjohnson force-pushed the replace-itkstaticconstmacro-with-constexpr branch from 4ca465c to 221399a Compare January 26, 2025 19:06
Use static constexpr directly now that C++11 conformance
is required by all compilers.

:%s/itkStaticConstMacro *( *\([^,]*\),[ \_s]*\([^,]*\),\_s*\([^)]*\)) */static constexpr \2 \1 = \3/ge

'itkStaticConstMacro(name, type, value)' became unconditionally
identical to 'static constexpr type name = value' with ITK commit
aec95193ab00e1322039911e1032da00f3a103b6 "ENH: Update compiler macros (#810)",
maekclena, 7 May 2019.

'itkGetStaticConstMacro(name)' became unconditionally identical to
'(Self::name)' with ITK commit 84e490b81e3f3c2b0edb89ae7b9de53bfc52f2b2
"Removing some outdated compiler conditionals", Hans Johnson, 31 July
2010.

Most 'itkStaticConstMacro' calls were removed by ITK commit 5c14741e1e063a132ea7e7ee69c5bd0a4e49af74
error: ISO C++17 does not allow dynamic exception specifications [-Wdynamic-exception-spec]
   |   GenerateInputRequestedRegion() throw(InvalidRequestedRegionError) override;
   |                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/itkCannyEdgeDetectionRecursiveGaussianImageFilter.h:201:34: note: use 'noexcept(false)' instead
@hjmjohnson hjmjohnson force-pushed the replace-itkstaticconstmacro-with-constexpr branch from 8fde855 to ab1ea9b Compare January 28, 2025 01:45
@hjmjohnson hjmjohnson force-pushed the replace-itkstaticconstmacro-with-constexpr branch from ab1ea9b to 41897b6 Compare January 28, 2025 03:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant