This file is indexed.

/usr/include/ThePEG/Utilities/EnumIO.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
// -*- C++ -*-
//
// EnumIO.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_EnumIO_H
#define ThePEG_EnumIO_H
// This is the declaration of the IEnum and OEnum classes and
// associated templated functions.

// #include "ThePEG/Config/ThePEG.h"
// #include "EnumIO.fh"
// #include "EnumIO.xh"

namespace ThePEG {

template <typename T>
/**
 * The <code>OEnum</code> helper class is used to facilitate output of enums
 * to persistent streams. An enum can hence be written like this:<BR>
 * <code>os >> oenum(x);</code><BR>
 *
 * @see PersistentOStream
 * @see PersistentIStream
 * 
 */
struct OEnum {

  /** Constructor. */
  OEnum(const T & t): theT(t) {}

  /** Copy constructor. */
  OEnum(const OEnum & oe): theT(oe.theT) {}

  /** The variable to be written */
  const T & theT;

};

/**
 * The <code>IEnum</code> helper class is used to facilitate input of enums
 * from persistent streams. An enum can hence be read like this:<BR>
 * <code>is >> ienum(x);</code>
 *
 * @see PersistentOStream
 * @see PersistentIStream
 * 
 */
template <typename T>
struct IEnum {

  /** Constructor. */
  IEnum(T & t): theT(t) {}

  /** Copy constructor. */
  IEnum(const IEnum & ie): theT(ie.theT) {}

  /** The variable to be read */
  T & theT;

};

/** Helper function to create an OEnum object for a given variable. */
template <typename T>
inline OEnum<T> oenum(const T & t) {
  return OEnum<T>(t);
}

/** Helper function to create an IEnum object for a given variable. */
template <typename T>
inline IEnum<T> ienum(T & t) {
  return IEnum<T>(t);
}

/** Overloading of operator<< for OEnum. */
template <typename OStream, typename T>
OStream & operator<<(OStream & os, const OEnum<T> & e) {
  os << long(e.theT);
  return os;
}

/** Overloading of operator<< for IEnum. */
template <typename IStream, typename T>
IStream & operator>>(IStream & is, const IEnum<T> & e) {
  long l = 0;
  is >> l;
  e.theT = T(l);
  return is;
}

}

#endif /* ThePEG_EnumIO_H */