Skip to content

Commit

Permalink
ENH: Add itkVirtual and itkNonVirtual Get/Set macro's
Browse files Browse the repository at this point in the history
Allowed specifying explicitly whether or not a Get/Set member function
should be declared `virtual`.
  • Loading branch information
N-Dekker committed Oct 7, 2021
1 parent a10cd69 commit 8f26661
Showing 1 changed file with 60 additions and 0 deletions.
60 changes: 60 additions & 0 deletions Modules/Core/Common/include/itkMacro.h
Original file line number Diff line number Diff line change
Expand Up @@ -1308,6 +1308,66 @@ compilers.
} \
ITK_MACROEND_NOOP_STATEMENT

// clang-format off
#define itkVirtualGetObjectMacro(name, type) itkOptionallyVirtualGetObjectMacro(virtual, name, type)
#define itkVirtualGetModifiableObjectMacro(name, type) itkOptionallyVirtualGetModifiableObjectMacro(virtual, name, type)
#define itkVirtualSetInputMacro(name, type) itkOptionallyVirtualSetInputMacro(virtual, name, type)
#define itkVirtualGetInputMacro(name, type) itkOptionallyVirtualGetInputMacro(virtual, name, type)
#define itkVirtualSetDecoratedInputMacro(name, type) itkOptionallyVirtualSetDecoratedInputMacro(virtual, name, type)
#define itkVirtualGetDecoratedInputMacro(name, type) itkOptionallyVirtualGetDecoratedInputMacro(virtual, name, type)
#define itkVirtualSetGetDecoratedInputMacro(name, type) itkOptionallyVirtualSetGetDecoratedInputMacro(virtual, name, type)
#define itkVirtualSetDecoratedObjectInputMacro(name, type) itkOptionallyVirtualSetDecoratedObjectInputMacro(virtual, name, type)
#define itkVirtualGetDecoratedObjectInputMacro(name, type) itkOptionallyVirtualGetDecoratedObjectInputMacro(virtual, name, type)
#define itkVirtualSetGetDecoratedObjectInputMacro(name, type) itkOptionallyVirtualSetGetDecoratedObjectInputMacro(virtual, name, type)
#define itkVirtualSetMacro(name, type) itkOptionallyVirtualSetMacro(virtual, name, type)
#define itkVirtualGetMacro(name, type) itkOptionallyVirtualGetMacro(virtual, name, type)
#define itkVirtualGetConstMacro(name, type) itkOptionallyVirtualGetConstMacro(virtual, name, type)
#define itkVirtualGetConstReferenceMacro(name, type) itkOptionallyVirtualGetConstReferenceMacro(virtual, name, type)
#define itkVirtualSetEnumMacro(name, type) itkOptionallyVirtualSetEnumMacro(virtual, name, type)
#define itkVirtualGetEnumMacro(name, type) itkOptionallyVirtualGetEnumMacro(virtual, name, type)
#define itkVirtualSetStringMacro(name) itkOptionallyVirtualSetStringMacro(virtual, name)
#define itkVirtualGetStringMacro(name) itkOptionallyVirtualGetStringMacro(virtual, name)
#define itkVirtualSetClampMacro(name, type, min, max) itkOptionallyVirtualSetClampMacro(virtual, name, type, min, max)
#define itkVirtualSetObjectMacro(name, type) itkOptionallyVirtualSetObjectMacro(virtual, name, type)
#define itkVirtualGetConstObjectMacro(name, type) itkOptionallyVirtualGetConstObjectMacro(virtual, name, type)
#define itkVirtualGetConstReferenceObjectMacro(name, type) itkOptionallyVirtualGetConstReferenceObjectMacro(virtual, name, type)
#define itkVirtualSetConstObjectMacro(name, type) itkOptionallyVirtualSetConstObjectMacro(virtual, name, type)
#define itkVirtualBooleanMacro(name) itkOptionallyVirtualBooleanMacro(virtual, name)
#define itkVirtualSetVectorMacro(name, type, count) itkOptionallyVirtualSetVectorMacro(virtual, name, type, count)
#define itkVirtualGetVectorMacro(name, type, count) itkOptionallyVirtualGetVectorMacro(virtual, name, type, count)
#define itkVirtualSetDecoratedOutputMacro(name, type) itkOptionallyVirtualSetDecoratedOutputMacro(virtual, name, type)
#define itkVirtualGetDecoratedOutputMacro(name, type) itkOptionallyVirtualGetDecoratedOutputMacro(virtual, name, type)

#define itkNonVirtualGetObjectMacro(name, type) itkOptionallyVirtualGetObjectMacro(/* no virtual */, name, type)
#define itkNonVirtualGetModifiableObjectMacro(name, type) itkOptionallyVirtualGetModifiableObjectMacro(/* no virtual */, name, type)
#define itkNonVirtualSetInputMacro(name, type) itkOptionallyVirtualSetInputMacro(/* no virtual */, name, type)
#define itkNonVirtualGetInputMacro(name, type) itkOptionallyVirtualGetInputMacro(/* no virtual */, name, type)
#define itkNonVirtualSetDecoratedInputMacro(name, type) itkOptionallyVirtualSetDecoratedInputMacro(/* no virtual */, name, type)
#define itkNonVirtualGetDecoratedInputMacro(name, type) itkOptionallyVirtualGetDecoratedInputMacro(/* no virtual */, name, type)
#define itkNonVirtualSetGetDecoratedInputMacro(name, type) itkOptionallyVirtualSetGetDecoratedInputMacro(/* no virtual */, name, type)
#define itkNonVirtualSetDecoratedObjectInputMacro(name, type) itkOptionallyVirtualSetDecoratedObjectInputMacro(/* no virtual */, name, type)
#define itkNonVirtualGetDecoratedObjectInputMacro(name, type) itkOptionallyVirtualGetDecoratedObjectInputMacro(/* no virtual */, name, type)
#define itkNonVirtualSetGetDecoratedObjectInputMacro(name, type) itkOptionallyVirtualSetGetDecoratedObjectInputMacro(/* no virtual */, name, type)
#define itkNonVirtualSetMacro(name, type) itkOptionallyVirtualSetMacro(/* no virtual */, name, type)
#define itkNonVirtualGetMacro(name, type) itkOptionallyVirtualGetMacro(/* no virtual */, name, type)
#define itkNonVirtualGetConstMacro(name, type) itkOptionallyVirtualGetConstMacro(/* no virtual */, name, type)
#define itkNonVirtualGetConstReferenceMacro(name, type) itkOptionallyVirtualGetConstReferenceMacro(/* no virtual */, name, type)
#define itkNonVirtualSetEnumMacro(name, type) itkOptionallyVirtualSetEnumMacro(/* no virtual */, name, type)
#define itkNonVirtualGetEnumMacro(name, type) itkOptionallyVirtualGetEnumMacro(/* no virtual */, name, type)
#define itkNonVirtualSetStringMacro(name) itkOptionallyVirtualSetStringMacro(/* no virtual */, name)
#define itkNonVirtualGetStringMacro(name) itkOptionallyVirtualGetStringMacro(/* no virtual */, name)
#define itkNonVirtualSetClampMacro(name, type, min, max) itkOptionallyVirtualSetClampMacro(/* no virtual */, name, type, min, max)
#define itkNonVirtualSetObjectMacro(name, type) itkOptionallyVirtualSetObjectMacro(/* no virtual */, name, type)
#define itkNonVirtualGetConstObjectMacro(name, type) itkOptionallyVirtualGetConstObjectMacro(/* no virtual */, name, type)
#define itkNonVirtualGetConstReferenceObjectMacro(name, type) itkOptionallyVirtualGetConstReferenceObjectMacro(/* no virtual */, name, type)
#define itkNonVirtualSetConstObjectMacro(name, type) itkOptionallyVirtualSetConstObjectMacro(/* no virtual */, name, type)
#define itkNonVirtualBooleanMacro(name) itkOptionallyVirtualBooleanMacro(/* no virtual */, name)
#define itkNonVirtualSetVectorMacro(name, type, count) itkOptionallyVirtualSetVectorMacro(/* no virtual */, name, type, count)
#define itkNonVirtualGetVectorMacro(name, type, count) itkOptionallyVirtualGetVectorMacro(/* no virtual */, name, type, count)
#define itkNonVirtualSetDecoratedOutputMacro(name, type) itkOptionallyVirtualSetDecoratedOutputMacro(/* no virtual */, name, type)
#define itkNonVirtualGetDecoratedOutputMacro(name, type) itkOptionallyVirtualGetDecoratedOutputMacro(/* no virtual */, name, type)
// clang-format on

// In a future ITK release, Get/Set member functions may no longer be `virtual` by default.
#ifdef ITK_FUTURE_LEGACY_REMOVE
# define ITK_OPTIONAL_GET_SET_VIRTUAL_KEYWORD /* As nothing: no virtual keyword */
Expand Down

0 comments on commit 8f26661

Please sign in to comment.