12#ifndef ZYPP_SAT_LOOKUPATTR_H
13#define ZYPP_SAT_LOOKUPATTR_H
19#include <zypp-core/base/DefaultIntegral>
31 struct MatchException;
168 template<class TResult, class TAttr = TResult>
198 void setStrMatcher( const
StrMatcher & matcher_r );
201 void resetStrMatcher();
211 void setPool(
Location = SOLV_ATTR );
223 void setSolvable(
Solvable solv_r );
280 { LookupAttr::setPool( REPO_ATTR ); }
285 using LookupAttr::solvable;
286 using LookupAttr::setSolvable;
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 );
339 const std::string &
getstr()
const {
return _mstring; }
359 , detail::CDataiterator *
361 , boost::forward_traversal_tag
369 void nextSkipSolvAttr();
372 void nextSkipSolvable();
379 { nextSkipSolvAttr(); increment(); }
383 { nextSkipSolvable(); increment(); }
387 { nextSkipRepo(); increment(); }
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;
514 std::string asString()
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()) )
564 && ( ! base() || dip_equal( *base(), *rhs.base() ) );
576 {
return _dip.get(); }
589 template<>
inline int LookupAttr::iterator::asType<int>()
const {
return asInt(); }
590 template<>
inline unsigned LookupAttr::iterator::asType<unsigned>()
const {
return asUnsigned(); }
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(); }
594 template<>
inline std::string LookupAttr::iterator::asType<std::string>()
const {
return asString(); }
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 (STRING|SUBSTRING|GLOB|REGEX).
LookupAttr implememtation.
detail::CDataiterator * get() const
Expert backdoor.
detail::IdType id() const
Tp asType() const
Templated return type.
bool equal(const boost::iterator_adaptor< OtherDerived, OtherIterator, V, C, R, D > &rhs) const
void skipSolvable()
Immediately advance to the next Solvable.
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.
LookupAttr(LookupAttr &&) noexcept=default
Location
Specify the where to look for the attribule.
LookupAttr(const LookupAttr &)=default
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.
SolvableSpec & operator=(const SolvableSpec &)=default
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
Exceptions thrown from attribute matching.
RW_pointer supporting 'copy on write' functionality.
Provides API related macros.