Imported Upstream version 14.45.0
[platform/upstream/libzypp.git] / zypp / sat / LookupAttrTools.h
index d9dc901..800e9c2 100644 (file)
@@ -136,6 +136,12 @@ namespace zypp
     //
     /** \ref LookupAttr::transformIterator based container to retrieve list attributes.
      *
+     * You may pass \ref LookupAttr::REPO_ATTR as \ref LookupAttr::Location argument,
+     * to lookup attributes associated with the \ref Repository as a whole
+     * (e.g. repository keywords).
+     *
+     * \see \ref LookupAttr for details.
+     *
      * \code
      *  typedef ArrayAttr<PackageKeyword,IdString> Keywords;
      *  Keywords k( sat::SolvAttr::keywords );
@@ -153,12 +159,12 @@ namespace zypp
         ArrayAttr()
         {}
 
-        ArrayAttr( SolvAttr attr_r )
-        : _q( attr_r )
+        ArrayAttr( SolvAttr attr_r, LookupAttr::Location loc_r = LookupAttr::SOLV_ATTR )
+        : _q( attr_r, loc_r )
         {}
 
-        ArrayAttr( SolvAttr attr_r, Repository repo_r )
-        : _q( attr_r, repo_r )
+        ArrayAttr( SolvAttr attr_r, Repository repo_r, LookupAttr::Location loc_r = LookupAttr::SOLV_ATTR )
+        : _q( attr_r, repo_r, loc_r )
         {}
 
         ArrayAttr( SolvAttr attr_r, Solvable solv_r )
@@ -166,7 +172,8 @@ namespace zypp
         {}
 
       public:
-        typedef sat::LookupAttr::transformIterator<_ResultT,_AttrT> iterator;
+        typedef LookupAttr::transformIterator<_ResultT,_AttrT> iterator;
+        typedef LookupAttr::size_type size_type;
 
         iterator begin() const
         { return iterator( _q.begin() ); }
@@ -177,6 +184,14 @@ namespace zypp
         bool empty() const
         { return _q.empty(); }
 
+        size_type size() const
+        {
+          size_type count = 0;
+          for_( it, begin(), end() )
+            ++count;
+          return count;
+        }
+
       public:
 
         iterator find( const _ResultT & key_r ) const
@@ -190,7 +205,7 @@ namespace zypp
         }
 
       private:
-        sat::LookupAttr _q;
+        LookupAttr _q;
     };
     ///////////////////////////////////////////////////////////////////