- Add Capability ctor from Arch and Name: (Arch_i386, "name") or
authorMichael Andres <ma@suse.de>
Wed, 12 Nov 2008 17:59:49 +0000 (17:59 +0000)
committerMichael Andres <ma@suse.de>
Wed, 12 Nov 2008 17:59:49 +0000 (17:59 +0000)
  (Arch_i386, "name == 1.0").

VERSION.cmake
package/libzypp.changes
tests/zypp/Capabilities_test.cc
zypp/Capability.cc
zypp/Capability.h

index cce5a67..6903b18 100644 (file)
@@ -60,7 +60,7 @@
 #
 SET(LIBZYPP_MAJOR "5")
 SET(LIBZYPP_COMPATMINOR "23")
-SET(LIBZYPP_MINOR "23")
+SET(LIBZYPP_MINOR "24")
 SET(LIBZYPP_PATCH "0")
 #
 # LAST RELEASED: 5.23.0 (23)
index b9f157b..53e1142 100644 (file)
@@ -1,4 +1,11 @@
 -------------------------------------------------------------------
+Wed Nov 12 18:53:03 CET 2008 - ma@suse.de
+
+- Add Capability ctor from Arch and Name: (Arch_i386, "name") or
+  (Arch_i386, "name == 1.0").
+- revision 11669
+
+-------------------------------------------------------------------
 Wed Nov 12 14:31:20 CET 2008 - ma@suse.de
 
 - Take care to always reset CURLOPT_TIMECONDITION to prevent incomplete 
index 7bce883..9f51606 100644 (file)
@@ -99,14 +99,18 @@ BOOST_AUTO_TEST_CASE(capabilities_test)
   BOOST_CHECK_EQUAL( noe.detail().hasArch(), false );
   BOOST_CHECK_EQUAL( naoe.detail().hasArch(), true );
 
-  BOOST_REQUIRE    ( n.detail().arch().empty() );
+  BOOST_CHECK      ( n.detail().arch().empty() );
   BOOST_CHECK_EQUAL( na.detail().arch(), Arch_i386.idStr() );
-  BOOST_REQUIRE    ( noe.detail().arch().empty() );
+  BOOST_CHECK      ( noe.detail().arch().empty() );
   BOOST_CHECK_EQUAL( naoe.detail().arch(), Arch_i386.idStr() );
 
   BOOST_CHECK_EQUAL( Capability( "",     "na.me", "",   "" ), n );
   BOOST_CHECK_EQUAL( Capability( "i386", "na.me", "",   "" ), na );
   BOOST_CHECK_EQUAL( Capability( "",     "na.me", "==", "1" ), noe );
   BOOST_CHECK_EQUAL( Capability( "i386", "na.me", "==", "1" ), naoe );
+
+  // explicit arch
+  BOOST_CHECK_EQUAL( Capability( Arch_i386, "na.me" ), na );
+  BOOST_CHECK_EQUAL( Capability( Arch_i386, "na.me == 1" ), naoe );
 }
 
index ba4f17c..e60187d 100644 (file)
@@ -114,6 +114,7 @@ namespace zypp
     /** Full parse from string, unless Capability::PARSED.
     */
     sat::detail::IdType relFromStr( ::_Pool * pool_r,
+                                    const Arch & arch_r, // parse from name if empty
                                     const std::string & str_r, const ResKind & kind_r,
                                     Capability::CtorFlag flag_r )
     {
@@ -147,7 +148,10 @@ namespace zypp
       //else
       // not a versioned relation
 
-      return relFromStr( pool_r, name, op, ed, kind_r ); // parses for name[.arch]
+      if ( arch_r.empty() )
+        return relFromStr( pool_r, name, op, ed, kind_r ); // parses for name[.arch]
+      // else
+      return relFromStr( pool_r, arch_r, name, op, ed, kind_r );
     }
 
     /////////////////////////////////////////////////////////////////
@@ -160,19 +164,35 @@ namespace zypp
   /////////////////////////////////////////////////////////////////
 
   Capability::Capability( const char * str_r, const ResKind & prefix_r, CtorFlag flag_r )
-  : _id( relFromStr( myPool().getPool(), str_r, prefix_r, flag_r ) )
+  : _id( relFromStr( myPool().getPool(), Arch_empty, str_r, prefix_r, flag_r ) )
   {}
 
   Capability::Capability( const std::string & str_r, const ResKind & prefix_r, CtorFlag flag_r )
-  : _id( relFromStr( myPool().getPool(), str_r.c_str(), prefix_r, flag_r ) )
+  : _id( relFromStr( myPool().getPool(), Arch_empty, str_r.c_str(), prefix_r, flag_r ) )
+  {}
+
+  Capability::Capability( const Arch & arch_r, const char * str_r, const ResKind & prefix_r, CtorFlag flag_r )
+  : _id( relFromStr( myPool().getPool(), arch_r, str_r, prefix_r, flag_r ) )
+  {}
+
+  Capability::Capability( const Arch & arch_r, const std::string & str_r, const ResKind & prefix_r, CtorFlag flag_r )
+  : _id( relFromStr( myPool().getPool(), arch_r, str_r.c_str(), prefix_r, flag_r ) )
   {}
 
   Capability::Capability( const char * str_r, CtorFlag flag_r, const ResKind & prefix_r )
-  : _id( relFromStr( myPool().getPool(), str_r, prefix_r, flag_r ) )
+  : _id( relFromStr( myPool().getPool(), Arch_empty, str_r, prefix_r, flag_r ) )
   {}
 
   Capability::Capability( const std::string & str_r, CtorFlag flag_r, const ResKind & prefix_r )
-  : _id( relFromStr( myPool().getPool(), str_r, prefix_r, flag_r ) )
+  : _id( relFromStr( myPool().getPool(), Arch_empty, str_r, prefix_r, flag_r ) )
+  {}
+
+  Capability::Capability( const Arch & arch_r, const char * str_r, CtorFlag flag_r, const ResKind & prefix_r )
+  : _id( relFromStr( myPool().getPool(), arch_r, str_r, prefix_r, flag_r ) )
+  {}
+
+  Capability::Capability( const Arch & arch_r, const std::string & str_r, CtorFlag flag_r, const ResKind & prefix_r )
+  : _id( relFromStr( myPool().getPool(), arch_r, str_r, prefix_r, flag_r ) )
   {}
 
   ///////////////////////////////////////////////////////////////////
index b9f5fca..77ff5b0 100644 (file)
@@ -70,7 +70,7 @@ namespace zypp
       /** Ctor from id. */
       explicit Capability( sat::detail::IdType id_r ) : _id( id_r ) {}
 
-      /** \name Ctors parsing a Capability: <tt>"name[.arch] [op edition]"</tt>
+      /** \name Ctors parsing a Capability: <tt>"name[.arch] [op edition]"</tt> or <tt>( arch, "name [op edition]")</tt>
       */
       //@{
       /** Ctor from string.
@@ -81,12 +81,22 @@ namespace zypp
       explicit Capability( const char * str_r, const ResKind & prefix_r = ResKind(), CtorFlag flag_r = UNPARSED );
       /** \overload */
       explicit Capability( const std::string & str_r, const ResKind & prefix_r = ResKind(), CtorFlag flag_r = UNPARSED );
-      /** \overload Convenience for parsed (name only) packages. */
+      /** \overload Explicitly specify the \c arch. */
+      Capability( const Arch & arch_r, const char * str_r, const ResKind & prefix_r = ResKind(), CtorFlag flag_r = UNPARSED );
+      /** \overload Explicitly specify the \c arch. */
+      Capability( const Arch & arch_r, const std::string & str_r, const ResKind & prefix_r = ResKind(), CtorFlag flag_r = UNPARSED );
+
+      /** \overload Convenience for parsed (name only, no <tt>"[op edition]</tt>) packages: <tt>Capability( "glibc", PARSED ); */
       Capability( const char * str_r, CtorFlag flag_r, const ResKind & prefix_r = ResKind() );
       /** \overload */
       Capability( const std::string & str_r, CtorFlag flag_r, const ResKind & prefix_r = ResKind() );
+      /** \overload Explicitly specify the \c arch. */
+      Capability( const Arch & arch_r, const char * str_r, CtorFlag flag_r, const ResKind & prefix_r = ResKind() );
+      /** \overload */
+      Capability( const Arch & arch_r, const std::string & str_r, CtorFlag flag_r, const ResKind & prefix_r = ResKind() );
       //@}
 
+
       /** \name Ctors parsing a broken down Capability: <tt>( "name[.arch]", op, edition )</tt>
       */
       //@{