1 #ifndef TIL_LABEL_CLASSES_H 2 #define TIL_LABEL_CLASSES_H 34 #define DEFINE_LABEL_CLASS(name) DEFINE_LABEL_CLASS_WITH_INHERITANCE(name, ) 36 #define DEFINE_LABEL_CLASS_WITH_INHERITANCE(name, inherit) \ 37 DEFINE_LABEL_CLASS_FULL(name##_label, Is##name) \ 38 DEFINE_TEST_CLASS_FULL(is_##name, Is##name, inherit) \ 40 #define DEFINE_LABEL_CLASS_FULL(labelname, memtypename) \ 41 class labelname { public: typedef void memtypename; }; \ 51 #define DEFINE_TEST_CLASS_FULL(testname, memtypename, inherit) \ 52 template <typename T> \ 53 class testname inherit \ 57 struct No { char a[2]; }; \ 58 template <typename U> static Yes testfunc (typename U::memtypename const*); \ 59 template <typename U> static No testfunc (...); \ 61 static const bool value = (sizeof(testfunc <T>(0)) == sizeof(Yes)); \ 64 #define DEFINE_TEST_CLASS_FULL(testname, memtypename, inherit) \ 65 template <typename T> \ 66 class testname inherit \ 70 struct No { char a[2]; }; \ 71 template <typename U> static Yes testfunc (typename U:: memtypename const*); \ 72 template <typename U> static No testfunc (...); \ 75 value = (sizeof(testname <T>::template testfunc <T>(0)) == sizeof(Yes)) \ 82 template <
typename T >
87 struct No {
char a[2]; };
144 template <
typename T>
150 template <
typename U>
static Yes isNeighborhood (
typename U::IsNeighborhood
const*);
151 template <
typename U>
static No isNeighborhood (...);
156 value = (
sizeof(isNeighborhood <T>(0)) == 1)
165 #undef DEFINE_LABEL_CLASS 166 #undef DEFINE_LABEL_CLASS_WITH_INHERITANCE static Yes isImagePointer(typename PointerTraits< U >::DataType::IsImagePointer const *)
DEFINE_TEST_CLASS_FULL(has_result_type, result_type,)
Belongs to package Box Do not include directly, include til/Box.h instead.
DEFINE_LABEL_CLASS(ExtrapolableImage)
Label for extrapolable images.
DEFINE_LABEL_CLASS_WITH_INHERITANCE(VolumetricImageIterator, :public ImageIterator_label)
Label for TIL smart pointers.