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

<!--**
**
** ConstNeighborhoodIteratorGetBoundaryConditionChange.xml
**
** >>>>>>>>>>>>>>>>>>>>>>>>>>>>
** THIS FILE HAS BEEN AUTOMATICALLY GENERATED. EDIT IT BEFORE COMMITING
** <<<<<<<<<<<<<<<<<<<<<<<<<<<
**
** Please, make sure this file validates the following w3c test before committing it: http://validator.w3.org
**-->
<Change>
    <!--**
    ** Title for the online migration page
    **-->
    <Title>
      ConstNeighborhoodIterator GetBoundaryCondition() Change
    </Title>

    <!--**
    ** The author of the change
    **-->
    <Author>
      Cory Quammen
    </Author>

    <!--**
    ** Date of creation for the XML document
    **-->
    <Date>
      2011-07-13
    </Date>

    <!--**
    ** Plain text description of the change
    ** Extracted from git commit messages
    **-->
    <Description>
      ConstNeighborhoodIterator::GetBoundaryCondition() now returns a
      pointer to the ImageBoundaryCondition base class instead of
      dynamically casting it to the template boundary condition type;
      the casting didn&apos;t make sense when the boundary condition
      had been overridden to a different type of boundary condition,
      as it would always return ITK_NULLPTR in that case.
    </Description>

    <!--**
    ** Sample code snippets
    ** Extracted from git diff of changed files in Examples and Testing
    **-->
    <SampleCode>

      <Old>
        <![CDATA[
        #include "itkConstNeighborhoodIterator.h"
        #include "itkImage.h"
        #include "itkZeroFluxNeumannBoundaryCondition.h"
        typedef itk::Image< float, 2 >                             ImageType;
        typedef itk::ZeroFluxNeummanBoundaryCondition< ImageType > BoundaryConditionType;

        itk::ConstNeighborhoodIterator< ImageType, BoundaryConditionType > iter;
        BoundaryConditionType* boundaryCondition = iter.GetBoundaryCondition();
        ]]>
      </Old>

      <New>
        <![CDATA[
        #include "itkConstNeighborhoodIterator.h"
        #include "itkImage.h"
        #include "itkZeroFluxNeumannBoundaryCondition.h"
        typedef itk::Image< float, 2 >                             ImageType;
        typedef itk::ZeroFluxNeummanBoundaryCondition< ImageType > BoundaryConditionType;

        itk::ConstNeighborhoodIterator< ImageType, BoundaryConditionType > iter;
        BoundaryConditionType* boundaryCondition =
          dynamic_cast< BoundaryConditionType * >( iter.GetBoundaryCondition() );
        ]]>
      </New>

    </SampleCode>

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

    <!--**
    ** List of all changed files from the topic branch
    **-->
    <FileList>
      Modules/Core/Common/include/itkConstNeighborhoodIterator.h
      Modules/Core/Common/include/itkConstNeighborhoodIterator.txx
      Modules/Core/Common/include/itkConstantBoundaryCondition.h
      Modules/Core/Common/include/itkConstantBoundaryCondition.txx
      Modules/Core/Common/include/itkImageBoundaryCondition.h
      Modules/Core/Common/include/itkPeriodicBoundaryCondition.h
      Modules/Core/Common/include/itkPeriodicBoundaryCondition.txx
      Modules/Core/Common/include/itkZeroFluxNeumannBoundaryCondition.h
      Modules/Core/Common/include/itkZeroFluxNeumannBoundaryCondition.txx
      Modules/Core/Common/test/CMakeLists.txt
      Modules/Core/Common/test/itkConstantBoundaryConditionTest.cxx
      Modules/Core/Common/test/itkPeriodicBoundaryConditionTest.cxx
      Modules/Core/Common/test/itkZeroFluxBoundaryConditionTest.cxx
    </FileList>

    <!--**
    ** If the migration can be accomplished by a simple string
    ** substitution, then use the following construct to define
    ** the substitution rule.
    **
    ** <MigrationFix-Automatic>
    **   <Old>
    **     <![CDATA[MipsleledName]]>
    **   </Old>
    **   <New>
    **     <![CDATA[MisspelledName]]>
    **   </New>
    ** </MigrationFix-Automatic>
    **-->

    <!--**
    ** If the migration can NOT be accomplished by a simple string
    ** substitution, but potential problem spots can be identified,
    ** use the following construct to define a migration flag rule.
    **
    <MigrationFix-Manual>
       GetBoundaryCondition
    </MigrationFix-Manual>
    **-->

</Change>
