This file is indexed.

/usr/include/ITK-4.9/itkReflectiveImageRegionConstIterator.h is in libinsighttoolkit4-dev 4.9.0-4ubuntu1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
/*=========================================================================
 *
 *  Copyright Insight Software Consortium
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *         http://www.apache.org/licenses/LICENSE-2.0.txt
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 *
 *=========================================================================*/
#ifndef itkReflectiveImageRegionConstIterator_h
#define itkReflectiveImageRegionConstIterator_h

#include "itkImageConstIteratorWithIndex.h"

namespace itk
{
/** \class ReflectiveImageRegionConstIterator
 * \brief Multi-dimensional image iterator which only walks a region.
 *
 * ReflectiveImageRegionConstIterator is a templated class to represent a
 * multi-dimensional iterator. ReflectiveImageRegionConstIterator is templated
 * over the image type. ReflectiveImageRegionConstIterator is constrained to
 * walk only within the specified region.
 *
 * ReflectiveImageRegionConstIterator will perform two passes over the image
 * along each dimension. It is useful for algorithms that require to
 * go back and forth (once) over the data.
 *
 * By setting the BeginOffset and EndOffset parameters, you can arrange for
 * the starting point, when going forwards, to be different from the ending
 * point, when going backwards. Along dimension d, when going forwards the
 * iterator traverses the interval [BeginIndex[d]+BeginOffset[d], EndIndex[d]).
 * When going back, it traverses the interval (EndIndex[d]-EndOffset[d],
 * BeginIndex[d]].  Setting both offsets to (1, ..., 1) enables the
 * DanielssonDistanceMapImageFilter to process the entire image,
 * without encountering boundary conditions, rather
 * than removing a one-pixel border.
 *
 * \sa DanielssonDistanceMapImageFilter
 *
 * \ingroup Iterators
 * \ingroup ITKDistanceMap
 */
template< typename TImage >
class ReflectiveImageRegionConstIterator:public ImageConstIteratorWithIndex< TImage >
{
public:
  /** Standard class typedefs. */
  typedef ReflectiveImageRegionConstIterator    Self;
  typedef ImageConstIteratorWithIndex< TImage > Superclass;

  /** Index typedef support. While this was already typdef'ed in the superclass
   * it needs to be redone here for this subclass to compile properly with gcc.
   * Note that we have to rescope Index back to itk::Index to that is it not
   * confused with ImageIterator::Index. */
  typedef typename TImage::IndexType IndexType;

  /** Image typedef support. While this was already typdef'ed in the superclass
   * it needs to be redone here for this subclass to compile properly with gcc.
   * Note that we have to rescope Image back to itk::Image to that is it not
   * confused with ImageIterator::Image. */
  typedef TImage ImageType;

  /** PixelContainer typedef support. Used to refer to the container for
   * the pixel data. While this was already typdef'ed in the superclass
   * it needs to be redone here for this subclass to compile properly
   * with gcc. */
  typedef typename TImage::PixelContainer  PixelContainer;
  typedef typename PixelContainer::Pointer PixelContainerPointer;

  /** Region typedef support. While this was already typdef'ed in the
   * superclass it needs to be redone here for this subclass to compile
   * properly with gcc.  Note that we have to rescope Region back to
   * itk::ImageRegion so that is it not confused with
   * ImageIterator::Index. */
  typedef typename TImage::RegionType     RegionType;
  typedef typename TImage::SizeType       SizeType;
  typedef typename TImage::SizeValueType  SizeValueType;

  /** Type of the Offset taken from the image.  These typedefs are
   * duplicated from the superclass for gcc support. */
  typedef typename TImage::OffsetType          OffsetType;
  typedef typename OffsetType::OffsetValueType OffsetValueType;

  /** Default constructor. Needed since we provide a cast constructor. */
  ReflectiveImageRegionConstIterator();

  /** Default destructor.  */
  ~ReflectiveImageRegionConstIterator() {}

  /** Constructor establishes an iterator to walk a particular image and a
   * particular region of that image. */
  ReflectiveImageRegionConstIterator(TImage *ptr, const RegionType & region);

  /** Copy Constructor. The copy constructor is provided to make sure the
   * handle to the image is properly reference counted. */
  ReflectiveImageRegionConstIterator(const Self & it);

  /** Constructor that can be used to cast from an ImageIterator to an
   * ReflectiveImageRegionConstIterator. Many routines return an
   * ImageIterator but for a particular task, you may want an
   * ReflectiveImageRegionConstIterator.  Rather than provide
   * overloaded APIs that return different types of Iterators, itk
   * returns ImageIterators and uses constructors to cast from * an
   * ImageIterator to a ReflectiveImageRegionConstIterator.  */
  ReflectiveImageRegionConstIterator(const ImageConstIteratorWithIndex< TImage > & it);

  /** operator= is provided to make sure the handle to the image is properly
   * reference counted. */
  Self & operator=(const Self & it);

  bool IsReflected(unsigned int) const;

  /** Increment (prefix) the fastest moving dimension of the iterator's index.
   * This operator will constrain the iterator within the region (i.e. the
   * iterator will automatically wrap from the end of the row of the region
   * to the beginning of the next row of the region) up until the iterator
   * tries to moves past the last pixel of the region.  Here, the iterator
   * will be set to be one pixel past the end of the region.
   * \sa operator++(int) */
  Self & operator++();

  /** Move an iterator to the beginning of the region. */
  void GoToBegin();

  /** Is the iterator at the beginning of the region? */
  bool IsAtBegin(void) const
  {
    return !this->m_Remaining;
  }

  /** Set the begin offset.  Forward iteration starts at this offset
   * from the current region.  */
  void SetBeginOffset(const OffsetType & offset)
  { m_BeginOffset = offset; }

  /** Set the end offset.  Reverse iteration starts at this offset
   * from the current region.  */
  void SetEndOffset(const OffsetType & offset)
  { m_EndOffset = offset; }

  /** Get the begin offset.  Forward iteration starts at this offset
   * from the current region.  */
  OffsetType GetBeginOffset(const OffsetType & )
  { return m_BeginOffset; }

  /** Get the end offset.  Reverse iteration starts at this offset
   * from the current region.  */
  OffsetType GetEndOffset(const OffsetType & )
  { return m_EndOffset; }

  /** Fill both offsets with a single value.  */
  void FillOffsets(const OffsetValueType & value);

private:
  bool       m_IsFirstPass[TImage::ImageDimension];
  OffsetType m_BeginOffset;
  OffsetType m_EndOffset;
};
} // end namespace itk

#ifndef ITK_MANUAL_INSTANTIATION
#include "itkReflectiveImageRegionConstIterator.hxx"
#endif

#endif