/usr/include/ThePEG/Utilities/HoldFlag.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 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 145 146 147 | // -*- C++ -*-
//
// HoldFlag.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_HoldFlag_H
#define ThePEG_HoldFlag_H
// This is the declaration of the HoldFlag class.
namespace ThePEG {
template <typename T = bool>
/**
* <code>HoldFlag</code> objects are used to temporarily change the value
* of an object, restoring the original value when the
* <code>HoldFlag</code> object is destructed.
*
* @see Level
*/
class HoldFlag {
public:
/**
* Constructor setting a temporary value for the given object.
* @param newFlag the object which value is temporarily changed.
* @param holdFlag the temporary value for the newFlag object.
*/
HoldFlag(T & newFlag, const T & holdFlag)
: theFlag(newFlag), oldFlag(holdFlag) { std::swap(theFlag, oldFlag); }
/**
* Constructor setting the a temporary value for the given object.
* @param newFlag the object which value is temporarily changed.
* @param holdFlag the temporary value for the newFlag object.
* @param finalFlag the newFlag object will be given the value
* finalFlag when the HoldFlag object is destroyed.
*/
HoldFlag(T & newFlag, const T & holdFlag, const T & finalFlag)
: theFlag(newFlag), oldFlag(holdFlag)
{
std::swap(theFlag, oldFlag);
oldFlag = finalFlag;
}
/**
* Destructor. Restores the corresponding object to its original
* value.
*/
~HoldFlag() { std::swap(theFlag, oldFlag); }
private:
/**
* The object to be changed.
*/
T & theFlag;
/**
* The value which will be restored when this is destroyed.
*/
T oldFlag;
/**
* Default constructor is private and not implemented.
*/
HoldFlag();
/**
* Copy constructor is private and not implemented.
*/
HoldFlag(const HoldFlag &);
/**
* Assignment is private and not implemented.
*/
HoldFlag & operator=(const HoldFlag &);
};
/**
* Specialization of HoldFlag for boolean variables.
*/
template <>
class HoldFlag<bool> {
public:
/**
* Constructor setting the a temporary value for the bool variable.
* @param newFlag the boolean variable which value is temporarily changed.
* @param holdFlag the temporary value for the newFlag variable.
*/
HoldFlag(bool & newFlag, bool holdFlag = true)
: theFlag(newFlag), oldFlag(newFlag) { theFlag = holdFlag; }
/**
* Constructor setting the a temporary value for the bool variable.
* @param newFlag the boolean variable which value is temporarily changed.
* @param holdFlag the temporary value for the newFlag variable.
* @param finalFlag the newFlag variable will be given the value
* finalFlag when the HoldFlag object is destroyed.
*/
HoldFlag(bool & newFlag, bool holdFlag, bool finalFlag)
: theFlag(newFlag), oldFlag(finalFlag) { theFlag = holdFlag; }
/**
* Destructor. Restores the corresponding variable to its original
* value.
*/
~HoldFlag() { theFlag = oldFlag; }
private:
/**
* The variable to be changed.
*/
bool & theFlag;
/**
* The value which will be restored when this is destroyed.
*/
bool oldFlag;
/**
* Default constructor is private and not implemented.
*/
HoldFlag();
/**
* Copy constructor is private and not implemented.
*/
HoldFlag(const HoldFlag &);
/**
* Assignment is private and not implemented.
*/
HoldFlag & operator=(const HoldFlag &);
};
}
#endif /* ThePEG_HoldFlag_H */
|