1 /*========================================================================= 2 * 3 * Copyright Insight Software Consortium 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0.txt 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 *=========================================================================*/ 18 /*========================================================================= 19 * 20 * Portions of this file are subject to the VTK Toolkit Version 3 copyright. 21 * 22 * Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 23 * 24 * For complete copyright, license and disclaimer of warranty information 25 * please refer to the NOTICE file at the top of the ITK source tree. 26 * 27 *=========================================================================*/ 28 #ifndef itkMetaDataObjectBase_h 29 #define itkMetaDataObjectBase_h 30 31 #include "itkLightObject.h" 32 #include <typeinfo> 33 #include <iostream> 34 35 namespace itk 36 { 37 /** \class MetaDataObjectBase 38 * \brief The common interface for MetaDataObject's. 39 * 40 * This class is intended as the value part 41 * of the (key,value) pair to be stored in 42 * a MetaDataDictionary 43 * 44 * \author Hans J. Johnson 45 * \ingroup ITKCommon 46 */ 47 class ITKCommon_EXPORT MetaDataObjectBase: public LightObject 48 { 49 public: 50 ITK_DISALLOW_COPY_AND_ASSIGN(MetaDataObjectBase); 51 52 /** Smart pointer type alias support */ 53 using Self = MetaDataObjectBase; 54 using Superclass = LightObject; 55 using Pointer = SmartPointer< Self >; 56 using ConstPointer = SmartPointer< const Self >; 57 58 /** Run-time type information (and related methods). */ 59 itkTypeMacro(MetaDataObjectBase, LightObject); 60 61 /** 62 * \author Hans J. Johnson 63 * \return A pointer to a const char array containing the unique type name. 64 */ 65 virtual const char * GetMetaDataObjectTypeName() const; 66 67 /** 68 * \author Hans J. Johnson 69 * \return A constant reference to a std::type_info object 70 */ 71 virtual const std::type_info & GetMetaDataObjectTypeInfo() const; 72 73 /** 74 * Defines the default behavior for printing out this element 75 * \param os An output stream 76 */ 77 virtual void Print( std::ostream & os ) const; 78 79 protected: 80 MetaDataObjectBase(); 81 ~MetaDataObjectBase() override; 82 }; 83 } 84 85 #endif //itkMetaDataObjectBase_h 86