add @system repo
authorMichael Andres <ma@suse.de>
Thu, 29 Nov 2007 12:10:09 +0000 (12:10 +0000)
committerMichael Andres <ma@suse.de>
Thu, 29 Nov 2007 12:10:09 +0000 (12:10 +0000)
zypp/sat/Pool.cc
zypp/sat/Pool.h
zypp/sat/Repo.cc
zypp/sat/Repo.h
zypp/sat/Solvable.cc
zypp/sat/Solvable.h

index 9873c2ef54d96682d8ff0a2c8300a7b19f1a9e7f..2b1c64135530692e249cf70b200cfae17fd0eb5b 100644 (file)
@@ -37,6 +37,12 @@ namespace zypp
   namespace sat
   { /////////////////////////////////////////////////////////////////
 
+    const std::string & Pool::systemRepoName()
+    {
+      static const std::string _val( "@System" );
+      return _val;
+    }
+
     ::_Pool * Pool::get() const
     { return myPool().getPool(); }
 
@@ -112,11 +118,6 @@ namespace zypp
       return Repo();
     }
 
-    void Pool::reposErase( const std::string & name_r )
-    {
-      reposFind( name_r ).eraseFromPool();
-    }
-
     Repo Pool::addRepoSolv( const Pathname & file_r, const std::string & name_r )
     {
       // Using a temporay repo! (The additional parenthesis are required.)
@@ -129,11 +130,6 @@ namespace zypp
       return tmprepo;
     }
 
-    Repo Pool::addRepoSolv( const Pathname & file_r )
-    {
-      return addRepoSolv( file_r, file_r.basename() );
-    }
-
     /******************************************************************
     **
     ** FUNCTION NAME : operator<<
index d8d858b5016d62857ea808239b2c7185cc809338..a6d31535df6a74999384fed1c3e8d2a0937ae960 100644 (file)
@@ -15,6 +15,7 @@
 #include <iosfwd>
 
 #include "zypp/sat/detail/PoolMember.h"
+#include "zypp/sat/Repo.h"
 
 ///////////////////////////////////////////////////////////////////
 namespace zypp
@@ -87,7 +88,16 @@ namespace zypp
         /** Remove a \ref Repo named \c name_r.
          * \see \ref Repo::eraseFromPool
          */
-        void reposErase( const std::string & name_r );
+        void reposErase( const std::string & name_r )
+        { reposFind( name_r ).eraseFromPool(); }
+
+      public:
+        /** Reserved system repo name \c @System. */
+        static const std::string & systemRepoName();
+
+        /** Return the system repo. */
+        Repo systemRepo()
+        { return reposInsert( systemRepoName() ); }
 
       public:
         /** Load \ref Solvables from a solv-file into a \ref Repo named \c name_r.
@@ -97,7 +107,8 @@ namespace zypp
         */
         Repo addRepoSolv( const Pathname & file_r, const std::string & name_r );
         /** \overload Using the files basename as \ref Repo name. */
-        Repo addRepoSolv( const Pathname & file_r );
+        Repo addRepoSolv( const Pathname & file_r )
+        { return addRepoSolv( file_r, file_r.basename() ); }
 
       public:
         /** Whether \ref Pool contains solvables. */
index 70d91fcb8a8ca04f302201535a8ce463221256db..6c685193523ba1b818f0053c44e5d4e90c64e1fe 100644 (file)
@@ -20,7 +20,7 @@
 
 #include "zypp/sat/detail/PoolImpl.h"
 #include "zypp/sat/Repo.h"
-#include "zypp/sat/Solvable.h"
+#include "zypp/sat/Pool.h"
 
 using std::endl;
 
@@ -46,6 +46,12 @@ namespace zypp
     ::_Repo * _repo( get() ); \
     if ( ! _repo ) ZYPP_THROW( VAL )
 
+    bool Repo::isSystemRepo() const
+    {
+      NO_REPO_RETURN( false );
+      return( Pool::systemRepoName() == _repo->name );
+    }
+
     std::string Repo::name() const
     {
       NO_REPO_RETURN( std::string() );
index 824ef8eec7e88fce91b04589f64bc5d7d4907afe..f6ec059d22656fc1a579a2a7a5755a8679b4cf73 100644 (file)
@@ -56,6 +56,9 @@ namespace zypp
         /** Evaluate \ref Repo in a boolean context (\c != \c norepo). */
         using base::SafeBool<Repo>::operator bool_type;
 
+        /** Return whether this is the system repo. */
+        bool isSystemRepo() const;
+
       public:
         /** The repos name (alias?). */
         std::string name() const;
index d874d6638de05204f33986f231e1a0d70dc716f8..698604b0480989b54fdc024b940755ec433aa68e 100644 (file)
@@ -57,6 +57,9 @@ namespace zypp
       return nosolvable;
     }
 
+    bool Solvable::isSystem() const
+    { return repo().isSystemRepo(); }
+
     NameId Solvable::name() const
     {
       NO_SOLVABLE_RETURN( NameId() );
@@ -96,7 +99,8 @@ namespace zypp
       if ( ! obj )
         return str << "sat::solvable()";
 
-      return str << "sat::solvable(" << obj.id() << "|" << obj.name() << '-' << obj.evr() << '.' << obj.arch() << "){"
+      return str << "sat::solvable(" << obj.id() << "|"
+          << obj.name() << '-' << obj.evr() << '.' << obj.arch() << "){"
           << obj.repo().name() << "}";
     }
 
index 32ae92e28db5df5c631468d32528b75f1a7b084f..331f20f9368c43082a567e7c52c5fa8dc0cbc093 100644 (file)
@@ -50,12 +50,16 @@ namespace zypp
         /** Evaluate \ref Solvable in a boolean context (\c != \c nosolvable). */
         using base::SafeBool<Solvable>::operator bool_type;
 
+        /** Return whether this \ref Solvable belongs to the system repo. */
+        bool isSystem() const;
+
       public:
         NameId   name() const;
         EvrId    evr() const;
         ArchId   arch() const;
         VendorId vendor() const;
 
+      public:
         Repo repo() const;
 
       public: