ResTraits.h

Go to the documentation of this file.
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

Generated on Tue Sep 25 19:23:06 2007 for libzypp by  doxygen 1.5.3