23#undef ITK_IO_FACTORY_REGISTER_MANAGER
33#include "itkWin32Header.h"
97#define elxInstallMacro(_classname) \
98 template <unsigned VIndex> \
99 class ITK_TEMPLATE_EXPORT _classname##_install \
103 DO(::elastix::ComponentDatabase * cdb) \
105 using ElastixType = typename ::elastix::ElastixTypedef<VIndex>::ElastixType; \
106 const auto name = ::elastix::_classname<ElastixType>::elxGetClassNameStatic(); \
108 ::elastix::InstallFunctions<::elastix::_classname<ElastixType>>::InstallComponent(name, VIndex, cdb); \
109 if (::elastix::ElastixTypedef<VIndex + 1>::IsDefined) \
111 return _classname##_install<VIndex + 1>::DO(cdb); \
117 class _classname##_install<::elastix::NrOfSupportedImageTypes + 1> \
121 DO(::elastix::ComponentDatabase * ) \
126 extern "C" int _classname##InstallComponent(::elastix::ComponentDatabase * _cdb) \
128 int _InstallDummy##_classname = _classname##_install<1>::DO(_cdb); \
129 return _InstallDummy##_classname; \
152#define elxClassNameMacro(_name) \
153 static const char * elxGetClassNameStatic() { return _name; } \
154 const char * elxGetClassName() const override { return _name; }
159#define elxDeclarePureVirtualGetSelfMacro(type) \
160 virtual const type & GetSelf() const override = 0; \
161 virtual type & GetSelf() override = 0
167#define elxOverrideGetSelfMacro \
168 auto GetSelf() const->decltype(*this) override { return *this; } \
169 auto GetSelf()->decltype(*this) override { return *this; } \
170 static void GetSelf(const void *) = delete
184#define elxout ::xl::xout["standard"]
192#if (defined(_WIN32) || defined(WIN32))
193# define ELASTIXLIB_API
195# if (__GNUC__ >= 4 || defined(__clang__))
196# define ELASTIXLIB_API __attribute__((visibility("default")))
198# define ELASTIXLIB_API