12#ifndef ZYPP_SAT_LOOKUPATTR_H
13#define ZYPP_SAT_LOOKUPATTR_H
19#include <zypp-core/base/DefaultIntegral>
168 template<class TResult, class TAttr = TResult>
308 std::string mstring_r = std::string(),
int flags_r = 0 );
311 const char * mstring_r,
int flags_r = 0 );
319 std::swap(
_dip, rhs._dip );
320 std::swap(
_mstring, rhs._mstring );
326 DIWrap( rhs ).swap( *
this );
330 {
DIWrap().swap( *
this ); }
359 , detail::CDataiterator *
361 , boost::forward_traversal_tag
390 void stayInThisSolvable();
393 void stayInThisRepo();
418 bool solvAttrNumeric()
const;
421 bool solvAttrString()
const;
424 bool solvAttrIdString()
const;
427 bool solvAttrCheckSum()
const;
433 bool solvAttrSubEntry()
const;
467 bool subEmpty()
const;
502 unsigned asUnsigned()
const;
506 unsigned long long asUnsignedLL()
const;
509 const char * c_str()
const;
524 {
return idStr().id(); }
535 template<
class Tp> Tp
asType()
const {
return Tp(
id()); }
558 friend class boost::iterator_core_access;
560 template <
class OtherDerived,
class OtherIterator,
class V,
class C,
class R,
class D>
561 bool equal(
const boost::iterator_adaptor<OtherDerived, OtherIterator, V, C, R, D> & rhs )
const
563 return (
bool(
base()) ==
bool(rhs.base()) )
576 {
return _dip.get(); }
591 template<>
inline unsigned long long LookupAttr::iterator::asType<unsigned long long>()
const {
return asUnsignedLL(); }
592 template<>
inline bool LookupAttr::iterator::asType<bool>()
const {
return asBool(); }
593 template<>
inline const char * LookupAttr::iterator::asType<const char *>()
const {
return c_str(); }
595 template<>
inline IdString LookupAttr::iterator::asType<IdString>()
const {
return idStr(); }
596 template<> CheckSum LookupAttr::iterator::asType<CheckSum>()
const;
598 template<
class TResult,
class TAttr>
614{
return str << &obj; }
std::ostream & operator<<(std::ostream &str, const zypp::sat::detail::CDataiterator *obj)
Convenience char* constructible from std::string and char*, it maps (char*)0 to an empty string.
Access to the sat-pools string space.
String matching option flags as used e.g.
String matching (STRING|SUBSTRING|GLOB|REGEX).
LookupAttr implememtation.
detail::CDataiterator * get() const
Expert backdoor.
detail::IdType id() const
Tp asType() const
Templated return type.
IdString idStr() const
As IdStr.
void nextSkipSolvable()
On the next call to operator++ advance to the next Solvable.
void nextSkipSolvAttr()
On the next call to operator++ advance to the next SolvAttr.
bool equal(const boost::iterator_adaptor< OtherDerived, OtherIterator, V, C, R, D > &rhs) const
void skipSolvable()
Immediately advance to the next Solvable.
void nextSkipRepo()
On the next call to operator++ advance to the next Repository.
bool dip_equal(const detail::CDataiterator &lhs, const detail::CDataiterator &rhs) const
bool atEnd() const
Whether this points to the end of a query (Iterator is invalid).
void skipSolvAttr()
Immediately advance to the next SolvAttr.
void skipRepo()
Immediately advance to the next Repository.
Lightweight attribute value lookup.
void resetStrMatcher()
Reset the pattern to match.
iterator end() const
Iterator behind the end of query results.
RWCOW_pointer< Impl > _pimpl
const StrMatcher & strMatcher() const
The pattern to match.
std::ostream & dumpOn(std::ostream &str, const LookupAttr &obj) ZYPP_API
Verbose stream output including the query result.
bool empty() const
Whether the query is empty.
LookupAttr(LookupAttr &&) noexcept=default
Location
Specify the where to look for the attribule.
@ REPO_ATTR
Search for repository attributes.
@ SOLV_ATTR
Search for solvable attributes (default)
void setStrMatcher(const StrMatcher &matcher_r)
Set the pattern to match.
Repository repo() const
Whether to search in one Repository.
SolvAttr attr() const
The SolvAttr to search.
SolvAttr parent() const
Whether to search within a sub-structure (SolvAttr::noAttr if not)
void setAttr(SolvAttr attr_r)
Set the SolvAttr to search.
void setRepo(Repository repo_r, Location=SOLV_ATTR)
Set search in one Repository.
bool pool() const
Whether to search in Pool.
size_type size() const
Ammount of results.
iterator begin() const
Iterator to the begin of query results.
LookupAttr & operator=(const LookupAttr &)=default
LookupAttr(const LookupAttr &)=default
void setSolvable(Solvable solv_r)
Set search in one Solvable.
Solvable solvable() const
Whether to search in one Solvable.
LookupAttr()
Default ctor finds nothing.
void setPool(Location=SOLV_ATTR)
Set search in Pool (all repositories).
void setParent(SolvAttr attr_r)
Set search within a sub-structure (SolvAttr::noAttr for none)
Lightweight repository attribute value lookup.
LookupRepoAttr(SolvAttr attr_r)
LookupRepoAttr()
Default ctor finds nothing.
void setPool()
Set search in Pool (all repositories).
A Solvable object within the sat Pool.
Wrapper around sat detail::CDataiterator.
void swap(DIWrap &rhs) noexcept
detail::CDataiterator * get() const
DIWrap & operator=(const DIWrap &rhs)
detail::CDataiterator * operator->() const
const std::string & getstr() const
DIWrap()
NULL detail::CDataiterator
detail::CDataiterator * _dip
String related utilities and Regular expression matching.
unsigned int SolvableIdType
Id type to connect Solvable and sat-solvable.
int IdType
Generic Id type.
::s_Dataiterator CDataiterator
Wrapped libsolv C data type exposed as backdoor.
CRepo * RepoIdType
Id type to connect Repo and sat-repo.
String related utilities and Regular expression matching.
Easy-to use interface to the ZYPP dependency resolver.
std::ostream & operator<<(std::ostream &str, const SerialNumber &obj)
const Arch Arch_armv7hnl Arch_armv7nhl ZYPP_API
std::string asString(const Patch::Category &obj)
Exceptions thrown from attribute matching.
RW_pointer supporting 'copy on write' functionality.
Provides API related macros.