<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Change SYSTEM "http://itk.org/migrationv4/ITKMigration.dtd">

<!--**
**
** RemovePublicMetaDataObjectConstructors.xml
**
**-->
<Change>
    <!--**
    ** Title for the online migration page
    **-->
    <Title>
      Remove Public Meta Data Object Constructors
    </Title>

    <!--**
    ** The author of the change
    **-->
    <Author>
      Matt McCormick
    </Author>

    <!--**
    ** Date of creation for the XML document
    **-->
    <Date>
      2014-04-28
    </Date>

    <!--**
    ** Plain text description of the change
    ** Extracted from git commit messages
    **-->
    <Description>
      <![CDATA[
      Remove public MetaDataObject constructors.
      MetaDataObject uses the ::New() method and reference counting inherited from
      LightObject -- these constructors cannot be used without improper memory
      management.

      Also remote the const type specializations of the Print macros -- these could
      not be used in practice because the value could not get set.
      ]]>
    </Description>

    <!--**
    ** Sample code snippets
    ** Extracted from git diff of changed files in Examples and Testing
    **-->
    <SampleCode>
      <Old>
        <![CDATA[
        typedef itk::MetaDataObject< std::string > MetaDataObjectType;
        MetaDataObjectType stackMetaDataObject;
        MetaDataObjectType * newHeapMetaDataObject = new MetaDataObjectType();
        delete newHeapMetaDataObject;
        ]]>
      </Old>

      <New>
        <![CDATA[
        typedef itk::MetaDataObject< std::string > MetaDataObjectType;
        MetaDataObjectType::Pointer metaDataObject = MetaDataObjectType::New();
        ]]>
      </New>

    </SampleCode>

    <!--**
    ** The change-ids for all commits in the topic branch
    **-->
    <Gerrit-ChangeId>
      Iee52b2693f56c50691d10ea3d989f22bf1d3eca0
    </Gerrit-ChangeId>

    <!--**
    ** List of all changed files from the topic branch
    **-->
    <FileList>
      Modules/Core/Common/include/itkMetaDataObject.h
      Modules/Core/Common/include/itkMetaDataObject.hxx
    </FileList>

</Change>
