12#ifndef ZYPP_SAT_LOOKUPATTR_H
13#define ZYPP_SAT_LOOKUPATTR_H
17#include <zypp/base/PtrTypes.h>
18#include <zypp-core/base/DefaultIntegral>
29 struct MatchException;
147 iterator
begin()
const;
150 iterator
end()
const;
161 template<
class TResult,
class TAttr = TResult>
162 class TransformIterator;
301 const std::string & mstring_r = std::string(),
int flags_r = 0 );
304 const char * mstring_r,
int flags_r = 0 );
319 DIWrap( rhs ).swap( *
this );
323 {
DIWrap().swap( *
this ); }
352 , detail::CDataiterator *
354 , boost::forward_traversal_tag
502 const char *
c_str()
const;
528 template<
class Tp> Tp
asType()
const {
return Tp(
id()); }
553 template <
class OtherDerived,
class OtherIterator,
class V,
class C,
class R,
class D>
554 bool equal(
const boost::iterator_adaptor<OtherDerived, OtherIterator, V, C, R, D> & rhs )
const
556 return (
bool(base()) ==
bool(rhs.base()) )
557 && ( ! base() ||
dip_equal( *base(), *rhs.base() ) );
582 template<>
inline int LookupAttr::iterator::asType<int>()
const {
return asInt(); }
583 template<>
inline unsigned LookupAttr::iterator::asType<unsigned>()
const {
return asUnsigned(); }
584 template<>
inline unsigned long long LookupAttr::iterator::asType<unsigned long long>()
const {
return asUnsignedLL(); }
585 template<>
inline bool LookupAttr::iterator::asType<bool>()
const {
return asBool(); }
586 template<>
inline const char * LookupAttr::iterator::asType<const char *>()
const {
return c_str(); }
587 template<>
inline std::string LookupAttr::iterator::asType<std::string>()
const {
return asString(); }
588 template<>
inline IdString LookupAttr::iterator::asType<IdString>()
const {
return idStr(); }
589 template<> CheckSum LookupAttr::iterator::asType<CheckSum>()
const;
591 template<
class TResult,
class TAttr>
607{
return str << &obj; }
Convenience char* constructible from std::string and char*, it maps (char*)0 to an empty string.
Access to the sat-pools string space.
IdType id() const
Expert backdoor.
String matching (STRING|SUBSTRING|GLOB|REGEX).
LookupAttr implememtation.
detail::CDataiterator * get() const
Expert backdoor.
iterator subBegin() const
Iterator to the begin of a sub-structure.
detail::IdType id() const
unsigned long long asUnsignedLL() const
This is an overloaded member function, provided for convenience. It differs from the above function o...
unsigned asUnsigned() const
This is an overloaded member function, provided for convenience. It differs from the above function o...
void stayInThisSolvable()
Stop after all matches in the current Solvable are processed.
Tp asType() const
Templated return type.
IdString idStr() const
As IdStr.
detail::IdType dereference() const
void nextSkipSolvable()
On the next call to operator++ advance to the next Solvable.
SolvAttr inSolvAttr() const
The current SolvAttr.
bool subEmpty() const
Whether the sub-structure is empty.
iterator subFind(SolvAttr attr_r) const
Iterator pointing to the first occurance of SolvAttr attr_r in sub-structure.
CheckSum asCheckSum() const
As CheckSum.
bool solvAttrCheckSum() const
Whether this is a CheckSum attribute.
std::string asString() const
This is an overloaded member function, provided for convenience. It differs from the above function o...
void nextSkipSolvAttr()
On the next call to operator++ advance to the next SolvAttr.
bool asBool() const
This is an overloaded member function, provided for convenience. It differs from the above function o...
bool equal(const boost::iterator_adaptor< OtherDerived, OtherIterator, V, C, R, D > &rhs) const
iterator subEnd() const
Iterator behind the end of a sub-structure.
void skipSolvable()
Immediately advance to the next Solvable.
void stayInThisRepo()
Stop after all matches in the current Repository are processed.
bool solvAttrSubEntry() const
Whether this is the entry to a sub-structure (flexarray).
Solvable inSolvable() const
The current Solvable.
void nextSkipRepo()
On the next call to operator++ advance to the next Repository.
const char * c_str() const
Conversion to string types.
size_type subSize() const
Ammount of attributes in the sub-structure.
iterator & operator=(const iterator &rhs)
bool solvAttrNumeric() const
Whether this is a numeric attribute (incl.
bool solvAttrIdString() const
Whether this string attribute is available as IdString.
friend class boost::iterator_core_access
bool dip_equal(const detail::CDataiterator &lhs, const detail::CDataiterator &rhs) const
bool solvAttrString() const
Whether this is a string attribute.
detail::IdType solvAttrType() const
The current SolvAttr type.
int asInt() const
Conversion to numeric types.
bool atEnd() const
Whether this points to the end of a query (Iterator is invalid).
Repository inRepo() const
The current Repository.
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.
bool empty() const
Whether the query is empty.
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.
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)
void setRepo(Repository repo_r)
Set search in one Repository.
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.
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.
::s_Dataiterator CDataiterator
Wrapped libsolv C data type exposed as backdoor.
int IdType
Generic Id type.
std::ostream & operator<<(std::ostream &str, const DIWrap &obj)
unsigned SolvableIdType
Id type to connect Solvable and sat-solvable.
CRepo * RepoIdType
Id type to connect Repo and sat-repo.
std::ostream & operator<<(std::ostream &str, const FileConflicts &obj)
std::ostream & dumpOn(std::ostream &str, const LocaleSupport &obj)
Easy-to use interface to the ZYPP dependency resolver.
std::ostream & operator<<(std::ostream &str, const SerialNumber &obj)
Exceptions thrown from attribute matching.
RW_pointer supporting 'copy on write' functionality.