This file is indexed.

/usr/include/InsightToolkit/Review/itkQuadEdgeMeshTopologyChecker.h is in libinsighttoolkit3-dev 3.20.1+git20120521-6build1.

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
/*=========================================================================

  Program:   Insight Segmentation & Registration Toolkit
  Module:    itkQuadEdgeMeshTopologyChecker.h
  Language:  C++
  Date:      $Date$
  Version:   $Revision$

  Copyright (c) Insight Software Consortium. All rights reserved.
  See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.

     This software is distributed WITHOUT ANY WARRANTY; without even
     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
     PURPOSE.  See the above copyright notices for more information.

=========================================================================*/

#ifndef __itkQuadEdgeMeshTopologyChecker_h
#define __itkQuadEdgeMeshTopologyChecker_h

#include "itkQuadEdgeMeshBoundaryEdgesMeshFunction.h"

namespace itk
{

/** \class QuadEdgeMeshTopologyChecker
 *  \brief Make some basic checks in order to verify that the considered
 *         mesh is not degenerated and correctly represents a surface
 *         with a potential boundary.
 *
 * We check that they are no isolated vertices, no isolated edges and
 * that the Euler formula is possible.
 *
 * \author Alexandre Gouaillard, Leonardo Florez-Valencia, Eric Boix
 *
 * This implementation was contributed as a paper to the Insight Journal
 * http://insight-journal.org/midas/handle.php?handle=1926/306
 *
 */
template< class TMesh >
class ITK_EXPORT QuadEdgeMeshTopologyChecker : public Object
{
public:
  // Standard types
  typedef QuadEdgeMeshTopologyChecker          Self;
  typedef Object                               Superclass;
  typedef SmartPointer< Self >                 Pointer;
  typedef SmartPointer< const Self >           ConstPointer;

  typedef TMesh                                MeshType;
  typedef typename MeshType::QEPrimal          QEPrimal;  
  typedef typename MeshType::EdgeCellType      EdgeCellType;
  typedef typename MeshType::CellsContainerConstIterator
                                               CellsContainerConstIterator; 
  typedef QuadEdgeMeshBoundaryEdgesMeshFunction< MeshType >
                                               BoundaryEdges;

public:
  itkNewMacro( Self );
  itkTypeMacro( QuadEdgeMeshTopologyChecker, Object );

  itkSetConstObjectMacro( Mesh, MeshType ); 

  // FIXME this probably should be taken from the traits of the Mesh
  typedef unsigned long IdentifierType; 

  itkSetMacro( ExpectedNumberOfPoints, IdentifierType );
  itkSetMacro( ExpectedNumberOfEdges, IdentifierType );
  itkSetMacro( ExpectedNumberOfFaces, IdentifierType );
  itkSetMacro( ExpectedNumberOfBoundaries, IdentifierType );
  itkSetMacro( ExpectedGenus, IdentifierType );

  bool ValidateEulerCharacteristic() const;


protected:
  QuadEdgeMeshTopologyChecker();
  ~QuadEdgeMeshTopologyChecker(){};
  void PrintSelf(std::ostream& os, Indent indent) const;

private:
  QuadEdgeMeshTopologyChecker( const Self& ); //purposely not implemented 
  void operator=( const Self& );     //purposely not implemented

  typedef typename MeshType::ConstPointer   MeshPointer;

  MeshPointer     m_Mesh;
 
  IdentifierType  m_ExpectedNumberOfPoints;
  IdentifierType  m_ExpectedNumberOfEdges;
  IdentifierType  m_ExpectedNumberOfFaces;
  IdentifierType  m_ExpectedNumberOfBoundaries;
  IdentifierType  m_ExpectedGenus;
};

} 

#ifndef ITK_MANUAL_INSTANTIATION
#include "itkQuadEdgeMeshTopologyChecker.txx"
#endif 

#endif