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;
52 typedef MapKVIteratorTraits<PatternMap>::Key_const_iterator const_iterator;
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() )
234 caps_r.insert( c.begin(),c.end() );
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() );
317 inline void dependsSet( sat::Solvable depKeeper_r, Pattern::ContentsSet & collect_r )
319 dependsSetDoCollect( depKeeper_r,
Dep::REQUIRES, collect_r.req );
321 dependsSetDoCollect( depKeeper_r,
Dep::SUGGESTS, collect_r.sug );
325 inline bool isPatternsPackage( sat::Solvable depKeeper_r )
327 static const Capability indicator(
"pattern()" );
328 return depKeeper_r.provides().matches( indicator );
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).
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.
filter_iterator< TFilter, typename TContainer::const_iterator > make_filter_end(TFilter f, const TContainer &c)
Convenience to create filter_iterator from container::end().
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.
static const SolvAttr includes
'Language[_Country]' codes.
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
static const SolvAttr extends
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.