9#ifndef ZYPP_SOLVER_DETAIL_SOLUTIONACTION_H
10#define ZYPP_SOLVER_DETAIL_SOLUTIONACTION_H
11#ifndef ZYPP_USE_RESOLVER_INTERNALS
12#error Do not directly include this file!
43 class SolutionAction :
public base::ReferenceCounted
50 virtual ~SolutionAction();
52 virtual std::ostream &
dumpOn( std::ostream & str )
const;
58 virtual bool execute( ResolverInternal & resolver )
const = 0;
62 virtual PoolItem item()
const;
65 virtual bool skipsPatchesOnly()
const;
68 inline std::ostream &
operator<<( std::ostream & str,
const SolutionAction & action )
69 {
return action.dumpOn( str ); }
87 REMOVE_EXTRA_CONFLICT,
89 REMOVE_SOLVE_QUEUE_ITEM,
92 class TransactionSolutionAction:
public SolutionAction
95 TransactionSolutionAction( PoolItem item, TransactionKind action )
101 TransactionSolutionAction( Capability capability, TransactionKind action )
104 , _capability( capability )
107 TransactionSolutionAction( SolverQueueItem_Ptr item, TransactionKind action )
110 , _solverQueueItem( item )
113 TransactionSolutionAction( TransactionKind action )
118 std::ostream &
dumpOn( std::ostream & str )
const override;
120 bool execute( ResolverInternal & resolver )
const override;
123 PoolItem item()
const override
126 bool skipsPatchesOnly()
const override;
129 const TransactionKind _action;
132 Capability _capability;
133 SolverQueueItem_Ptr _solverQueueItem;
143 } InjectSolutionKind;
152 class InjectSolutionAction:
public SolutionAction
155 InjectSolutionAction( PoolItem item,
const InjectSolutionKind & kind )
161 std::ostream &
dumpOn( std::ostream & str )
const override;
163 bool execute( ResolverInternal & resolver )
const override;
166 PoolItem item()
const override
170 const InjectSolutionKind _kind;
std::ostream & operator<<(std::ostream &str, const SolutionActionList &actionlist)
std::list< SolutionAction_Ptr > SolutionActionList
Resolver ResolverInternal
Preferred name in API.
Easy-to use interface to the ZYPP dependency resolver.
std::ostream & dumpOn(std::ostream &str, const Capability &obj)
#define DEFINE_PTR_TYPE(NAME)
Forward declaration of Ptr types.