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!
18#include <zypp/base/ReferenceCounted.h>
19#include <zypp/base/PtrTypes.h>
43 class SolutionAction :
public base::ReferenceCounted
49 virtual ~SolutionAction();
52 virtual std::ostream &
dumpOn( std::ostream &
str )
const;
53 friend std::ostream&
operator<<(std::ostream &
str,
const SolutionAction & action)
54 {
return action.dumpOn (
str); }
55 friend std::ostream&
operator<<(std::ostream &
str,
const SolutionActionList & actionlist);
62 virtual bool execute (ResolverInternal & resolver)
const = 0;
66 virtual bool skipsPatchesOnly()
const;
83 REMOVE_EXTRA_CONFLICT,
85 REMOVE_SOLVE_QUEUE_ITEM,
89 class TransactionSolutionAction:
public SolutionAction
92 TransactionSolutionAction( PoolItem item,
93 TransactionKind action )
95 _item( item ), _action( action ) {}
97 TransactionSolutionAction( Capability capability,
98 TransactionKind action )
100 _capability( capability ), _action( action ) {}
103 TransactionSolutionAction( SolverQueueItem_Ptr item,
104 TransactionKind action )
106 _solverQueueItem( item ), _action( action ) {}
108 TransactionSolutionAction( TransactionKind action )
110 _item(), _action( action ) {}
113 virtual std::ostream &
dumpOn( std::ostream &
str )
const;
114 friend std::ostream&
operator<<(std::ostream&
str,
const TransactionSolutionAction & action)
115 {
return action.dumpOn (
str); }
119 const PoolItem item()
const {
return _item; }
120 const Capability capability()
const {
return _capability; }
121 TransactionKind action()
const {
return _action; }
124 virtual bool execute(ResolverInternal & resolver)
const;
128 bool skipsPatchesOnly()
const override;
133 Capability _capability;
134 SolverQueueItem_Ptr _solverQueueItem;
136 const TransactionKind _action;
147 } InjectSolutionKind;
157 class InjectSolutionAction:
public SolutionAction
161 InjectSolutionAction( PoolItem item,
162 const InjectSolutionKind & kind)
168 virtual std::ostream &
dumpOn( std::ostream &
str )
const;
169 friend std::ostream&
operator<<(std::ostream&
str,
const InjectSolutionAction & action)
170 {
return action.dumpOn (
str); }
173 const PoolItem item()
const {
return _item; }
176 virtual bool execute(ResolverInternal & resolver)
const;
180 const InjectSolutionKind _kind;
std::ostream & operator<<(std::ostream &str, const zypp::sat::detail::CDataiterator *obj)
String related utilities and Regular expression matching.
Resolver ResolverInternal
Preferred name in API.
std::list< SolutionAction_Ptr > SolutionActionList
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.