Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=197f16ecc8241f5737195827c77b5be228996b67

commit 197f16ecc8241f5737195827c77b5be228996b67
Author: Michel Hermier <[email protected]>
Date:   Sun Sep 28 11:03:42 2014 +0200

libpacman: Drop FList::add_sorted and use flib::set::add where appropriate.

diff --git a/lib/libpacman/cache.cpp b/lib/libpacman/cache.cpp
index 60ca2f5..4fc8b7d 100644
--- a/lib/libpacman/cache.cpp
+++ b/lib/libpacman/cache.cpp
@@ -72,7 +72,7 @@ int _pacman_db_load_pkgcache(Database *db)
db->rewind();
while((info = db->readpkg(inforeq)) != NULL) {
/* add to the collective */
-               db->pkgcache.add_sorted(info, _pacman_pkg_cmp);
+               db->pkgcache.add(info);
}

return(0);
@@ -110,7 +110,7 @@ int _pacman_db_add_pkgincache(Database *db, Package *pkg)

pkg->acquire(); // FIXME: Should not be necessary, but required during 
migration to refcounted object
_pacman_log(PM_LOG_DEBUG, _("adding entry '%s' in '%s' cache"), pkg->name(), 
db->treename());
-       db->pkgcache.add_sorted(pkg, _pacman_pkg_cmp);
+       db->pkgcache.add(pkg);

_pacman_db_clear_grpcache(db);

@@ -182,10 +182,10 @@ int _pacman_db_load_grpcache(Database *db)

if(grp == NULL) {
grp = new Group(grp_name);
-                               db->grpcache.add_sorted(grp, _pacman_grp_cmp);
+                               db->grpcache.add(grp);
}
if(!grp->packages.contains(pkg->name())) {
-                               grp->packages.add_sorted(pkg->name(), strcmp);
+                               grp->packages.add(pkg->name());
}
}
}
diff --git a/lib/libpacman/db.h b/lib/libpacman/db.h
index 87aca64..4b25545 100644
--- a/lib/libpacman/db.h
+++ b/lib/libpacman/db.h
@@ -26,18 +26,19 @@
#include <limits.h>
#include <time.h>

+#include "group.h"
#include "handle.h"
#include "package.h"
#include "timestamp.h"

#include "kernel/fobject.h"
#include "util/fptrlist.h"
+#include "util/fset.h"
#include "util/fstringlist.h"
#include "fstring.h"

namespace libpacman {

-class Group;
class Handle;
class Package;

@@ -87,8 +88,8 @@ public:
::libpacman::Handle *m_handle;
char *path;
libpacman::Timestamp cache_timestamp;
-       FList<libpacman::Package *> pkgcache;
-       FList<libpacman::Group *> grpcache;
+       flib::set<libpacman::Package *, libpacman::less<const 
libpacman::Package *>> pkgcache;
+       flib::set<libpacman::Group *, libpacman::less<const libpacman::Group 
*>> grpcache;
FPtrList servers;

protected:
diff --git a/lib/libpacman/group.cpp b/lib/libpacman/group.cpp
index 7c169ba..f613acb 100644
--- a/lib/libpacman/group.cpp
+++ b/lib/libpacman/group.cpp
@@ -40,6 +40,11 @@ Group::Group(const char *name)
Group::~Group()
{ }

+bool less<const libpacman::Group *>::operator () (const Group *grp1, const 
Group *grp2)
+{
+         return _pacman_grp_cmp(grp1, grp2) < 0;
+}
+
/* Helper function for sorting groups
*/
int _pacman_grp_cmp(const void *g1, const void *g2)
diff --git a/lib/libpacman/group.h b/lib/libpacman/group.h
index 173e620..f917a3b 100644
--- a/lib/libpacman/group.h
+++ b/lib/libpacman/group.h
@@ -42,6 +42,15 @@ public:
FStringList packages; /* List of unowned strings */
};

+       template <class T>
+       struct less;
+
+       template <>
+       struct less<const libpacman::Group *>
+       {
+               bool operator () (const Group *pkg1, const Group *pkg2);
+       };
+
}

int _pacman_grp_cmp(const void *g1, const void *g2);
diff --git a/lib/libpacman/package.cpp b/lib/libpacman/package.cpp
index 04b4455..f41dd68 100644
--- a/lib/libpacman/package.cpp
+++ b/lib/libpacman/package.cpp
@@ -340,6 +340,11 @@ bool Package::match(const pmdepend_t &depend)
}
}

+bool less<const libpacman::Package *>::operator () (const Package *pkg1, const 
Package *pkg2)
+{
+       return _pacman_pkg_cmp(pkg1, pkg2) < 0;
+}
+
typedef struct FPackageStrMatcher FPackageStrMatcher;

struct FPackageStrMatcher
diff --git a/lib/libpacman/package.h b/lib/libpacman/package.h
index 05569d2..387be8f 100644
--- a/lib/libpacman/package.h
+++ b/lib/libpacman/package.h
@@ -172,6 +172,15 @@ public:
char *m_path;
};

+       template <class T>
+       struct less;
+
+       template <>
+       struct less<const libpacman::Package *>
+       {
+               bool operator () (const Package *pkg1, const Package *pkg2);
+       };
+
class PackageMatcher
: FMatcher<const libpacman::Package *>
{
@@ -189,7 +198,7 @@ private:
FStrMatcher m_strmatcher_internal;
};

-}
+} // namespace libpacman

int _pacman_pkg_delete(libpacman::Package *self);

diff --git a/lib/libpacman/util/flist.h b/lib/libpacman/util/flist.h
index 81fcc76..33cedd1 100644
--- a/lib/libpacman/util/flist.h
+++ b/lib/libpacman/util/flist.h
@@ -826,28 +826,9 @@ public:
return const_iterator(c_last());
}

-       FList &add(const value_type &val) // Make default implementation to 
happend
+       void add(const value_type &val) // Make default implementation to 
happend
{
(new FListItem<T>(val))->insert_after(last());
-               return *this;
-       }
-
-       template <typename Comparator>
-       FList &add_sorted(const value_type &data, Comparator cmp)
-       {
-               iterable add = new FListItem<T>(data);
-
-               /* Find insertion point. */
-               iterable previous, end;
-               for(previous = end = c_end(); previous->next() != end; previous 
= previous->next()) {
-                       if(cmp(data, previous->next()->m_data) <= 0) {
-                               break;
-                       }
-               }
-
-               /*  Insert node before insertion point. */
-               add->insert_after(previous);
-               return *this;
}

bool remove(void *ptr, _pacman_fn_cmp fn, value_type *data)
_______________________________________________
Frugalware-git mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to