This file is indexed.

/usr/include/ThePEG/Utilities/LoopGuard.h is in libthepeg-dev 1.8.0-3build1.

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
139
140
141
142
143
144
// -*- C++ -*-
//
// LoopGuard.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_LoopGuard_H
#define ThePEG_LoopGuard_H
// This is the declaration of the LoopGuard class.

namespace ThePEG {

/**
 * A LoopGuard object can be used to throw an exception if a loop is
 * iterated too many times. It is used by constructing an object
 * before the loop giving the maximum number of iterations allowed and
 * a message to be used as argument to the constructor of the
 * exception to be thrown. Inside the loop the parenthesis is called
 * without argument, which will increment and check an internal counter.
 * 
 *
 * @see Level
 */
template <typename ExceptionT = Exception,
          typename MessageT = const char *>
class LoopGuard {

public:

  /**
   * Create a loop guard object which will throw an exception of type
   * ExceptionT, constructed with 'mess' as argument, if the maximum
   * number of iterations is exceeded.
   */
  LoopGuard(const MessageT & mess, long maxc = 1000000 )
    : count(0), maxCount(maxc), message(mess) {}

  /**
   * Increase the iteration count and throw an ExceptionT if the
   * maximum number of iterations is exceeded.
   */
  void operator()()
  {
    if ( ++count > maxCount ) throw ExceptionT(message);
  }

private:

  /**
   * The number of counts so far.
   */
  long count;

  /**
   * The maximum number of counts allowed.
   */
  long maxCount;

  /**
   * The message with which the thrown ExceptionT object will be
   * initialized.
   */
  const MessageT & message;

private:

  /**
   * Default constructor is private and not implemented.
   */
  LoopGuard();

  /**
   * Copy constructor is private and not implemented.
   */
  LoopGuard(const LoopGuard &);

};

/**
 * A LoopGuard object can be used to throw an exception if a loop is
 * iterated too many times. It is used by constructing an object
 * before the loop giving the maximum number of iterations allowed and
 * a message to be used as argument to the constructor of the
 * exception to be thrown. Inside the loop the parenthesis is called
 * without argument, which will increment and check an internal
 * counter.  This specialization is for the case where the exception
 * class cannot be created with a message.
 * 
 *
 * @see Level
 */
template <typename ExceptionT>
class LoopGuard<ExceptionT,void> {

public:

  /**
   * Create a loop guard object which will throw an exception of type
   * ExceptionT, constructed with 'mess' as argument, if the maximum
   * number of iterations is exceeded.
   */
  LoopGuard(long maxc = 1000000 )
    : count(0), maxCount(maxc) {}

  /**
   * Increase the iteration count and throw an ExceptionT if the
   * maximum number of iterations is exceeded.
   */
  void operator()()
  {
    if ( ++count > maxCount ) throw ExceptionT();
  }

private:

  /**
   * The number of counts so far.
   */
  long count;

  /**
   * The maximum number of counts allowed.
   */
  long maxCount;

private:

  /**
   * Default constructor is private and not implemented.
   */
  LoopGuard();

  /**
   * Copy constructor is private and not implemented.
   */
  LoopGuard(const LoopGuard &);

};

}

#endif /* ThePEG_LoopGuard_H */