Medical Imaging Interaction Toolkit  2026.06.00
Medical Imaging Interaction Toolkit
mitkSegmentationTaskListMacros.h
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
13 #ifndef mitkSegmentationTaskListMacros_h
14 #define mitkSegmentationTaskListMacros_h
15 
25 #define mitkSegmentationTaskHasValueMacro(name) \
26  bool Has##name() const { \
27  return m_##name.has_value(); \
28  }
29 
31 #define mitkSegmentationTaskGetValueMacro(type, name) \
32  type Get##name() const { \
33  if (m_##name.has_value()) return m_##name.value(); \
34  if (m_Defaults != nullptr && m_Defaults->m_##name.has_value()) return m_Defaults->m_##name.value(); \
35  return type(); \
36  }
37 
39 #define mitkSegmentationTaskSetValueMacro(type, name) \
40  void Set##name(const type& value) { \
41  m_##name = value; \
42  }
43 
45 #define mitkSegmentationTaskValueMacro(type, name) \
46  public: \
47  mitkSegmentationTaskHasValueMacro(name) \
48  mitkSegmentationTaskGetValueMacro(type, name) \
49  mitkSegmentationTaskSetValueMacro(type, name) \
50  private: \
51  std::optional<type> m_##name;
52 
54 #define mitkSegmentationTaskListGetValueMacro(type, name) \
55  type Get##name(size_t index) const { \
56  return index < m_Tasks.size() ? m_Tasks[index].Get##name() : type(); \
57  }
58 
60 #define mitkSegmentationTaskListHasValueMacro(name) \
61  bool Has##name(size_t index) const { \
62  return index < m_Tasks.size() && (m_Tasks[index].Has##name() || m_Defaults.Has##name()); \
63  }
64 
66 #define mitkSegmentationTaskListSetDefaultMacro(type, name) \
67  void SetDefault##name(const type& value) { \
68  m_Defaults.Set##name(value); \
69  }
70 
72 #define mitkSegmentationTaskListValueMacro(type, name) \
73  mitkSegmentationTaskListHasValueMacro(name) \
74  mitkSegmentationTaskListGetValueMacro(type, name) \
75  mitkSegmentationTaskListSetDefaultMacro(type, name)
76 
77 #endif