This file is indexed.

/usr/include/vtk-7.1/vtkNew.h is in libvtk7-dev 7.1.1+dfsg1-2.

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

  Program:   Visualization Toolkit
  Module:    vtkNew.h

  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
  All rights reserved.
  See Copyright.txt or http://www.kitware.com/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 notice for more information.

=========================================================================*/
/**
 * @class   vtkNew
 * @brief   Allocate and hold a VTK object.
 *
 * vtkNew is a class template that on construction allocates and
 * initializes an instance of its template argument using T::New().
 * It assumes ownership of one reference during its lifetime, and calls
 * T->Delete() on destruction.
 *
 * Automatic casting is intentionally unavailable, calling GetPointer() will
 * return a raw pointer. Users of this method should ensure that they do not
 * return this pointer if the vtkNew will go out of scope without
 * incrementing its reference count using vtkSmartPointer or similar.
 *
 * \code
 * vtkNew<vtkClass> a;
 * a->SomeMethod();
 *
 * vtkSmartPointer<vtkClass> b = a.GetPointer();
 * b->SomeOtherMethod();
 * \endcode
 *
 * It should be noted that vtkNew is not a drop in replacement for
 * vtkSmartPointer as it is not implicitly cast to a pointer in functions
 * requiring a pointer. The GetPointer() method must be used, for example,
 *
 * \code
 * vtkNew<vtkRenderer> ren;
 * vtkNew<vtkRenderWindow> renWin;
 * renWin->AddRenderer(ren.GetPointer());
 * vtkNew<vtkRenderWindowInteractor> iren;
 * iren->SetRenderWindow(renWin.GetPointer());
 * \endcode
 *
 * @sa
 * vtkSmartPointer vtkWeakPointer
*/

#ifndef vtkNew_h
#define vtkNew_h

#include "vtkIOStream.h"

class vtkObjectBase;

template <class T>
class vtkNew
{
  /**
   * Compile time checking that the class is derived from vtkObjectBase.
   */
  void CheckObjectBase(vtkObjectBase*) {}
public:
  /**
   * Create a new T on construction.
   */
  vtkNew() : Object(T::New())
  {
    this->CheckObjectBase(this->Object);
  }

  //@{
  /**
   * Deletes reference to instance of T on destruction.
   */
  ~vtkNew()
  {
    T* obj = this->Object;
    if (obj)
    {
      this->Object = 0;
      obj->Delete();
    }
  }
  //@}

  /**
   * Enable pointer-like dereference syntax. Returns a pointer to the contained
   * object.
   */
  T* operator->() const
  {
    return this->Object;
  }

  //@{
  /**
   * Get a raw pointer to the contained object. When using this function be
   * careful that the reference count does not drop to 0 when using the pointer
   * returned. This will happen when the vtkNew object goes out of
   * scope for example.
   */
  T* GetPointer() const
  {
    return this->Object;
  }
  T* Get() const
  {
    return this->Object;
  }
  //@}

private:
  vtkNew(vtkNew<T> const&) VTK_DELETE_FUNCTION;
  void operator=(vtkNew<T> const&) VTK_DELETE_FUNCTION;
  T* Object;
};

/**
 * Streaming operator to print vtkNew like regular pointers.
 */
template <class T>
inline ostream& operator << (ostream& os, const vtkNew<T>& p)
{
  return os << p.GetPointer();
}

#endif
// VTK-HeaderTest-Exclude: vtkNew.h