This file is indexed.

/usr/include/ThePEG/Persistency/InputDescription.h is in libthepeg-dev 1.8.0-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
// -*- C++ -*-
//
// InputDescription.h is a part of ThePEG - Toolkit for HEP Event Generation
// Copyright (C) 1999-2011 Leif Lonnblad
//
// ThePEG is licenced under version 2 of the GPL, see COPYING for details.
// Please respect the MCnet academic guidelines, see GUIDELINES for details.
//
#ifndef ThePEG_InputDescription_H
#define ThePEG_InputDescription_H
// This is the declaration of the InputDescription class.

#include "ThePEG/Config/ThePEG.h"
#include "ThePEG/Utilities/ClassDescription.h"

namespace ThePEG {

/** @ingroup Persistency
 * InputDescription objects are used by the PersistentIStream class to
 * keep track of all classes it has read from a stream. It keeps a
 * pointer to the corresponding ClassDescription in case the class
 * read in was actually present in the current program, a version
 * number of the read class which may be different from the class
 * present in the current program and a list of base class
 * <code>InputDescription</code>s.
 *
 * @see PersistentIStream
 * @see Named
 * @see ClassDescription
 */
class InputDescription: public Named {

public:

  /** A vector of pointers to InputDescription objects. */
  typedef vector<const InputDescription *> DescriptionVector;

  ThePEG_DECLARE_POINTERS(PersistentBase,BPtr);

public:

  /**
   * The standard constructor.
   * @param newName the name of the class being read.
   * @param newVersion the version number of the class when written.
   */
  InputDescription(string newName, int newVersion) 
    : Named(newName), theDescription(0), theVersion(newVersion) {}

  /**
   * Set the ClassDescriptionBase object of the class being read.
   */
  void setDescription(const ClassDescriptionBase * cd) {
    theDescription = cd;
  }

  /**
   * Add a base class description.
   */
  void addBaseClass(const InputDescription * newBase) {
    theBaseClasses.push_back(newBase);
  }

  /**
   * Return the list of base class descriptions.
   */
  const DescriptionVector & descriptions() const {
    return theBaseClasses;
  }

  /**
   * Create an object of the corresponding class.
   */
  BPtr create() const {
    if ( theDescription ) return theDescription->create();
    DescriptionVector::const_iterator dit = theBaseClasses.begin();
    while ( dit != theBaseClasses.end() ) {
      BPtr obj = (*dit++)->create();
      if ( obj ) return obj;
    }
    return BPtr();
  }

  /**
   * Read an object part of the corresponding class from a stream.
   * Will only read the part of the object corresponding to the
   * members of the class represented by this object.
   */
  void input(tBPtr b, PersistentIStream & is) const {
    if ( theDescription ) theDescription->input(b, is, theVersion);
  }

private:

  /**
   * The list of base class descriptions.
   */
  DescriptionVector theBaseClasses;

  /**
   * The description of the corresponding class in the current
   * program.
   */
  const ClassDescriptionBase * theDescription;

  /**
   * The version of the class to be read.
   */
  int theVersion;

};

}

#endif /* ThePEG_InputDescription_H */