00001 /*---------------------------------------------------------------------\ 00002 | ____ _ __ __ ___ | 00003 | |__ / \ / / . \ . \ | 00004 | / / \ V /| _/ _/ | 00005 | / /__ | | | | | | | 00006 | /_____||_| |_| |_| | 00007 | | 00008 \---------------------------------------------------------------------*/ 00012 #ifndef ZYPP_RESTRAITS_H 00013 #define ZYPP_RESTRAITS_H 00014 00015 #include "zypp/base/PtrTypes.h" 00016 #include "zypp/base/KindOf.h" 00017 00019 namespace zypp 00020 { 00021 00049 DEFINE_PTR_TYPE( Resolvable ); 00050 DEFINE_PTR_TYPE( ResObject ); 00051 00052 DEFINE_PTR_TYPE( Atom ); 00053 DEFINE_PTR_TYPE( Package ); 00054 DEFINE_PTR_TYPE( SrcPackage ); 00055 DEFINE_PTR_TYPE( Selection ); 00056 DEFINE_PTR_TYPE( Pattern ); 00057 DEFINE_PTR_TYPE( Product ); 00058 DEFINE_PTR_TYPE( Patch ); 00059 DEFINE_PTR_TYPE( Script ); 00060 DEFINE_PTR_TYPE( Message ); 00061 DEFINE_PTR_TYPE( Language ); 00062 00063 DEFINE_PTR_TYPE( SystemResObject ); 00065 00067 struct ResolvableTraits 00068 { 00069 typedef KindOf<Resolvable> KindType; 00070 }; 00071 00073 template<typename _Res> 00074 struct ResTraits : public ResolvableTraits 00075 { 00076 typedef intrusive_ptr<_Res> PtrType; 00077 typedef intrusive_ptr<const _Res> constPtrType; 00078 00079 static const KindType kind; 00080 }; 00081 00085 template<> 00086 struct ResTraits<Resolvable> : public ResolvableTraits 00087 { 00088 typedef intrusive_ptr<Resolvable> PtrType; 00089 typedef intrusive_ptr<const Resolvable> constPtrType; 00090 }; 00091 00095 template<> 00096 struct ResTraits<ResObject> : public ResolvableTraits 00097 { 00098 typedef intrusive_ptr<ResObject> PtrType; 00099 typedef intrusive_ptr<const ResObject> constPtrType; 00100 }; 00101 00103 } // namespace zypp 00105 #endif // ZYPP_RESTRAITS_H
1.5.3