Medical Imaging Interaction Toolkit  2023.12.99-f298153c
Medical Imaging Interaction Toolkit
mitkIPropertyDeserialization.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 mitkIPropertyDeserialization_h
14 #define mitkIPropertyDeserialization_h
15 
16 #include <mitkBaseProperty.h>
17 #include <mitkServiceInterface.h>
18 #include <MitkCoreExports.h>
19 
20 #include <itkSmartPointer.h>
21 
22 #include <string>
23 #include <type_traits>
24 
25 namespace mitk
26 {
35  {
36  public:
37  virtual ~IPropertyDeserialization();
38 
39  virtual BaseProperty::Pointer CreateInstance(const std::string& className) = 0;
40 
48  template <typename T, typename = std::enable_if_t<std::is_base_of_v<BaseProperty, T>>>
50  {
51  this->InternalRegisterProperty(T::New());
52  }
53 
54  protected:
55  virtual void InternalRegisterProperty(const BaseProperty* property) = 0;
56  };
57 }
58 
59 MITK_DECLARE_SERVICE_INTERFACE(mitk::IPropertyDeserialization, "org.mitk.IPropertyDeserialization")
60 
61 #endif
mitk::BaseProperty
Abstract base class for properties.
Definition: mitkBaseProperty.h:36
mitkServiceInterface.h
itk::SmartPointer< Self >
mitk::IPropertyDeserialization
Interface of property deserialization service.
Definition: mitkIPropertyDeserialization.h:34
mitk
Find image slices visible on a given plane.
Definition: RenderingTests.dox:1
MitkCoreExports.h
mitk::IPropertyDeserialization::RegisterProperty
void RegisterProperty()
Register a custom property type for deserialization.
Definition: mitkIPropertyDeserialization.h:49
MITK_DECLARE_SERVICE_INTERFACE
#define MITK_DECLARE_SERVICE_INTERFACE(IFace, IId)
Definition: mitkServiceInterface.h:26
mitkBaseProperty.h
MITKCORE_EXPORT
#define MITKCORE_EXPORT
Definition: MitkCoreExports.h:15