27 inline Capability autoCapability(
const Capabilities & provides_r )
29 static const Capability autopattern(
"autopattern()" );
30 for (
const auto & cap : provides_r )
49 typedef std::map<Pattern::constPtr, DefaultIntegral<bool, false> > PatternMap;
51 typedef PatternMap::key_type value_type;
69 expandIncludes( unprocessed );
70 expandExtending( unprocessed );
73 }
while( (unprocessed = nextUnprocessed()) );
79 const_iterator begin()
const 82 const_iterator end()
const 102 for_( it, c.begin(), c.end() )
104 expandInclude( Capability( it->c_str() ) );
109 void expandInclude(
const Capability & include_r )
111 sat::WhatProvides w( include_r );
112 for_( it, w.begin(), w.end() )
123 for_( it, pool.byKindBegin<Pattern>(), pool.byKindEnd<Pattern>() )
125 expandIfExtends( pat_r, *it );
130 void expandIfExtends(
const Pattern::constPtr & pat_r,
const PoolItem & extending_r )
134 for_( it, c.begin(), c.end() )
136 if ( providedBy( pat_r, Capability( it->c_str() ) ) )
151 sat::Solvable pat( pat_r->satSolvable() );
152 sat::WhatProvides w( extends_r );
153 for_( it, w.begin(), w.end() )
205 {
return bool(autoCapability(
provides() )); }
266 if ( includeSuggests_r )
274 if ( includeSuggests_r )
286 PatternExpander expander;
287 if ( ! expander.doExpand(
this ) )
291 for_( it, expander.begin(), expander.end() )
293 Contents c( (*it)->depends( includeSuggests_r ) );
294 result.
get().insert( c.begin(), c.end() );
306 addCaps( caps, depKeeper_r, dep_r );
310 const PoolItem & pi( sel->theObj() );
327 static const Capability indicator(
"pattern()" );
339 std::set<sat::Solvable> recTodo;
340 std::set<sat::Solvable> allDone;
344 std::set<sat::Solvable> reqTodo;
347 reqTodo.insert( depKeeper );
349 while ( ! reqTodo.empty() )
352 depKeeper = ( *reqTodo.begin() );
353 reqTodo.erase( reqTodo.begin() );
354 allDone.insert( depKeeper );
358 dependsSet( depKeeper, result );
363 if ( collect_r.
req.
insert( solv ) && recursively_r && isPatternsPackage( solv ) )
364 reqTodo.insert( solv );
368 if ( collect_r.
rec.
insert( solv ) && recursively_r && isPatternsPackage( solv ) )
369 recTodo.insert( solv );
378 while ( ! recTodo.empty() )
381 depKeeper = ( *recTodo.begin() );
382 recTodo.erase( recTodo.begin() );
383 if ( ! allDone.insert( depKeeper ).second )
388 dependsSet( depKeeper, result );
394 if ( collect_r.
rec.
insert( solv ) && recursively_r && isPatternsPackage( solv ) )
395 recTodo.insert( solv );
399 if ( collect_r.
rec.
insert( solv ) && recursively_r && isPatternsPackage( solv ) )
400 recTodo.insert( solv );
std::string order() const
Contents sug
suggested content set
sat::Solvable autoPackage() const
The corresponding patterns- package if isAutoPattern.
A Solvable object within the sat Pool.
Container of Solvable providing a Capability (read only).
static const Dep RECOMMENDS
static const SolvAttr order
static const SolvAttr isvisible
static const SolvAttr isdefault
Container of Capability (currently read only).
bool empty() const
Whether the container is empty.
sat::ArrayAttr< IdString, IdString > NameList
Enumeration class of dependency types.
std::string lookupStrAttribute(const SolvAttr &attr) const
intrusive_ptr< Selectable > Ptr
void contentsSet(ContentsSet &collect_r, bool recursively_r=false) const
Dependency based content set (does not evaluate includes/extends relation).
Access to the sat-pools string space.
#define for_(IT, BEG, END)
Convenient for-loops using iterator.
bool isAutoPattern() const
This patterns is auto-defined by a patterns- package.
LookupAttr::TransformIterator based container to retrieve list attributes.
bool matches(const Capability &lhs) const
Return whether lhs matches at least one capability in set.
filter_iterator< TFilter, typename TContainer::const_iterator > make_filter_end(TFilter f, const TContainer &c)
Convenience to create filter_iterator from container::end().
Capabilities provides() const
Contents rec
recommended content set
static const SolvAttr icon
static const Dep SUGGESTS
MapKVIteratorTraits< TMap >::Key_const_iterator make_map_key_begin(const TMap &map_r)
Convenience to create the key iterator from container::begin()
Repository repository() const
CapDetail detail() const
Helper providing more detailed information about a Capability.
std::string asString() const
Iterable< byIdent_iterator > byIdent(const ByIdent &ident_r) const
sat::SolvableSet Contents
NameList extends() const
Ui hint: patterns this one extends.
IMPL_PTR_TYPE(Application)
static const SolvAttr category
static const Dep REQUIRES
MapKVIteratorTraits< TMap >::Key_const_iterator make_map_key_end(const TMap &map_r)
Convenience to create the key iterator from container::end()
Contents core() const
Ui hint: Required Packages.
Base for resolvable objects.
TraitsType::constPtrType constPtr
Container & get()
The set.
constexpr bool empty() const
Whether the string is empty.
Iterable< Selectable_iterator > selectable() const
static const SolvAttr includes
'Language[_Country]' codes.
transform_iterator< GetPairFirst< typename MapType::value_type >, typename MapType::const_iterator > Key_const_iterator
The key iterator type.
const_iterator end() const
Iterator pointing behind the last Capability.
std::unordered_set< Capability > CapabilitySet
Contents contents(bool includeSuggests_r=true) const
The collection of packages associated with this pattern.
NameList includes() const
Ui hint: included patterns.
Contents depends(bool includeSuggests_r=true) const
Ui hint: Dependent packages.
Pattern(const sat::Solvable &solvable_r)
Ctor.
Solvable satSolvable() const
Return the corresponding sat::Solvable.
bool lookupBoolAttribute(const SolvAttr &attr) const
Combining sat::Solvable and ResStatus.
filter_iterator< TFilter, typename TContainer::const_iterator > make_filter_begin(TFilter f, const TContainer &c)
Convenience to create filter_iterator from container::begin().
Contents req
required content set
std::string category(const Locale &lang_r=Locale()) const
static const CapMatch yes
Capabilities provides() const
Easy-to use interface to the ZYPP dependency resolver.
static const SolvAttr extends
const_iterator begin() const
Iterator pointing to the first Capability.
static const SolvAttr script
bool insert(const TSolv &solv_r)
Insert a Solvable.
static ResPool instance()
Singleton ctor.
Solvable set wrapper to allow adding additional convenience iterators.