This file is indexed.

/usr/include/InsightToolkit/Common/itkOctreeNode.h is in libinsighttoolkit3-dev 3.20.1-1.

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

  Program:   Insight Segmentation & Registration Toolkit
  Module:    itkOctreeNode.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 __itkOctreeNode_h
#define __itkOctreeNode_h
#include "itkMacro.h"
namespace itk {

enum LeafIdentifier { ZERO=0,ONE=1,TWO=2,THREE=3,FOUR=4,FIVE=5,SIX=6,SEVEN=7 };


//A forward-declaration
class OctreeNodeBranch;
class OctreeBase;
  
/**
 * \class OctreeNode
 * OctreeNode data structure,  OctreeNodes have two states: 1) They are a Colored node and the 
 * m_Branch is a sentinal value indicating the color, or 2) they are a branch node, and m_Branch
 * is a dynamically allocated array of 8 pointers to OctreeNodes.  In the second state, the 8 child
 * OctreeNodes are instantiated by the parent node.
 * \author Hans J. Johnson
 * This class is the basic building block of an octree.  It is rarely used by itself, and commonly
 * used by the Octree class.
 */
class ITKCommon_EXPORT OctreeNode
{
public:
  /**
   * Default constructor
   * \author Hans J. Johnson
   * \post After construction, it is assumed all children of this node are colored
   * with values of 0.
   */
  OctreeNode(void);
  /**
   * Default destructor
   * \author Hans J. Johnson
   */
  virtual ~OctreeNode(void);

  /**
   * Returns the value of the specified Child for for this OctreeNode
   * \author Hans J. Johnson
   * \param ChildID The numerical identifier of the desired child.
   * \return A pointer to the Disired child. NOTE: This is always an
   * instance of an OctreeNode.
   * @{
   */
  OctreeNode & GetChild(const enum LeafIdentifier ChildID) const;
  OctreeNode & GetChild(const enum LeafIdentifier ChildID);
  /** @} */
  /**
   * Determines the color value of the specified Child for for this OctreeNode
   * \author Hans J. Johnson
   * \param ChildID The numerical identifier of the desired child.
   * \return A value between 0 and 255 to indicate the color of the Disired child.
   * \pre Must determine that the specified node is colored (Use IsNodeColored() 
   * member function.  Behavior is undefined when the child is another Octree.
   */
  int GetColor(void) const;
  /**
   * Sets the color value of the specified Child for for this OctreeNode
   * \author Hans J. Johnson
   * \param ChildID The numerical identifier of the desired child.
   * \param NodeColor The disired color of this node.
   * \post All children of the specified child are removed, and the child is set to
   * the desired value.
   */
  void SetColor( int NodeColor);
  /**
   * Sets the color value of the specified Child for for this OctreeNode
   * \author Hans J. Johnson
   * \param ChildID The numerical identifier of the desired child.
   * \param NodeColor The disired color of this node.
   * \post All children of the specified child are removed, and the child is set to
   * the desired value.
   */
  void SetBranch(OctreeNodeBranch * NewBranch);
  /**
   * Determines if the child is a leaf node (colored), or a branch node (uncolored)
   * \author Hans J. Johnson
   * \param ChildID The numerical identifier of the desired child.
   * \return true if it is colored, false if it is not
   */
  bool IsNodeColored(void) const;
  inline void SetParentOctree(OctreeBase *parent)
    {
    m_Parent = parent;
    }
protected:
private:
  /**
   * Removes all children from this node down, and sets the value 
   * value of the children to background.
   * \author Hans J. Johnson
   */
  void RemoveChildren(void);

  /**
   * Each element holds COLOR or pointer to another octree node 
   */
  OctreeNodeBranch * m_Branch; 
  OctreeBase       * m_Parent;
};

class OctreeNodeBranch
{
public:
  OctreeNodeBranch(OctreeBase *parent)
    {
    for(int i = 0; i < 8; i++)
      {
      m_Leaves[i].SetParentOctree(parent);
      }
    }
  inline OctreeNode *GetLeaf(enum LeafIdentifier LeafID)
    {
    return &m_Leaves[LeafID];
    }
private:
  OctreeNode m_Leaves[8];
};
} //End of itk Namespace
#endif                          /* __itkOctreeNode_h */