/usr/include/dcmtk/ofstd/ofexbl.h is in libdcmtk-dev 3.6.2-3build3.
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 | /*
*
* Copyright (C) 2014, OFFIS e.V.
* All rights reserved. See COPYRIGHT file for details.
*
* This software and supporting documentation were developed by
*
* OFFIS e.V.
* R&D Division Health
* Escherweg 2
* D-26121 Oldenburg, Germany
*
*
* Module: ofstd
*
* Author: Jan Schlamelcher
*
* Purpose:
* Implementing the explicit boolean type OFExplicitBool.
*
*/
#ifndef OFEXBL_H
#define OFEXBL_H
#include "dcmtk/config/osconfig.h" /* make sure OS specific configuration is included first */
#include "dcmtk/ofstd/oftraits.h"
/** Helper class for resolving overloaded functions.
* OFExplicitBool can be used to restrict an overloaded function's
* parameter to "real" OFBool values, e.g. pointers and numeric values
* can NOT be converted to OFExplicitBool implicitly.
* @note OFBool falls back to "int" on platforms that don't support
* the keyword "bool". Therefore the conversion of int values to
* OFExplicitBool can't be prevented on those platforms.
*/
class OFExplicitBool
{
public:
#ifndef DOXYGEN
// copy constructor
inline OFExplicitBool( const OFExplicitBool& rhs )
: m_Value( rhs.m_Value ) {}
// generic constructor accepting only real OFBool values
// distinguished via SFINAE
template<typename Bool>
inline OFExplicitBool( Bool value,
typename OFenable_if
<
OFis_same
<
OFBool,
typename OFdecay<Bool>::type
>::value
>::type* = OFnullptr )
: m_Value( value ) {}
#else
/** Construct an OFExplicitBool object from an explicit OFBool value.
* @param value either OFTrue or OFFalse.
* @note "explicit OFBool" is not a valid C++ type. It's just a term
* to explain the concept of OFExplicitBool, that is realized by
* SFINAE mechanisms in reality.
*/
inline OFExplicitBool( explicit OFBool value );
#endif
/** Implicit conversion to OFBool.
* This allows to use OFExplicitBool like a normal OFBool value,
* for example in if-statements.
*/
inline operator OFBool() const
#ifndef DOXYGEN
{ return m_Value; }
#else
;
#endif
/** Negation operator.
* This allows to negate OFExplicitBool like a normal OFBool value,
* for example to use the negated value in if-statements.
*/
inline OFBool operator!() const
#ifndef DOXYGEN
{ return !m_Value; }
#else
;
#endif
private:
/// The underlying boolean value.
OFBool m_Value;
};
#endif // OFEXBL_H
|