PoolItem.h

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------\
00002 |                          ____ _   __ __ ___                          |
00003 |                         |__  / \ / / . \ . \                         |
00004 |                           / / \ V /|  _/  _/                         |
00005 |                          / /__ | | | | | |                           |
00006 |                         /_____||_| |_| |_|                           |
00007 |                                                                      |
00008 \---------------------------------------------------------------------*/
00012 #ifndef ZYPP_POOLITEM_H
00013 #define ZYPP_POOLITEM_H
00014 
00015 #include <iosfwd>
00016 #include <functional>
00017 
00018 #include "zypp/base/PtrTypes.h"
00019 #include "zypp/ResObject.h"
00020 #include "zypp/ResStatus.h"
00021 
00023 namespace zypp
00024 { 
00025 
00027   //
00028   //    CLASS NAME : PoolItem_Ref
00029   //
00043   class PoolItem_Ref
00044   {
00045     friend std::ostream & operator<<( std::ostream & str, const PoolItem_Ref & obj );
00046 
00047   public:
00049     class Impl;
00050 
00051   public:
00053     PoolItem_Ref();
00054 
00056     explicit
00057     PoolItem_Ref( ResObject::constPtr res_r );
00058 
00060     PoolItem_Ref( ResObject::constPtr res_r, const ResStatus & status_r );
00061 
00063     ~PoolItem_Ref();
00064 
00065   public:
00067     ResStatus & status() const;
00068 
00070     ResStatus & statusReset() const;
00071 
00075     ResObject::constPtr resolvable() const;
00076 
00077   public:
00081     operator ResObject::constPtr() const
00082     { return resolvable(); }
00083 
00085     ResObject::constPtr operator->() const
00086     { return resolvable(); }
00087 
00090     operator ResObject::constPtr::unspecified_bool_type() const
00091     { return resolvable(); }
00092 
00093   private:
00095     RW_pointer<Impl> _pimpl;
00096 
00097   private:
00101     friend class PoolItemSaver;
00102     void saveState() const;
00103     void restoreState() const;
00104     bool sameState() const;
00106   };
00108 
00109   typedef PoolItem_Ref PoolItem;
00110 
00112   std::ostream & operator<<( std::ostream & str, const PoolItem_Ref & obj );
00113 
00115   inline bool operator==( const PoolItem_Ref & lhs, const PoolItem_Ref & rhs )
00116   { return lhs.resolvable() == rhs.resolvable(); }
00117 
00119   inline bool operator==( const PoolItem_Ref & lhs, const ResObject::constPtr & rhs )
00120   { return lhs.resolvable() == rhs; }
00121 
00123   inline bool operator==( const ResObject::constPtr & lhs, const PoolItem_Ref & rhs )
00124   { return lhs == rhs.resolvable(); }
00125 
00126 
00128   inline bool operator!=( const PoolItem_Ref & lhs, const PoolItem_Ref & rhs )
00129   { return ! (lhs==rhs); }
00130 
00132   inline bool operator!=( const PoolItem_Ref & lhs, const ResObject::constPtr & rhs )
00133   { return ! (lhs==rhs); }
00134 
00136   inline bool operator!=( const ResObject::constPtr & lhs, const PoolItem_Ref & rhs )
00137   { return ! (lhs==rhs); }
00138 
00140 } // namespace zypp
00143 namespace std
00144 { 
00145 
00147   template<>
00148     inline bool less<zypp::PoolItem_Ref>::operator()( const zypp::PoolItem_Ref & lhs, const zypp::PoolItem_Ref & rhs ) const
00149     { return lhs.resolvable() < rhs.resolvable(); }
00150 
00152 } // namespace zypp
00154 #endif // ZYPP_POOLITEM_H

Generated on Thu Jul 6 00:07:22 2006 for zypp by  doxygen 1.4.6