Medical Imaging Interaction Toolkit  2026.06.00
Medical Imaging Interaction Toolkit
usServiceRegistration.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 USSERVICEREGISTRATION_H
14 #define USSERVICEREGISTRATION_H
15 
17 
18 namespace us {
19 
38 template<class I1, class I2 = void, class I3 = void>
40 {
41 
42 public:
43 
50  {
51  }
52 
54 
67  {
68  return this->ServiceRegistrationBase::GetReference(us_service_interface_iid<I1>());
69  }
71  {
72  return this->ServiceRegistrationBase::GetReference(us_service_interface_iid<I2>());
73  }
75  {
76  return this->ServiceRegistrationBase::GetReference(us_service_interface_iid<I3>());
77  }
79 
80  using ServiceRegistrationBase::operator=;
81 
82 
83 private:
84 
85  friend class ModuleContext;
86 
89  {
90  }
91 
92 };
93 
95 template<class I1, class I2>
96 class ServiceRegistration<I1, I2, void> : public ServiceRegistrationBase
97 {
98 
99 public:
100 
101  ServiceRegistration() : ServiceRegistrationBase()
102  {
103  }
104 
105  ServiceReference<I1> GetReference(InterfaceType<I1>) const
106  {
107  return ServiceReference<I1>(this->ServiceRegistrationBase::GetReference(us_service_interface_iid<I1>()));
108  }
109 
110  ServiceReference<I2> GetReference(InterfaceType<I2>) const
111  {
112  return ServiceReference<I2>(this->ServiceRegistrationBase::GetReference(us_service_interface_iid<I2>()));
113  }
114 
115  using ServiceRegistrationBase::operator=;
116 
117 
118 private:
119 
120  friend class ModuleContext;
121 
122  ServiceRegistration(const ServiceRegistrationBase& base)
124  {
125  }
126 
127 };
128 
129 template<class I1>
130 class ServiceRegistration<I1, void, void> : public ServiceRegistrationBase
131 {
132 
133 public:
134 
136  {
137  }
138 
139  ServiceReference<I1> GetReference() const
140  {
141  return this->GetReference(InterfaceType<I1>());
142  }
143 
144  ServiceReference<I1> GetReference(InterfaceType<I1>) const
145  {
146  return ServiceReference<I1>(this->ServiceRegistrationBase::GetReference(us_service_interface_iid<I1>()));
147  }
148 
149  using ServiceRegistrationBase::operator=;
150 
151 private:
152 
153  friend class ModuleContext;
154 
155  ServiceRegistration(const ServiceRegistrationBase& base)
157  {
158  }
159 
160 };
161 
162 template<>
163 class ServiceRegistration<void, void, void> : public ServiceRegistrationBase
164 {
165 public:
166 
173  {
174  }
175 
176  ServiceRegistration(const ServiceRegistrationBase& base)
178  {
179  }
180 
181  using ServiceRegistrationBase::operator=;
182 };
184 
191 
192 }
193 
194 #endif // USSERVICEREGISTRATION_H
ServiceReferenceBase GetReference(const std::string &interfaceId=std::string()) const
Returns a ServiceReference object for a service being registered.
ServiceRegistrationBase(const ServiceRegistrationBase &reg)
Copy constructor.
ServiceReference< I1 > GetReference(InterfaceType< I1 >) const
Returns a ServiceReference object for a service being registered.
ServiceReference< I3 > GetReference(InterfaceType< I3 >) const
Returns a ServiceReference object for a service being registered.
ServiceReference< I2 > GetReference(InterfaceType< I2 >) const
Returns a ServiceReference object for a service being registered.
ServiceRegistration()
Creates an invalid ServiceRegistration object. You can use this object in boolean expressions and it ...
ServiceRegistration< void > ServiceRegistrationU
A helper type used in several methods to get proper method overload resolutions.