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 
00072     ResObject::constPtr resolvable() const;
00073 
00074   public:
00078     operator ResObject::constPtr() const
00079     { return resolvable(); }
00080 
00082     ResObject::constPtr operator->() const
00083     { return resolvable(); }
00084 
00087     operator ResObject::constPtr::unspecified_bool_type() const
00088     { return resolvable(); }
00089 
00090   private:
00092     RW_pointer<Impl> _pimpl;
00093 
00094   private:
00098     friend class PoolItemSaver;
00099     void saveState() const;
00100     void restoreState() const;
00101     bool sameState() const;
00103   };
00105 
00106   typedef PoolItem_Ref PoolItem;
00107 
00109   std::ostream & operator<<( std::ostream & str, const PoolItem_Ref & obj );
00110 
00112   inline bool operator==( const PoolItem_Ref & lhs, const PoolItem_Ref & rhs )
00113   { return lhs.resolvable() == rhs.resolvable(); }
00114 
00116   inline bool operator==( const PoolItem_Ref & lhs, const ResObject::constPtr & rhs )
00117   { return lhs.resolvable() == rhs; }
00118 
00120   inline bool operator==( const ResObject::constPtr & lhs, const PoolItem_Ref & rhs )
00121   { return lhs == rhs.resolvable(); }
00122 
00123 
00125   inline bool operator!=( const PoolItem_Ref & lhs, const PoolItem_Ref & rhs )
00126   { return ! (lhs==rhs); }
00127 
00129   inline bool operator!=( const PoolItem_Ref & lhs, const ResObject::constPtr & rhs )
00130   { return ! (lhs==rhs); }
00131 
00133   inline bool operator!=( const ResObject::constPtr & lhs, const PoolItem_Ref & rhs )
00134   { return ! (lhs==rhs); }
00135 
00137 } // namespace zypp
00140 namespace std
00141 { 
00142 
00144   template<>
00145     inline bool less<zypp::PoolItem_Ref>::operator()( const zypp::PoolItem_Ref & lhs, const zypp::PoolItem_Ref & rhs ) const
00146     { return lhs.resolvable() < rhs.resolvable(); }
00147 
00149 } // namespace zypp
00151 #endif // ZYPP_POOLITEM_H

Generated on Thu May 4 16:03:24 2006 for zypp by  doxygen 1.4.6