This file is indexed.

/usr/include/vtk-5.10/vtkPNetCDFPOPReader.h is in libvtk5-dev 5.10.1+dfsg-2.1build1.

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:   Visualization Toolkit
  Module:    vtPkNetCDFPOPReader.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.

=========================================================================*/
// .NAME vtkPNetCDFPOPReader - read NetCDF files in parallel with MPI
// .Author Ross Miller 03.14.2011
// .SECTION Description
// vtkNetCDFPOPReader is a source object that reads NetCDF files.
// It should be able to read most any NetCDF file that wants to output a
// rectilinear grid.  The ordering of the variables is changed such that
// the NetCDF x, y, z directions correspond to the vtkRectilinearGrid
// z, y, x directions, respectively.  The striding is done with
// respect to the vtkRectilinearGrid ordering.  Additionally, the
// z coordinates of the vtkRectilinearGrid are negated so that the
// first slice/plane has the highest z-value and the last slice/plane
// has the lowest z-value.

#ifndef __vtkPNetCDFPOPReader_h
#define __vtkPNetCDFPOPReader_h

#include "vtkRectilinearGridAlgorithm.h"

class vtkDataArraySelection;
class vtkCallbackCommand;
class vtkMPIController;
class vtkPNetCDFPOPReaderInternal;

class VTK_PARALLEL_EXPORT vtkPNetCDFPOPReader : public vtkRectilinearGridAlgorithm
{
public:
  vtkTypeMacro(vtkPNetCDFPOPReader,vtkRectilinearGridAlgorithm);
  static vtkPNetCDFPOPReader *New();
  void PrintSelf(ostream& os, vtkIndent indent);

  //Description:
  //The file to open
  vtkSetStringMacro(FileName);
  vtkGetStringMacro(FileName);

  //Description:
  //Enable subsampling in i,j and k dimensions in the vtkRectilinearGrid
  vtkSetVector3Macro(Stride, int);
  vtkGetVector3Macro(Stride, int);

  // Description:
  // Variable array selection.
  virtual int GetNumberOfVariableArrays();
  virtual const char *GetVariableArrayName(int idx);
  virtual int GetVariableArrayStatus(const char *name);
  virtual void SetVariableArrayStatus(const char *name, int status);

  // Description:
  // Set/Get the vtkMultiProcessController which will handle communications
  // for the parallel rendering.  Added by RGM.
  vtkGetObjectMacro(Controller, vtkMPIController);
  void SetController(vtkMPIController *controller);

  // Description:
  // Set the list of processes that will actually open the file.
  void SetReaderRanks(vtkIdList*);

  // Description:
  // Set the number of processes that will actually read the file.
  // If this is less than 1 it will be set to 1 and if it is greater
  // than the number of processes in the communicator than it will
  // be set to the number of processes in the communicator.
  // The reader processes will be set in a round robin fashion (e.g.
  // if number = 5 and number of processes = 14 then processes
  // 0, 3, 6, 9, and 12 will be the reader processes.
  void SetNumberOfReaderProcesses(int number);

protected:
  vtkPNetCDFPOPReader();
  ~vtkPNetCDFPOPReader();

  int RequestData(vtkInformation*,vtkInformationVector**,
                  vtkInformationVector*);
  virtual int RequestInformation(vtkInformation* request,
                                 vtkInformationVector** inputVector,
                                 vtkInformationVector* outputVector);

  // Description:
  // Given the number of processes that should be assigned as
  // reader processes, generate a list of ranks of those
  // processes in a round robin fashion.
  void AssignRoundRobin(int numReaders, vtkIdList* readerRanks);

  // Functions added by RGM....

  // Description:
  // Helper function for RequestData:  Reads part of the netCDF
  // file and sends sub-arrays to all ranks that need that data
  int ReadAndSend( vtkInformation* outInfo, int varID);

  // Description:
  // Returns the MPI rank of the process that should read the specified depth
  int ReaderForDepth( unsigned depth);

  bool IsReaderRank();
  bool IsFirstReaderRank();

  // end of functions added by RGM...

  static void SelectionModifiedCallback(vtkObject *caller, unsigned long eid,
                                        void *clientdata, void *calldata);

  static void EventCallback(vtkObject* caller, unsigned long eid,
                            void* clientdata, void* calldata);

  vtkCallbackCommand* SelectionObserver;

  char *FileName;
  char *OpenedFileName;
  vtkSetStringMacro(OpenedFileName);

  int NCDFFD; //netcdf file descriptor

  int Stride[3];

  vtkMPIController *Controller;

private:
  vtkPNetCDFPOPReader(const vtkPNetCDFPOPReader&);  // Not implemented.
  void operator=(const vtkPNetCDFPOPReader&);  // Not implemented.

  vtkPNetCDFPOPReaderInternal* Internals;
};
#endif