Imported Upstream version 14.45.0
[platform/upstream/libzypp.git] / zypp / solver / detail / SolverQueueItemLock.h
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 4 -*- */
2 /* QueueItem.h
3  *
4  * Copyright (C) 2008 SUSE Linux Products GmbH
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License,
8  * version 2, as published by the Free Software Foundation.
9  *
10  * This program is distributed in the hope that it will be useful, but
11  * WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
18  * 02111-1307, USA.
19  */
20
21 #ifndef ZYPP_SOLVER_DETAIL_QUEUEITEMLOCK_H
22 #define ZYPP_SOLVER_DETAIL_QUEUEITEMLOCK_H
23
24 #include <iosfwd>
25 #include <string>
26
27 #include "zypp/solver/detail/SolverQueueItem.h"
28 #include "zypp/PoolItem.h"
29
30 /////////////////////////////////////////////////////////////////////////
31 namespace zypp
32 { ///////////////////////////////////////////////////////////////////////
33   ///////////////////////////////////////////////////////////////////////
34   namespace solver
35   { /////////////////////////////////////////////////////////////////////
36     /////////////////////////////////////////////////////////////////////
37     namespace detail
38     { ///////////////////////////////////////////////////////////////////
39
40 ///////////////////////////////////////////////////////////////////
41 //
42 //      CLASS NAME : SolverQueueItemLock
43
44 class SolverQueueItemLock : public SolverQueueItem {
45     
46   private:
47
48     PoolItem _item;     // the item to-be-locked
49     bool _soft;         // if triggered by a soft requirement (a recommends)
50
51   public:
52
53     SolverQueueItemLock (const ResPool & pool, const PoolItem & item, bool soft = false);
54     virtual ~SolverQueueItemLock();
55     
56     // ---------------------------------- I/O
57
58     virtual std::ostream & dumpOn( std::ostream & str ) const;
59
60     friend std::ostream& operator<<(std::ostream & str, const SolverQueueItemLock & obj)
61     { return obj.dumpOn (str); }
62
63     // ---------------------------------- accessors
64
65     bool isSoft (void) const { return _soft; }    
66
67     // ---------------------------------- methods
68     
69     virtual bool addRule (_Queue & q);
70     virtual SolverQueueItem_Ptr copy (void) const;
71     virtual int cmp (SolverQueueItem_constPtr item) const;
72 };
73
74 ///////////////////////////////////////////////////////////////////
75     };// namespace detail
76     /////////////////////////////////////////////////////////////////////
77     /////////////////////////////////////////////////////////////////////
78   };// namespace solver
79   ///////////////////////////////////////////////////////////////////////
80   ///////////////////////////////////////////////////////////////////////
81 };// namespace zypp
82 /////////////////////////////////////////////////////////////////////////
83
84 #endif // ZYPP_SOLVER_DETAIL_QUEUEITEMLOCK_H