return str << *obj;
return str << std::string("NULL");
}
+ /** \relates zypp::shared_ptr Stream output. */
+ template<class _D>
+ inline std::ostream & dumpOn( std::ostream & str, const zypp::shared_ptr<_D> & obj )
+ {
+ if ( obj )
+ return dumpOn( str, *obj );
+ return str << std::string("NULL");
+ }
/** \relates zypp::intrusive_ptr Stream output. */
template<class _D>
return str << *obj;
return str << std::string("NULL");
}
+ /** \relates zypp::intrusive_ptr Stream output. */
+ template<class _D>
+ inline std::ostream & dumpOn( std::ostream & str, const zypp::intrusive_ptr<_D> & obj )
+ {
+ if ( obj )
+ return dumpOn( str, *obj );
+ return str << std::string("NULL");
+ }
/////////////////////////////////////////////////////////////////
} // namespace std
///////////////////////////////////////////////////////////////////
long use_count( const _Ptr & ptr_r ) const
{ return ptr_r ? ptr_r->refCount() : 0; }
};
- }
+
+ template<class _D>
+ struct Scoped
+ {
+ typedef scoped_ptr<_D> _Ptr;
+ typedef scoped_ptr<const _D> _constPtr;
+ /** Check whether pointer is not shared. */
+ bool unique( const _constPtr & ptr_r )
+ { return true; }
+ bool unique( const _Ptr & ptr_r )
+ { return true; }
+ /** Return number of references. */
+ long use_count( const _constPtr & ptr_r ) const
+ { return ptr_r ? 1 : 0; }
+ long use_count( const _Ptr & ptr_r ) const
+ { return ptr_r ? 1 : 0; }
+ };
+
+ }
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
_Ptr getPtr()
{ return _dptr; }
+ _constPtr cgetPtr()
+ { return _dptr; }
+
private:
_Ptr _dptr;
};
* if the pointer is \c NULL.
*/
template<class _D, class _Ptr>
- inline std::ostream &
- operator<<( std::ostream & str, const RW_pointer<_D, _Ptr> & obj )
+ inline std::ostream & operator<<( std::ostream & str, const RW_pointer<_D, _Ptr> & obj )
{
if ( obj.get() )
return str << *obj.get();
return str << std::string("NULL");
}
+ /** \relates RW_pointer */
+ template<class _D, class _Ptr>
+ inline bool operator==( const RW_pointer<_D, _Ptr> & lhs, const RW_pointer<_D, _Ptr> & rhs )
+ { return( lhs.get() == rhs.get() ); }
+ /** \relates RW_pointer */
+ template<class _D, class _Ptr>
+ inline bool operator==( const RW_pointer<_D, _Ptr> & lhs, const typename _Ptr::_Ptr & rhs )
+ { return( lhs.get() == rhs.get() ); }
+ /** \relates RW_pointer */
+ template<class _D, class _Ptr>
+ inline bool operator==( const typename _Ptr::_Ptr & lhs, const RW_pointer<_D, _Ptr> & rhs )
+ { return( lhs.get() == rhs.get() ); }
+ /** \relates RW_pointer */
+ template<class _D, class _Ptr>
+ inline bool operator==( const RW_pointer<_D, _Ptr> & lhs, const typename _Ptr::_constPtr & rhs )
+ { return( lhs.get() == rhs.get() ); }
+ /** \relates RW_pointer */
+ template<class _D, class _Ptr>
+ inline bool operator==( const typename _Ptr::_constPtr & lhs, const RW_pointer<_D, _Ptr> & rhs )
+ { return( lhs.get() == rhs.get() ); }
+
+
+ /** \relates RW_pointer */
+ template<class _D, class _Ptr>
+ inline bool operator!=( const RW_pointer<_D, _Ptr> & lhs, const RW_pointer<_D, _Ptr> & rhs )
+ { return ! ( lhs == rhs ); }
+ /** \relates RW_pointer */
+ template<class _D, class _Ptr>
+ inline bool operator!=( const RW_pointer<_D, _Ptr> & lhs, const typename _Ptr::_Ptr & rhs )
+ { return ! ( lhs == rhs ); }
+ /** \relates RW_pointer */
+ template<class _D, class _Ptr>
+ inline bool operator!=( const typename _Ptr::_Ptr & lhs, const RW_pointer<_D, _Ptr> & rhs )
+ { return ! ( lhs == rhs ); }
+ /** \relates RW_pointer */
+ template<class _D, class _Ptr>
+ inline bool operator!=( const RW_pointer<_D, _Ptr> & lhs, const typename _Ptr::_constPtr & rhs )
+ { return ! ( lhs == rhs ); }
+ /** \relates RW_pointer */
+ template<class _D, class _Ptr>
+ inline bool operator!=( const typename _Ptr::_constPtr & lhs, const RW_pointer<_D, _Ptr> & rhs )
+ { return ! ( lhs == rhs ); }
+
///////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
_Ptr getPtr()
{ assertUnshared(); return _dptr; }
+ _constPtr cgetPtr()
+ { return _dptr; }
+
private:
void assertUnshared()
* if the pointer is \c NULL.
*/
template<class _D, class _Ptr>
- inline std::ostream &
- operator<<( std::ostream & str, const RWCOW_pointer<_D, _Ptr> & obj )
+ inline std::ostream & operator<<( std::ostream & str, const RWCOW_pointer<_D, _Ptr> & obj )
{
if ( obj.get() )
return str << *obj.get();
return str << std::string("NULL");
}
+ /** \relates RWCOW_pointer */
+ template<class _D, class _Ptr>
+ inline bool operator==( const RWCOW_pointer<_D, _Ptr> & lhs, const RWCOW_pointer<_D, _Ptr> & rhs )
+ { return( lhs.get() == rhs.get() ); }
+ /** \relates RWCOW_pointer */
+ template<class _D, class _Ptr>
+ inline bool operator==( const RWCOW_pointer<_D, _Ptr> & lhs, const typename _Ptr::_Ptr & rhs )
+ { return( lhs.get() == rhs.get() ); }
+ /** \relates RWCOW_pointer */
+ template<class _D, class _Ptr>
+ inline bool operator==( const typename _Ptr::_Ptr & lhs, const RWCOW_pointer<_D, _Ptr> & rhs )
+ { return( lhs.get() == rhs.get() ); }
+ /** \relates RWCOW_pointer */
+ template<class _D, class _Ptr>
+ inline bool operator==( const RWCOW_pointer<_D, _Ptr> & lhs, const typename _Ptr::_constPtr & rhs )
+ { return( lhs.get() == rhs.get() ); }
+ /** \relates RWCOW_pointer */
+ template<class _D, class _Ptr>
+ inline bool operator==( const typename _Ptr::_constPtr & lhs, const RWCOW_pointer<_D, _Ptr> & rhs )
+ { return( lhs.get() == rhs.get() ); }
+
+ /** \relates RWCOW_pointer */
+ template<class _D, class _Ptr>
+ inline bool operator!=( const RWCOW_pointer<_D, _Ptr> & lhs, const RWCOW_pointer<_D, _Ptr> & rhs )
+ { return ! ( lhs == rhs ); }
+ /** \relates RWCOW_pointer */
+ template<class _D, class _Ptr>
+ inline bool operator!=( const RWCOW_pointer<_D, _Ptr> & lhs, const typename _Ptr::_Ptr & rhs )
+ { return ! ( lhs == rhs ); }
+ /** \relates RWCOW_pointer */
+ template<class _D, class _Ptr>
+ inline bool operator!=( const typename _Ptr::_Ptr & lhs, const RWCOW_pointer<_D, _Ptr> & rhs )
+ { return ! ( lhs == rhs ); }
+ /** \relates RWCOW_pointer */
+ template<class _D, class _Ptr>
+ inline bool operator!=( const RWCOW_pointer<_D, _Ptr> & lhs, const typename _Ptr::_constPtr & rhs )
+ { return ! ( lhs == rhs ); }
+ /** \relates RWCOW_pointer */
+ template<class _D, class _Ptr>
+ inline bool operator!=( const typename _Ptr::_constPtr & lhs, const RWCOW_pointer<_D, _Ptr> & rhs )
+ { return ! ( lhs == rhs ); }
+
///////////////////////////////////////////////////////////////////
/*@}*/