20 #ifndef __itkMetaDataObject_h
21 #define __itkMetaDataObject_h
61 template <
class MetaDataObjectType>
72 itkFactorylessNewMacro(
Self);
103 virtual const char * GetMetaDataObjectTypeName(
void)
const;
111 virtual const std::type_info & GetMetaDataObjectTypeInfo(
void)
const;
117 const MetaDataObjectType & GetMetaDataObjectValue(
void)
const;
123 void SetMetaDataObjectValue(
const MetaDataObjectType & NewValue );
128 virtual void Print(std::ostream& os)
const;
153 temp->SetMetaDataObjectValue(invalue);
154 Dictionary[key] = temp;
175 if(!Dictionary.
HasKey(key))
182 if(strcmp(
typeid(T).name(),baseObjectSmartPointer->GetMetaDataObjectTypeName()) != 0)
189 #if (defined(__sgi) && !defined(__GNUC__))
201 reinterpret_cast<MetaDataObject <T> *
>(Dictionary[key].GetPointer())->GetMetaDataObjectValue();
206 outval = TempMetaDataObject->GetMetaDataObjectValue();
252 #define NATIVE_TYPE_METADATAPRINT(TYPE_NAME) \
255 itk::MetaDataObject< TYPE_NAME > \
256 ::Print(std::ostream& os) const \
258 os << this->m_MetaDataObjectValue << std::endl; \
262 itk::MetaDataObject< const TYPE_NAME > \
263 ::Print(std::ostream& os) const \
265 os << this->m_MetaDataObjectValue << std::endl; \
276 #define ITK_OBJECT_TYPE_METADATAPRINT_1COMMA( TYPE_NAME_PART1 , TYPE_NAME_PART2 ) \
279 itk::MetaDataObject< TYPE_NAME_PART1 , TYPE_NAME_PART2 > \
280 ::Print(std::ostream& os) const \
282 this->m_MetaDataObjectValue->Print(os); \
286 itk::MetaDataObject< const TYPE_NAME_PART1 , TYPE_NAME_PART2 > \
287 ::Print(std::ostream& os) const \
289 this->m_MetaDataObjectValue->Print(os); \
299 #define ITK_IMAGE_TYPE_METADATAPRINT(STORAGE_TYPE) \
300 ITK_OBJECT_TYPE_METADATAPRINT_1COMMA(itk::Image< STORAGE_TYPE , 1 >::Pointer) \
301 ITK_OBJECT_TYPE_METADATAPRINT_1COMMA(itk::Image< STORAGE_TYPE , 2 >::Pointer) \
302 ITK_OBJECT_TYPE_METADATAPRINT_1COMMA(itk::Image< STORAGE_TYPE , 3 >::Pointer) \
303 ITK_OBJECT_TYPE_METADATAPRINT_1COMMA(itk::Image< STORAGE_TYPE , 4 >::Pointer) \
304 ITK_OBJECT_TYPE_METADATAPRINT_1COMMA(itk::Image< STORAGE_TYPE , 5 >::Pointer) \
305 ITK_OBJECT_TYPE_METADATAPRINT_1COMMA(itk::Image< STORAGE_TYPE , 6 >::Pointer) \
306 ITK_OBJECT_TYPE_METADATAPRINT_1COMMA(itk::Image< STORAGE_TYPE , 7 >::Pointer) \
307 ITK_OBJECT_TYPE_METADATAPRINT_1COMMA(itk::Image< STORAGE_TYPE , 8 >::Pointer) \
310 #define ITK_TEMPLATE_MetaDataObject(_, EXPORT, x, y) namespace itk { \
311 _(1(class EXPORT MetaDataObject< ITK_TEMPLATE_1 x >)) \
312 namespace Templates { typedef MetaDataObject< ITK_TEMPLATE_1 x > \
313 MetaDataObject##y; } \
316 #if ITK_TEMPLATE_EXPLICIT
317 # include "Templates/itkMetaDataObject+-.h"
325 #endif //itkMetaDataObject_h