libzypp  17.14.0
ResTraits.h
Go to the documentation of this file.
1 /*---------------------------------------------------------------------\
2 | ____ _ __ __ ___ |
3 | |__ / \ / / . \ . \ |
4 | / / \ V /| _/ _/ |
5 | / /__ | | | | | | |
6 | /_____||_| |_| |_| |
7 | |
8 \---------------------------------------------------------------------*/
12 #ifndef ZYPP_RESTRAITS_H
13 #define ZYPP_RESTRAITS_H
14 
15 #include "zypp/base/PtrTypes.h"
16 #include "zypp/ResKind.h"
17 
19 namespace zypp
20 {
21 
23  namespace traits
24  {
25 
28  inline bool isPseudoInstalled( ResKind kind_r )
29  { return( kind_r == ResKind::patch ); }
30 
32  } // namespace traits
34 
63  DEFINE_PTR_TYPE( Resolvable );
64  DEFINE_PTR_TYPE( ResObject );
65 
66  DEFINE_PTR_TYPE( Package );
67  DEFINE_PTR_TYPE( SrcPackage );
68  DEFINE_PTR_TYPE( Pattern );
69  DEFINE_PTR_TYPE( Product );
70  DEFINE_PTR_TYPE( Patch );
71  DEFINE_PTR_TYPE( Application );
73 
75  class PoolItem;
76 
78  template<typename TRes>
79  struct ResTraits
80  {
81  typedef ResKind KindType;
82  typedef intrusive_ptr<TRes> PtrType;
83  typedef intrusive_ptr<const TRes> constPtrType;
84 
85  static const ResKind kind;
86 
89  static bool isPseudoInstalled() { return traits::isPseudoInstalled( kind ); }
90  };
91 
92  // Defined in ResKind.cc
94  template<> const ResKind ResTraits<Patch>::kind;
99 
103  template<>
105  {
106  typedef ResKind KindType;
107  typedef intrusive_ptr<Resolvable> PtrType;
108  typedef intrusive_ptr<const Resolvable> constPtrType;
109  };
110 
114  template<>
116  {
117  typedef ResKind KindType;
118  typedef intrusive_ptr<ResObject> PtrType;
119  typedef intrusive_ptr<const ResObject> constPtrType;
120  };
121 
128  template<typename TRes>
129  inline ResKind resKind() { return ResTraits<TRes>::kind; }
130 
139  template<typename TRes>
140  inline bool isKind( const ResKind & val_r )
141  { return( resKind<TRes>() == val_r ); }
143  template<typename TRes>
144  inline bool isKind( const std::string & val_r )
145  { return( resKind<TRes>() == val_r ); }
147  template<typename TRes>
148  inline bool isKind( const char * val_r )
149  { return( resKind<TRes>() == val_r ); }
150 
151 
153 } // namespace zypp
155 #endif // ZYPP_RESTRAITS_H