/usr/include/x86_64-linux-gnu/zypp/ResTraits.h is in libzypp-dev 14.29.1-2.
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 | /*---------------------------------------------------------------------\
| ____ _ __ __ ___ |
| |__ / \ / / . \ . \ |
| / / \ V /| _/ _/ |
| / /__ | | | | | | |
| /_____||_| |_| |_| |
| |
\---------------------------------------------------------------------*/
/** \file zypp/ResTraits.h
*
*/
#ifndef ZYPP_RESTRAITS_H
#define ZYPP_RESTRAITS_H
#include "zypp/base/PtrTypes.h"
#include "zypp/ResKind.h"
///////////////////////////////////////////////////////////////////
namespace zypp
{ /////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
namespace traits
{ /////////////////////////////////////////////////////////////////
/** Those are denoted to be installed, if the
* solver verifies them as being satisfied. */
inline bool isPseudoInstalled( ResKind kind_r )
{ return( kind_r == ResKind::patch ); }
/////////////////////////////////////////////////////////////////
} // namespace traits
///////////////////////////////////////////////////////////////////
/** \defgroup ZYPP_RESOLVABLE_SMART_POINTER_TYPES
* Resolvable smart pointer types.
*
* Forward declaration of all Resolvable smart pointer
* types provided in \c ResTraits.h (recommended in header files):
* \code
* #include "zypp/ResTraits.h"
*
* Resolvable_Ptr // Resolvable *
* ResTraits<Resolvable>::PtrType // same as above
*
* Resolvable_constPtr // const Resolvable *
* ResTraits<Resolvable>::constPtrType // same as above
* \endcode
*
* Synonym, but requires \c Resolvable.h being included:
* \code
* #include "zypp/Resolvable.h"
*
* Resolvable::Ptr // same as Resolvable_Ptr but requires Resolvable.h
* Resolvable::constPtr // same as Resolvable_constPtr but requires Resolvable.h
* \endcode
*
* \note When adding a \c NewResolvable type here, dont forgett to
* put <tt>IMPL_PTR_TYPE(NewResolvable);</tt> into the \c NewResolvable.cc.
* Also check class \ref ResKind, ResKind.cc, ResObject.cc(makeResObject)
*/
//@{
DEFINE_PTR_TYPE( Resolvable );
DEFINE_PTR_TYPE( ResObject );
DEFINE_PTR_TYPE( Package );
DEFINE_PTR_TYPE( SrcPackage );
DEFINE_PTR_TYPE( Pattern );
DEFINE_PTR_TYPE( Product );
DEFINE_PTR_TYPE( Patch );
DEFINE_PTR_TYPE( Application );
//@}
/** Frequently associated. */
class PoolItem;
/** ResTraits. Defines common types and the ResKind value. */
template<typename _Res>
struct ResTraits
{
typedef ResKind KindType;
typedef intrusive_ptr<_Res> PtrType;
typedef intrusive_ptr<const _Res> constPtrType;
static const ResKind kind; ///< Defined in ResKind.cc
/** Those are denoted to be installed, if the
* solver verifies them as being satisfied. */
static bool isPseudoInstalled() { return traits::isPseudoInstalled( kind ); }
};
/** ResTraits specialisation for Resolvable.
* Resolvable is common base and has no Kind value.
*/
template<>
struct ResTraits<Resolvable>
{
typedef ResKind KindType;
typedef intrusive_ptr<Resolvable> PtrType;
typedef intrusive_ptr<const Resolvable> constPtrType;
};
/** ResTraits specialisation for ResObject.
* ResObject is common base and has no Kind value.
*/
template<>
struct ResTraits<ResObject>
{
typedef ResKind KindType;
typedef intrusive_ptr<ResObject> PtrType;
typedef intrusive_ptr<const ResObject> constPtrType;
};
/** Convenient access to well known ResKinds.
* \code
* ResKind packagekind = ResKind::package;
* ResKind packagekind = resKind<Package>();
* \endcode
*/
template<typename _Res>
inline ResKind resKind() { return ResTraits<_Res>::kind; }
/** Convenient test for ResKinds.
* \code
* ResKind value;
* if ( ResKind::package == value )
* if ( resKind<Package>() == value )
* if ( isKind<Package>( value ) )
* \endcode
*/
template<typename _Res>
inline bool isKind( const ResKind & val_r )
{ return( resKind<_Res>() == val_r ); }
/** \overload */
template<typename _Res>
inline bool isKind( const std::string & val_r )
{ return( resKind<_Res>() == val_r ); }
/** \overload */
template<typename _Res>
inline bool isKind( const char * val_r )
{ return( resKind<_Res>() == val_r ); }
/////////////////////////////////////////////////////////////////
} // namespace zypp
///////////////////////////////////////////////////////////////////
#endif // ZYPP_RESTRAITS_H
|