3f4880c80974112acd7558758ab1f17edcd6835b
[platform/upstream/libzypp-bindings.git] / swig / PoolItem.i
1
2 class PoolItem_Ref
3   {
4     friend std::ostream & operator<<( std::ostream & str, const PoolItem_Ref & obj );
5
6   public:
7     /** Implementation  */
8     class Impl;
9
10   public:
11     /** Default ctor for use in std::container. */
12     PoolItem_Ref();
13
14     /** Ctor */
15     explicit
16     PoolItem_Ref( ResObject::constPtr res_r );
17
18     /** Ctor */
19     PoolItem_Ref( ResObject::constPtr res_r, const ResStatus & status_r );
20
21     /** Dtor */
22     ~PoolItem_Ref();
23
24   public:
25     /** Returns the current status. */
26     ResStatus & status() const;
27
28     /** Reset status (applies autoprotection). */
29     ResStatus & statusReset() const;
30
31     /** Returns the ResObject::constPtr.
32      * \see \ref operator->
33     */
34     ResObject::constPtr resolvable() const;
35
36   public:
37     /** Implicit conversion into ResObject::constPtr to
38      *  support query filters operating on ResObject.
39     */
40     operator ResObject::constPtr() const
41     { return resolvable(); }
42
43     /** Forward \c -> access to ResObject. */
44     ResObject::constPtr operator->() const
45     { return resolvable(); }
46
47     /** Conversion to bool to allow pointer style tests
48      *  for nonNULL \ref resolvable. */
49     operator ResObject::constPtr::unspecified_bool_type() const
50     { return resolvable(); }
51
52   private:
53     /** Pointer to implementation */
54     RW_pointer<Impl> _pimpl;
55
56   private:
57     /** \name tmp hack for save/restore state. */
58     /** \todo get rid of it. */
59     //@{
60     friend class PoolItemSaver;
61     void saveState() const;
62     void restoreState() const;
63     bool sameState() const;
64     //@}
65   };
66   ///////////////////////////////////////////////////////////////////
67
68   typedef PoolItem_Ref PoolItem;