[Frugalware-git] frugalware-current: Revert e7319c39adfe232bcfa6f330e306453b0981c69e. tcl_lang is not a base catalog.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=frugalware-current.git;a=commitdiff;h=8dc89b431d642c146cd1dcf5cea8a442b9b00516 commit 8dc89b431d642c146cd1dcf5cea8a442b9b00516 Author: Michel Hermier Date: Fri Feb 6 17:52:45 2015 +0100 Revert e7319c39adfe232bcfa6f330e306453b0981c69e. tcl_lang is not a base catalog. diff --git a/t/deps-xorg.py b/t/deps-xorg.py index 5a34ac8..1ff90c7 100755 --- a/t/deps-xorg.py +++ b/t/deps-xorg.py @@ -11,7 +11,7 @@ if len(sys.argv) > 1 and sys.argv[1] == "--help": print "base packages which depend on xorg (lib->xlib is needed or so)" sys.exit(0) -basecats = ['base', 'apps', 'lib', 'multimedia', 'network', 'devel', 'tcl_lang'] +basecats = ['base', 'apps', 'lib', 'multimedia', 'network', 'devel'] root = tempfile.mkdtemp() pacman.initialize(root) ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Fix invalid pointer when invoking: pacman-g2 -Ql -p .
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=429a1789eb7b97364be1a46f7cf6cc5f14e69ec5 commit 429a1789eb7b97364be1a46f7cf6cc5f14e69ec5 Author: Michel Hermier Date: Mon Nov 24 08:23:37 2014 +0100 libpacman: Fix invalid pointer when invoking: pacman-g2 -Ql -p . diff --git a/lib/libpacman/pacman.cpp b/lib/libpacman/pacman.cpp index d44abd9..5316b7e 100644 --- a/lib/libpacman/pacman.cpp +++ b/lib/libpacman/pacman.cpp @@ -850,7 +850,11 @@ pmpkg_t *pacman_pkg_load(char *filename) /* Sanity checks */ ASSERT(!_pacman_strempty(filename), RET_ERR(PM_ERR_WRONG_ARGS, NULL)); - return c_cast(_pacman_fpmpackage_load(filename)); + package_ptr pkg = _pacman_fpmpackage_load(filename); + if (pkg != nullptr) { + pkg->acquire(); + } + return c_cast(pkg); } /** Free a package. @@ -866,6 +870,7 @@ int pacman_pkg_free(pmpkg_t *_pkg) ASSERT(pkg != NULL, RET_ERR(PM_ERR_WRONG_ARGS, -1)); /* Only free packages loaded in user space */ + pkg->release(); return 0; } ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Fix -Q pkgname.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=b0bcf9caba61714a8278c41b306d3ce103b77245 commit b0bcf9caba61714a8278c41b306d3ce103b77245 Author: Michel Hermier Date: Tue Nov 18 10:47:45 2014 +0100 libpacman: Fix -Q pkgname. diff --git a/src/pacman-g2/query.c b/src/pacman-g2/query.c index ac10812..4f81b83 100644 --- a/src/pacman-g2/query.c +++ b/src/pacman-g2/query.c @@ -166,11 +166,8 @@ int querypkg(FStringList *targets) return errors; } - for(FPtrListIterator *targ = f_ptrlist_first(targets), *end = f_ptrlist_end(targets); targ != end; targ = f_ptrlistitem_next(targ)) { - char *package = list_data(targ); - /* find packages in the db */ - if(package == NULL) { + if(f_ptrlist_count(targets) == 0) { /* Do not allow -Qc , -Qi , -Ql without package arg .. */ if(config->op_q_changelog || config->op_q_info || config->op_q_list) { ERR(NL, _("This query option require an package name as argument\n")); @@ -241,6 +238,8 @@ int querypkg(FStringList *targets) } } } else { + for(FPtrListIterator *targ = f_ptrlist_first(targets), *end = f_ptrlist_end(targets); targ != end; targ = f_ptrlistitem_next(targ)) { + char *package = list_data(targ); /* Do not allow -Qe , -Qm with package arg */ if(config->op_q_orphans || config->op_q_foreign) { ERR(NL, _("This query option cannot have an package argument\n")); @@ -278,12 +277,10 @@ int querypkg(FStringList *targets) char *pkgname = pacman_pkg_getinfo(info, PM_PKG_NAME); char *pkgver = pacman_pkg_getinfo(info, PM_PKG_VERSION); MSG(NL, "%s %s\n", pkgname, pkgver); - } } } - - return(errors); + return errors; } /* vim: set ts=2 sw=2 noet: */ ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: pacman-g2: Fix -Qo invocation code.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=2286690c4bda59ad0758fcc5de18a63423e11565 commit 2286690c4bda59ad0758fcc5de18a63423e11565 Author: Michel Hermier Date: Tue Nov 18 10:43:22 2014 +0100 pacman-g2: Fix -Qo invocation code. diff --git a/src/pacman-g2/query.c b/src/pacman-g2/query.c index a7da2eb..ac10812 100644 --- a/src/pacman-g2/query.c +++ b/src/pacman-g2/query.c @@ -145,12 +145,12 @@ int querypkg(FStringList *targets) return errors; } - for(FPtrListIterator *targ = f_ptrlist_first(targets), *end = f_ptrlist_end(targets); targ != end; targ = f_ptrlistitem_next(targ)) { - char *package = list_data(targ); + /* determine the owner of a file */ + if(config->op_q_owns) { + for(FPtrListIterator *targ = f_ptrlist_first(targets), *end = f_ptrlist_end(targets); targ != end; targ = f_ptrlistitem_next(targ)) { + char *package = list_data(targ); + PM_LIST *data; - /* determine the owner of a file */ - if(config->op_q_owns) { - PM_LIST *data; if((data = pacman_pkg_getowners(package)) == NULL) { ERR(NL, _("No package owns %s\n"), package); errors++; @@ -163,6 +163,11 @@ int querypkg(FStringList *targets) } continue; } + return errors; + } + + for(FPtrListIterator *targ = f_ptrlist_first(targets), *end = f_ptrlist_end(targets); targ != end; targ = f_ptrlistitem_next(targ)) { + char *package = list_data(targ); /* find packages in the db */ if(package == NULL) { ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: pacman-g2: Partial fix for -Q -p not returning a list.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=e3efd317074385cb4db1873d758fe031bf8cd290 commit e3efd317074385cb4db1873d758fe031bf8cd290 Author: Michel Hermier Date: Tue Nov 18 10:40:35 2014 +0100 pacman-g2: Partial fix for -Q -p not returning a list. diff --git a/src/pacman-g2/query.c b/src/pacman-g2/query.c index 79be1ff..a7da2eb 100644 --- a/src/pacman-g2/query.c +++ b/src/pacman-g2/query.c @@ -85,7 +85,7 @@ int querypkg(FStringList *targets) /* looking for groups */ if(config->group) { - if(targets == NULL) { + if(f_ptrlist_count(targets) == 0) { pmlist_t *cache = pacman_db_getgrpcache(db_local); for(pmlist_iterator_t *lp = pacman_list_begin(cache), *end = pacman_list_end(cache); lp != end; lp = pacman_list_next(lp)) { PM_GRP *grp = pacman_list_getdata(lp); @@ -115,15 +115,16 @@ int querypkg(FStringList *targets) return errors; } - for(FPtrListIterator *targ = f_ptrlist_first(targets), *end = f_ptrlist_end(targets); targ != end; targ = f_ptrlistitem_next(targ)) { - char *package = list_data(targ); + /* output info for a .tar.gz package */ + if(config->op_q_isfile) { + if(f_ptrlist_count(targets) == 0) { + ERR(NL, _("no package file was specified for --file\n")); + return 1; + } + + for(FPtrListIterator *targ = f_ptrlist_first(targets), *end = f_ptrlist_end(targets); targ != end; targ = f_ptrlistitem_next(targ)) { + char *package = list_data(targ); - /* output info for a .tar.gz package */ - if(config->op_q_isfile) { - if(package == NULL) { - ERR(NL, _("no package file was specified for --file\n")); - return(1); - } if((info = pacman_pkg_load(package)) == NULL) { ERR(NL, _("failed to load package '%s' (%s)\n"), package, pacman_strerror(pm_errno)); return(1); @@ -140,8 +141,12 @@ int querypkg(FStringList *targets) (char *)pacman_pkg_getinfo(info, PM_PKG_VERSION)); } FREEPKG(info); - continue; } + return errors; + } + + for(FPtrListIterator *targ = f_ptrlist_first(targets), *end = f_ptrlist_end(targets); targ != end; targ = f_ptrlistitem_next(targ)) { + char *package = list_data(targ); /* determine the owner of a file */ if(config->op_q_owns) { ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: pacman-g2: Remove -Qg bug returning nothing.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=7359982407a0b1d285d4b344763d868e2ca6b686 commit 7359982407a0b1d285d4b344763d868e2ca6b686 Author: Michel Hermier Date: Tue Nov 18 10:35:21 2014 +0100 pacman-g2: Remove -Qg bug returning nothing. diff --git a/src/pacman-g2/query.c b/src/pacman-g2/query.c index 40f9f64..79be1ff 100644 --- a/src/pacman-g2/query.c +++ b/src/pacman-g2/query.c @@ -83,24 +83,24 @@ int querypkg(FStringList *targets) return(1); } - for(FPtrListIterator *targ = f_ptrlist_first(targets), *end = f_ptrlist_end(targets); targ != end; targ = f_ptrlistitem_next(targ)) { - char *package = list_data(targ); - - /* looking for groups */ - if(config->group) { - if(targets == NULL) { - pmlist_t *cache = pacman_db_getgrpcache(db_local); - for(pmlist_iterator_t *lp = pacman_list_begin(cache), *end = pacman_list_end(cache); lp != end; lp = pacman_list_next(lp)) { - PM_GRP *grp = pacman_list_getdata(lp); - char *grpname = pacman_grp_getinfo(grp, PM_GRP_NAME); - pmlist_t *pkgnames = pacman_grp_getinfo(grp, PM_GRP_PKGNAMES); + /* looking for groups */ + if(config->group) { + if(targets == NULL) { + pmlist_t *cache = pacman_db_getgrpcache(db_local); + for(pmlist_iterator_t *lp = pacman_list_begin(cache), *end = pacman_list_end(cache); lp != end; lp = pacman_list_next(lp)) { + PM_GRP *grp = pacman_list_getdata(lp); + char *grpname = pacman_grp_getinfo(grp, PM_GRP_NAME); + pmlist_t *pkgnames = pacman_grp_getinfo(grp, PM_GRP_PKGNAMES); - for(pmlist_iterator_t *lq = pacman_list_begin(pkgnames), *end = pacman_list_end(pkgnames); lq != end; lq = pacman_list_next(lq)) { - MSG(NL, "%s %s\n", grpname, (char *)pacman_list_getdata(lq)); - } + for(pmlist_iterator_t *lq = pacman_list_begin(pkgnames), *end = pacman_list_end(pkgnames); lq != end; lq = pacman_list_next(lq)) { + MSG(NL, "%s %s\n", grpname, (char *)pacman_list_getdata(lq)); } - } else { + } + } else { + for(FPtrListIterator *targ = f_ptrlist_first(targets), *end = f_ptrlist_end(targets); targ != end; targ = f_ptrlistitem_next(targ)) { + char *package = list_data(targ); PM_GRP *grp = pacman_db_readgrp(db_local, package); + if(grp) { pmlist_t *pkgnames = pacman_grp_getinfo(grp, PM_GRP_PKGNAMES); for(pmlist_iterator_t *lq = pacman_list_begin(pkgnames), *end = pacman_list_end(pkgnames); lq != end; lq = pacman_list_next(lq)) { @@ -111,8 +111,12 @@ int querypkg(FStringList *targets) return(2); } } - continue; } + return errors; + } + + for(FPtrListIterator *targ = f_ptrlist_first(targets), *end = f_ptrlist_end(targets); targ != end; targ = f_ptrlistitem_next(targ)) { + char *package = list_data(targ); /* output info for a .tar.gz package */ if(config->op_q_isfile) { ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: pacman-g2: Reindent previous code changes.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=c44010438725c43266381e7c27f850560079be53 commit c44010438725c43266381e7c27f850560079be53 Author: Michel Hermier Date: Tue Nov 18 10:54:19 2014 +0100 pacman-g2: Reindent previous code changes. diff --git a/src/pacman-g2/query.c b/src/pacman-g2/query.c index 4f81b83..c368554 100644 --- a/src/pacman-g2/query.c +++ b/src/pacman-g2/query.c @@ -166,78 +166,77 @@ int querypkg(FStringList *targets) return errors; } - /* find packages in the db */ - if(f_ptrlist_count(targets) == 0) { - /* Do not allow -Qc , -Qi , -Ql without package arg .. */ - if(config->op_q_changelog || config->op_q_info || config->op_q_list) { - ERR(NL, _("This query option require an package name as argument\n")); - return(1); - } + /* find packages in the db */ + if(f_ptrlist_count(targets) == 0) { + /* Do not allow -Qc , -Qi , -Ql without package arg .. */ + if(config->op_q_changelog || config->op_q_info || config->op_q_list) { + ERR(NL, _("This query option require an package name as argument\n")); + return(1); + } - /* -Qd is not valid */ - if(config->op_q_orphans_deps && !config->op_q_orphans) { - ERR(NL, _("Invalid query option , use 'pacman-g2 -Qed'\n")); - return(1); - } + /* -Qd is not valid */ + if(config->op_q_orphans_deps && !config->op_q_orphans) { + ERR(NL, _("Invalid query option , use 'pacman-g2 -Qed'\n")); + return(1); + } - /* no target */ - pmlist_t *cache = pacman_db_getpkgcache(db_local); - for(pmlist_iterator_t *lp = pacman_list_begin(cache), *end = pacman_list_end(cache); lp != end; lp = pacman_list_next(lp)) { - PM_PKG *tmpp = pacman_list_getdata(lp); - char *pkgname, *pkgver; + /* no target */ + pmlist_t *cache = pacman_db_getpkgcache(db_local); + for(pmlist_iterator_t *lp = pacman_list_begin(cache), *end = pacman_list_end(cache); lp != end; lp = pacman_list_next(lp)) { + PM_PKG *tmpp = pacman_list_getdata(lp); - pkgname = pacman_pkg_getinfo(tmpp, PM_PKG_NAME); - pkgver = pacman_pkg_getinfo(tmpp, PM_PKG_VERSION); - if(config->op_q_orphans || config->op_q_foreign || config->op_q_fsck) { - info = pacman_db_readpkg(db_local, pkgname); - if(info == NULL) { - /* something weird happened */ - ERR(NL, _("package \"%s\" not found\n"), pkgname); - return(1); - } - if(config->op_q_foreign) { - int match = 0; - for(pmlist_iterator_t *i = pacman_list_begin(pmc_syncs), *end = pacman_list_end(pmc_syncs); i != end; i = pacman_list_next(i)) { - PM_DB *db = list_data(i); - pmlist_t *cache = pacman_db_getpkgcache(db); - for(pmlist_iterator_t *j = pacman_list_begin(cache), *end = pacman_list_end(cache); j != end; j = pacman_list_next(j)) { - PM_PKG *pkg = pacman_list_getdata(j); - char *haystack; - char *needle; - haystack = strdup(pacman_pkg_getinfo(pkg, PM_PKG_NAME)); - needle = strdup(pacman_pkg_getinfo(info, PM_PKG_NAME)); - if(!strcmp(haystack, needle)) { - match = 1; - } - FREE(haystack); - FREE
[Frugalware-git] pacman-g2: libpacman: Ignore ".CHANGELOG" files for now in _pacman_fpmpackage_load (don't know why the issue didn't raised earlier).
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=bb9b0c22e79402f46625f757e7b8f037902370a3 commit bb9b0c22e79402f46625f757e7b8f037902370a3 Author: Michel Hermier Date: Sat Nov 15 13:04:18 2014 +0100 libpacman: Ignore ".CHANGELOG" files for now in _pacman_fpmpackage_load (don't know why the issue didn't raised earlier). diff --git a/lib/libpacman/package/fpmpackage.cpp b/lib/libpacman/package/fpmpackage.cpp index d489c2f..fdb417b 100644 --- a/lib/libpacman/package/fpmpackage.cpp +++ b/lib/libpacman/package/fpmpackage.cpp @@ -194,6 +194,8 @@ package_ptr _pacman_fpmpackage_load(const char *pkgfile) fclose(filelist); has_filelist = true; continue; + } else if (!strcmp(archive_entry_pathname (entry), ".CHANGELOG")) { + /* Ignore for now */ } else { has_scriptcheck = true; if(!has_filelist) { ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: pactest: Add a .CHANGELOG file when generating a .fpm.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=8808f00d5c754f8f1566a3e88b66127a6e08bbde commit 8808f00d5c754f8f1566a3e88b66127a6e08bbde Author: Michel Hermier Date: Sat Nov 15 13:05:23 2014 +0100 pactest: Add a .CHANGELOG file when generating a .fpm. diff --git a/pactest/pmpkg.py b/pactest/pmpkg.py index 88171ff..715c227 100644 --- a/pactest/pmpkg.py +++ b/pactest/pmpkg.py @@ -179,6 +179,10 @@ class pmpkg: os.system("tar cvf /dev/null * | sort >.FILELIST") targets += " .FILELIST *" + # .CHANGELOG + mkfile(".CHANGELOG") + targets += " .CHANGELOG" + # Generate package archive os.system("tar zcf %s %s" % (archive, targets)) ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Add missing const to flib::list::any_match_if.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=8e5c57924e78c3ddef2832b7efeabbbedb1dbb4d commit 8e5c57924e78c3ddef2832b7efeabbbedb1dbb4d Author: Michel Hermier Date: Fri Nov 14 12:06:01 2014 +0100 libpacman: Add missing const to flib::list::any_match_if. diff --git a/lib/libpacman/util/flist.h b/lib/libpacman/util/flist.h index 503ba22..e179639 100644 --- a/lib/libpacman/util/flist.h +++ b/lib/libpacman/util/flist.h @@ -835,7 +835,7 @@ namespace flib } template - bool any_match_if(UnaryPredicate pred) + bool any_match_if(UnaryPredicate pred) const { return flib::any_match_if(begin(), end(), pred); } ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Add flib::keyed_value_traits.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=c6d0c22f8e5db7b028b32ce1395101d4de3ba6f1 commit c6d0c22f8e5db7b028b32ce1395101d4de3ba6f1 Author: Michel Hermier Date: Mon Nov 10 10:13:19 2014 +0100 libpacman: Add flib::keyed_value_traits. diff --git a/lib/libpacman/package_graph.h b/lib/libpacman/package_graph.h index 44c8db6..34925c1 100644 --- a/lib/libpacman/package_graph.h +++ b/lib/libpacman/package_graph.h @@ -24,7 +24,6 @@ #include "util/fset.h" namespace libpacman { - class package_node : public flib::refcounted { @@ -42,7 +41,34 @@ namespace libpacman { typedef flib::refcounted_shared_ptr package_node_ptr; bool operator < (const package_node_ptr &pn1, const package_node_ptr &pn2); +} // namespace libpacman + +namespace flib { + template <> + struct keyed_value_traits + { + typedef libpacman::package_node_ptr keyed_value_type; + typedef flib::str key_type; + typedef libpacman::package_node_ptr value_type; + + static const key_type &key_of(const keyed_value_type &o) + { + return o->name(); + } + static value_type &value_of(keyed_value_type &o) + { + return o; + } + + static const value_type &value_of(const keyed_value_type &o) + { + return o; + } + }; +} // namespace flib + +namespace libpacman { typedef flib::set package_node_set; class package_graph ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Drop f_stringlist_any_match.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=358d342d557a24eb9c5fd947bb045dfaa9c55702 commit 358d342d557a24eb9c5fd947bb045dfaa9c55702 Author: Michel Hermier Date: Fri Nov 14 15:13:58 2014 +0100 libpacman: Drop f_stringlist_any_match. diff --git a/lib/libpacman/kernel/fstr.cpp b/lib/libpacman/kernel/fstr.cpp index c30fed6..d95d975 100644 --- a/lib/libpacman/kernel/fstr.cpp +++ b/lib/libpacman/kernel/fstr.cpp @@ -243,23 +243,14 @@ bool FStrMatcher::match(const str &s) const return match(s.c_str()); } -int f_stringlist_any_match(const FStringList *list, const FStrMatcher *matcher) +bool FStrMatcher::match_all(const FStringList &l) const { -#ifndef F_NOCOMPAT - for(auto it = list->begin(), end = list->end(); it != end; ++it) { - if(matcher->match((const char *)*it) != 0) { - return 1; - } - } - return 0; -#else - for(auto str: *list) { - if(matcher->match((const char *)str) != 0) { - return 1; - } - } - return 0; -#endif + return l.all_match_if(*this); +} + +bool FStrMatcher::match_any(const FStringList &l) const +{ + return l.any_match_if(*this); } /* vim: set ts=2 sw=2 noet: */ diff --git a/lib/libpacman/kernel/fstr.h b/lib/libpacman/kernel/fstr.h index 913a99f..321325d 100644 --- a/lib/libpacman/kernel/fstr.h +++ b/lib/libpacman/kernel/fstr.h @@ -173,14 +173,18 @@ public: bool match(const char *s) const; bool match(const flib::str &s) const; + bool match_all(const FStringList &l) const; + bool match_any(const FStringList &l) const; protected: int m_flags; char *m_str; regex_t m_regex; -}; -int f_stringlist_any_match(const FStringList *list, const FStrMatcher *matcher); +private: + FStrMatcher(const FStrMatcher &o); + FStrMatcher &operator = (const FStrMatcher &o); +}; #endif /* F_STR_H */ diff --git a/lib/libpacman/package.cpp b/lib/libpacman/package.cpp index d68c51d..f616f36 100644 --- a/lib/libpacman/package.cpp +++ b/lib/libpacman/package.cpp @@ -357,18 +357,18 @@ int _pacman_strmatcher_match(const FStrMatcher *strmatcher, const package_ptr &p ((flags & PM_PACKAGE_FLAG_PACKAGER) && strmatcher->match(pkg->packager)) || // ((flags & PM_PACKAGE_FLAG_HASH) && ) || ((flags & PM_PACKAGE_FLAG_ARCH) && strmatcher->match(pkg->arch)) || - ((flags & PM_PACKAGE_FLAG_LOCALISED_DESCRIPTION) && f_stringlist_any_match(&pkg->desc_localized, strmatcher)) || - ((flags & PM_PACKAGE_FLAG_LICENSE) && f_stringlist_any_match(&pkg->license, strmatcher)) || - ((flags & PM_PACKAGE_FLAG_REPLACES) && f_stringlist_any_match(&pkg->replaces(), strmatcher)) || - ((flags & PM_PACKAGE_FLAG_GROUPS) && f_stringlist_any_match(&pkg->groups(), strmatcher)) || - ((flags & PM_PACKAGE_FLAG_FILES) && pkg->files().any_match_if(*strmatcher)) || - ((flags & PM_PACKAGE_FLAG_BACKUP) && f_stringlist_any_match(&pkg->backup(), strmatcher)) || - ((flags & PM_PACKAGE_FLAG_DEPENDS) && f_stringlist_any_match(&pkg->depends(), strmatcher)) || - ((flags & PM_PACKAGE_FLAG_REMOVES) && f_stringlist_any_match(&pkg->removes(), strmatcher)) || - ((flags & PM_PACKAGE_FLAG_REQUIREDBY) && f_stringlist_any_match(&pkg->requiredby(), strmatcher)) || - ((flags & PM_PACKAGE_FLAG_CONFLICTS) && f_stringlist_any_match(&pkg->conflicts(), strmatcher)) || - ((flags & PM_PACKAGE_FLAG_PROVIDES) && f_stringlist_any_match(&pkg->provides(), strmatcher)) || - ((flags & PM_PACKAGE_FLAG_TRIGGERS) && f_stringlist_any_match(&pkg->triggers(), strmatcher))) { + ((flags & PM_PACKAGE_FLAG_LOCALISED_DESCRIPTION) && strmatcher->match_any(pkg->desc_localized)) || + ((flags & PM_PACKAGE_FLAG_LICENSE) && strmatcher->match_any(pkg->license)) || + ((flags & PM_PACKAGE_FLAG_REPLACES) && strmatcher->match_any(pkg->replaces())) || + ((flags & PM_PACKAGE_FLAG_GROUPS) && strmatcher->match_any(pkg->groups())) || + ((flags & PM_PACKAGE_FLAG_FILES) && pkg->files().any_match_if(*strmatcher)) || + ((flags & PM_PACKAGE_FLAG_BACKUP) && strmatcher->match_any(pkg->backup())) || + ((flags & PM_PACKAGE_FLAG_DEPEN
[Frugalware-git] pacman-g2: libpacman: Fix some typo/missing conversions of keyed_value in flib::set.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=efacc1af089e42d32a1f1a2e43d1c43e3d6f28ab commit efacc1af089e42d32a1f1a2e43d1c43e3d6f28ab Author: Michel Hermier Date: Mon Nov 10 09:47:46 2014 +0100 libpacman: Fix some typo/missing conversions of keyed_value in flib::set. diff --git a/lib/libpacman/util/fset.h b/lib/libpacman/util/fset.h index 3ee53e9..af4e89c 100644 --- a/lib/libpacman/util/fset.h +++ b/lib/libpacman/util/fset.h @@ -99,10 +99,11 @@ namespace flib { iterator end = this->end(); /* Find insertion point. */ - iterator next = find_insertion_point(keyed_value_traits::value_of(keyed_value)); + iterator next = find_insertion_point(keyed_value_traits::key_of(keyed_value)); // ensure we don't have an egality - if(next == end || m_compare(keyed_value, *next)) { + if(next == end + || m_compare(keyed_value_traits::key_of(keyed_value), keyed_value_traits::key_of(*next))) { typename super_type::data_holder add = new FListItem(keyed_value); add->insert_after(next.previous()); return iterator(add); @@ -151,7 +152,7 @@ namespace flib { return super_type::find_if_not( [&] (const keyed_value_type &keyed_value) -> bool - { return m_compare(keyed_value_traits::value_of(keyed_value), key); }); + { return m_compare(keyed_value_traits::key_of(keyed_value), key); }); } Compare m_compare; ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Add flib::str some compare/contains methods.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=f29ac2f83aa2ff82f839eed56ee2ea172576a614 commit f29ac2f83aa2ff82f839eed56ee2ea172576a614 Author: Michel Hermier Date: Fri Nov 14 11:35:11 2014 +0100 libpacman: Add flib::str some compare/contains methods. diff --git a/lib/libpacman/kernel/fstr.cpp b/lib/libpacman/kernel/fstr.cpp index d91f6f8..c30fed6 100644 --- a/lib/libpacman/kernel/fstr.cpp +++ b/lib/libpacman/kernel/fstr.cpp @@ -105,9 +105,34 @@ str::size_type str::size() const return 0; } -int str::compare(const str &s) const +int str::compare(const char *str, case_sensitivity cs) const { - return strcmp(c_str(), s.c_str()); + switch(cs) { + case case_sensitive: + return strcmp(c_str(), str); + case case_insensitive: + return strcasecmp(c_str(), str); + default: + abort(); + } +} + +int str::indexOf(const char *str, size_type from, case_sensitivity cs) const +{ + ASSERT(from >= 0 && from <= size(), RET_ERR(PM_ERR_WRONG_ARGS, -1)); + ASSERT(!empty(), RET_ERR(PM_ERR_WRONG_ARGS, -1)); + + const char *start = &m_str[from]; + const char *index = NULL; + switch(cs) { + case case_sensitive: + index = strstr(c_str(), start); + case case_insensitive: + index = strcasestr(c_str(), start); + default: + abort(); + } + return index != NULL ? index - str: -1; } void str::reset(const char *s) diff --git a/lib/libpacman/kernel/fstr.h b/lib/libpacman/kernel/fstr.h index 3c24258..913a99f 100644 --- a/lib/libpacman/kernel/fstr.h +++ b/lib/libpacman/kernel/fstr.h @@ -29,6 +29,12 @@ #include namespace flib { + typedef enum + { + case_insensitive = 0, + case_sensitive = 1, + } case_sensitivity; + class str { public: @@ -82,7 +88,40 @@ namespace flib { size_type size() const; /* Operations */ - int compare(const str &str) const; + int compare(const char *str, case_sensitivity cs = case_sensitive) const; + + int compare(const str &str, case_sensitivity cs = case_sensitive) const + { + return compare(str.c_str(), cs); + } + + int contains(const char *str, case_sensitivity cs = case_sensitive) const + { + return indexOf(str, 0, cs); + } + + int contains(const str &str, case_sensitivity cs = case_sensitive) const + { + return indexOf(str, 0, cs); + } + + bool equals(const char *str, case_sensitivity cs = case_sensitive) const + { + return compare(str, cs) == 0; + } + + bool equals(const str &str, case_sensitivity cs = case_sensitive) const + { + return compare(str, cs) == 0; + } + + int indexOf(const char *str, size_type from = 0, case_sensitivity cs = case_sensitive) const; + + int indexOf(const str &str, size_type from = 0, case_sensitivity cs = case_sensitive) const + { + return indexOf(str.c_str(), from, cs); + } + void reset(const char *s = nullptr); void swap(str &o); ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Remove a variable name shadowing when loading .fpm files in _pacman_fpmpackage_load.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=d749881cfcbf49f725bfc97b840c7ce92a1bb1aa commit d749881cfcbf49f725bfc97b840c7ce92a1bb1aa Author: Michel Hermier Date: Sat Nov 15 12:48:51 2014 +0100 libpacman: Remove a variable name shadowing when loading .fpm files in _pacman_fpmpackage_load. diff --git a/lib/libpacman/package/fpmpackage.cpp b/lib/libpacman/package/fpmpackage.cpp index fc7a78f..d489c2f 100644 --- a/lib/libpacman/package/fpmpackage.cpp +++ b/lib/libpacman/package/fpmpackage.cpp @@ -137,9 +137,7 @@ package_ptr _pacman_fpmpackage_load(const char *pkgfile) { char *expath; int i, ret; - int config = 0; - int filelist = 0; - int scriptcheck = 0; + bool has_config = false, has_filelist = false, has_scriptcheck = false; register struct archive *archive; struct archive_entry *entry; @@ -153,7 +151,7 @@ package_ptr _pacman_fpmpackage_load(const char *pkgfile) } for(i = 0; (ret = archive_read_next_header (archive, &entry)) == ARCHIVE_OK; i++) { - if(config && filelist && scriptcheck) { + if(has_config && has_filelist && has_scriptcheck) { /* we have everything we need */ break; } @@ -171,11 +169,11 @@ package_ptr _pacman_fpmpackage_load(const char *pkgfile) if(!info->is_valid(handle->trans, pkgfile)) { goto error; } - config = 1; + has_config = true; continue; } else if(!strcmp(archive_entry_pathname (entry), "._install") || !strcmp(archive_entry_pathname (entry), ".INSTALL")) { info->scriptlet = 1; - scriptcheck = 1; + has_scriptcheck = true; } else if(!strcmp(archive_entry_pathname (entry), ".FILELIST")) { /* Build info->files from the filelist */ FILE *filelist; @@ -194,10 +192,11 @@ package_ptr _pacman_fpmpackage_load(const char *pkgfile) } free(str); fclose(filelist); + has_filelist = true; continue; } else { - scriptcheck = 1; - if(!filelist) { + has_scriptcheck = true; + if(!has_filelist) { /* no .FILELIST present in this package.. build the filelist the */ /* old-fashioned way, one at a time */ expath = strdup(archive_entry_pathname (entry)); @@ -213,7 +212,7 @@ package_ptr _pacman_fpmpackage_load(const char *pkgfile) } archive_read_finish (archive); - if(!config) { + if(!has_config) { _pacman_log(PM_LOG_ERROR, _("missing package info file in %s"), pkgfile); goto error; } ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Propagate templates arguments when invoking falgorithms methods in flib (allow to bypass some compiler error due to bad type guess).
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=81c68b4b1af92583440db4747b94e4a4389d2ac3 commit 81c68b4b1af92583440db4747b94e4a4389d2ac3 Author: Michel Hermier Date: Fri Nov 14 15:13:24 2014 +0100 libpacman: Propagate templates arguments when invoking falgorithms methods in flib (allow to bypass some compiler error due to bad type guess). diff --git a/lib/libpacman/util/flist.h b/lib/libpacman/util/flist.h index e179639..a0a8356 100644 --- a/lib/libpacman/util/flist.h +++ b/lib/libpacman/util/flist.h @@ -700,13 +700,13 @@ namespace flib template iterator find_if(UnaryPredicate pred) { - return flib::find_if(begin(), end(), pred); + return flib::find_if(begin(), end(), pred); } template const_iterator find_if(UnaryPredicate pred) const { - return flib::find_if(begin(), end(), pred); + return flib::find_if(begin(), end(), pred); } template @@ -819,25 +819,25 @@ namespace flib template bool all_match(const U &val) const { - return flib::all_match(begin(), end(), val); + return flib::all_match(begin(), end(), val); } template bool all_match_if(UnaryPredicate pred) const { - return flib::all_match_if(begin(), end(), pred); + return flib::all_match_if(begin(), end(), pred); } template bool any_match(const U &val) const { - return flib::any_match(begin(), end(), val()); + return flib::any_match(begin(), end(), val()); } template bool any_match_if(UnaryPredicate pred) const { - return flib::any_match_if(begin(), end(), pred); + return flib::any_match_if(begin(), end(), pred); } public: ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] frugalware-current: libdvdread-5.0.0-1-x86_64
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=frugalware-current.git;a=commitdiff;h=a6cb035a2fe0549538ece4e4145556c0f3a5c672 commit a6cb035a2fe0549538ece4e4145556c0f3a5c672 Author: Michel Hermier Date: Thu Nov 13 12:39:07 2014 +0100 libdvdread-5.0.0-1-x86_64 * Bump version. (no so bump) diff --git a/source/lib/libdvdread/FrugalBuild b/source/lib/libdvdread/FrugalBuild index 46e977d..c37583a 100644 --- a/source/lib/libdvdread/FrugalBuild +++ b/source/lib/libdvdread/FrugalBuild @@ -5,16 +5,17 @@ options+=('asneeded') pkgname=libdvdread -pkgver=4.9.9 +pkgver=5.0.0 pkgrel=1 pkgdesc="libdvdread provides a simple foundation for reading DVD video disks" url="http://dvdnav.mplayerhq.hu/"; +dlurl="http://download.videolan.org/pub/videolan/$pkgname/"; groups=('lib') archs=('i686' 'x86_64') depends=('libdvdcss') -up2date="Flasttar http://dvdnav.mplayerhq.hu/releases/"; -source=($url/releases/$pkgname-$pkgver.tar.xz) -sha1sums=('5536084fc7cd9a5d9fff9f91bfe7bf3e4cf3700e') +up2date="Flastverdir $dlurl" +source=($dlurl/$pkgver/$pkgname-$pkgver.tar.bz2) +sha1sums=('f1fadbf19fd8d3a9a63ff610ec8ce9021ebc6947') Fconfopts+=" --with-libdvdcss=/usr" # optimization OK ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] frugalware-current: deluge-1.3.10-1-x86_64
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=frugalware-current.git;a=commitdiff;h=f2df39a567cca98857d29514c0007ca14cc4a7f0 commit f2df39a567cca98857d29514c0007ca14cc4a7f0 Author: Michel Hermier Date: Mon Nov 10 11:32:06 2014 +0100 deluge-1.3.10-1-x86_64 * Bump version. diff --git a/source/gnome-extra/deluge/FrugalBuild b/source/gnome-extra/deluge/FrugalBuild index 04d04be..3a3f7e5 100644 --- a/source/gnome-extra/deluge/FrugalBuild +++ b/source/gnome-extra/deluge/FrugalBuild @@ -7,8 +7,8 @@ options+=('asneeded') USE_DEVEL=${USE_DEVEL:-"n"} pkgname=deluge -pkgver=1.3.7 -pkgrel=2 +pkgver=1.3.10 +pkgrel=1 pkgdesc="BitTorrent client written in Python and GTK+." url="http://deluge-torrent.org/"; depends=('pygtk' 'pyxdg' 'notify-python' 'notification-daemon' 'distribute' 'librsvg' \ @@ -24,7 +24,7 @@ Finclude gnome-scriptlet if ! Fuse DEVEL; then source=(http://download.deluge-torrent.org/source/$pkgname-$pkgver.tar.bz2) - sha1sums=('f2f24d64dd139a38bcee6a4e8ee5f5a9f1136667') + sha1sums=('cfe1717c0856b3fba468208af29463458f9071e5') else pkgver=$pkgver.1.gd362a6c _F_scm_type="git" ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Rework iterator types definitions.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=168481fe0d24da454f1bf4f8881e7fad030d251d commit 168481fe0d24da454f1bf4f8881e7fad030d251d Author: Michel Hermier Date: Thu Nov 6 09:26:37 2014 +0100 libpacman: Rework iterator types definitions. diff --git a/lib/libpacman/util/flist.h b/lib/libpacman/util/flist.h index f5ea6d1..7572884 100644 --- a/lib/libpacman/util/flist.h +++ b/lib/libpacman/util/flist.h @@ -75,7 +75,10 @@ namespace flib public: typedef Iterator wrapped_iterator_type; typedef iterator_traits wrapped_iterator_traits; + +// typedef typename wrapped_iterator_traits::difference_type difference_type; typedef typename wrapped_iterator_traits::pointer pointer; + typedef typename wrapped_iterator_traits::reference reference; typedef typename wrapped_iterator_traits::size_type size_type; typedef typename wrapped_iterator_traits::value_type value_type; @@ -127,20 +130,20 @@ namespace flib wrapped_iterator_type m_iterator; }; - template + template struct const_iterator_wrapper - : public iterator_wrapper_base + : public iterator_wrapper_base { public: - typedef iterator_wrapper_base super_type; + typedef iterator_wrapper_base super_type; -// typedef typename iterator_traits::difference_type difference_type; - typedef typename iterator_traits::iterable iterable; - typedef typename iterator_traits::pointer pointer; - typedef typename iterator_traits::size_type size_type; - typedef typename iterator_traits::value_type value_type; +// using typename super_type::difference_type; + using typename super_type::pointer; + using typename super_type::reference; + using typename super_type::size_type; + using typename super_type::value_type; - explicit const_iterator_wrapper(iterable i = iterable()) + explicit const_iterator_wrapper(Iterator i = Iterator()) : super_type(i) { } @@ -185,12 +188,12 @@ namespace flib value_type operator * () const { - return iterator_traits::value_of(super_type::m_iterator); + return iterator_traits::value_of(super_type::m_iterator); } const pointer operator -> () const { - return iterator_traits::pointer_of(super_type::m_iterator); + return iterator_traits::pointer_of(super_type::m_iterator); } const_iterator_wrapper next() const @@ -211,21 +214,20 @@ namespace flib } }; - template + template struct iterator_wrapper - : public iterator_wrapper_base + : public iterator_wrapper_base { public: - typedef iterator_wrapper_base super_type; + typedef iterator_wrapper_base super_type; -// typedef typename iterator_traits::difference_type difference_type; - typedef typename iterator_traits::iterable iterable; - typedef typename iterator_traits::pointer pointer; - typedef typename iterator_traits::reference reference; - typedef typename iterator_traits::size_type size_type; - typedef typename iterator_traits::value_type value_type; +// using typename super_type::difference_type; + using typename super_type::pointer; + using typename super_type::reference; + using typename super_type::size_type; + using typename super_type::value_type; - explicit iterator_wrapper(iterable i = iterable()) + explicit iterator_wrapper(Iterator i = Iterator()) : super_type(i) { } @@ -270,22 +272,22 @@ namespace flib reference operator * () { - return iterator_traits::reference_of(super_type::m_iterator); + return iterator_traits::reference_of(super_type::m_iterator); } value_type operator * () const { - return iterator_traits::value_of(super_type::m_iterator); + return iterator_traits::value_of(super_type::m_iterator); } pointer operator -> () { - return iterator_traits::pointer_of(super_type::m_iterator); + return iterator_traits::pointer_of(super_type::m_iterator); } const pointer operator -> () const { - return iterator_traits::pointer_of(super_type::m_iterator); + return iterator_traits::pointer_of(super_type::m_iterator); } iterator_wrapper next() const @@ -525,6 +527,7 @@ namespace flib struct iterator_traits *> { typedef FListItem *iterable; + // typedef typename FListItem::difference_type difference_type; typedef typename FListItem::pointer pointer; typedef typename FListItem::reference reference; ___ Fr
[Frugalware-git] pacman-g2: libpacman: flist.h s/iterable_traits/iterator_traits/g
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=ef01e453b3627142ed41fb185c6ad34148e61132 commit ef01e453b3627142ed41fb185c6ad34148e61132 Author: Michel Hermier Date: Tue Nov 4 13:29:23 2014 +0100 libpacman: flist.h s/iterable_traits/iterator_traits/g diff --git a/lib/libpacman/util/flist.h b/lib/libpacman/util/flist.h index fc4a429..a1c8e63 100644 --- a/lib/libpacman/util/flist.h +++ b/lib/libpacman/util/flist.h @@ -34,37 +34,37 @@ namespace flib { - template - struct iterable_traits + template + struct iterator_traits { - typedef Iterable iterable; - typedef typename iterable::difference_type difference_type; - typedef typename iterable::pointer pointer; - typedef typename iterable::reference reference; - typedef typename iterable::size_type size_type; - typedef typename iterable::value_type value_type; + typedef Iterator iterator; + typedef typename iterator::difference_type difference_type; + typedef typename iterator::pointer pointer; + typedef typename iterator::reference reference; + typedef typename iterator::size_type size_type; + typedef typename iterator::value_type value_type; - static iterable next(const iterable &i) + static iterator next(const iterator &i) { return i.next(); } - static iterable previous(const iterable &i) + static iterator previous(const iterator &i) { return i.previous(); } - static reference reference_of(iterable i) + static reference reference_of(iterator i) { return *i; } - static pointer pointer_of(iterable i) + static pointer pointer_of(iterator i) { return i.operator -> (); } - static value_type value_of(const iterable i) + static value_type value_of(const iterator i) { return *i; } @@ -74,11 +74,11 @@ namespace flib struct const_iterator { public: -// typedef typename iterable_traits::difference_type difference_type; - typedef typename iterable_traits::iterable iterable; - typedef typename iterable_traits::pointer pointer; - typedef typename iterable_traits::size_type size_type; - typedef typename iterable_traits::value_type value_type; +// typedef typename iterator_traits::difference_type difference_type; + typedef typename iterator_traits::iterable iterable; + typedef typename iterator_traits::pointer pointer; + typedef typename iterator_traits::size_type size_type; + typedef typename iterator_traits::value_type value_type; explicit const_iterator(iterable i = iterable()) : m_iterable(i) @@ -140,12 +140,12 @@ namespace flib value_type operator * () const { - return iterable_traits::value_of(m_iterable); + return iterator_traits::value_of(m_iterable); } const pointer operator -> () const { - return iterable_traits::pointer_of(m_iterable); + return iterator_traits::pointer_of(m_iterable); } const_iterator next() const @@ -168,12 +168,12 @@ namespace flib protected: iterable _next() const { - return !Reverse ? iterable_traits::next(m_iterable) : iterable_traits::previous(m_iterable); + return !Reverse ? iterator_traits::next(m_iterable) : iterator_traits::previous(m_iterable); } iterable _previous() const { - return !Reverse ? iterable_traits::previous(m_iterable) : iterable_traits::next(m_iterable); + return !Reverse ? iterator_traits::previous(m_iterable) : iterator_traits::next(m_iterable); } iterable m_iterable; @@ -183,12 +183,12 @@ namespace flib struct iterator { public: -// typedef typename iterable_traits::difference_type difference_type; - typedef typename iterable_traits::iterable iterable; - typedef typename iterable_traits::pointer pointer; - typedef typename iterable_traits::reference reference; - typedef typename iterable_traits::size_type size_type; - typedef typename iterable_traits::value_type value_type; +// typedef typename iterator_traits::difference_type difference_type; + typedef typename iterator_traits::iterable iterable; + typedef typename iterator_traits::pointer pointer; + typedef typename iterator_traits::reference reference; + typedef typename iterator_traits::size_type size_type; + typedef typename iterator_traits::value_type value_type; explicit iterator(iterable i = iterable()) : m_iterable(i) @@ -250,22 +250,22 @@ namespace fl
[Frugalware-git] pacman-g2: lipacman: Simplify iterator_traits (remove iterator typedef).
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=8b275b5b32953056d441864aee2fe384b7261bd0 commit 8b275b5b32953056d441864aee2fe384b7261bd0 Author: Michel Hermier Date: Thu Nov 6 09:10:18 2014 +0100 lipacman: Simplify iterator_traits (remove iterator typedef). diff --git a/lib/libpacman/util/flist.h b/lib/libpacman/util/flist.h index 035ac66..f5ea6d1 100644 --- a/lib/libpacman/util/flist.h +++ b/lib/libpacman/util/flist.h @@ -37,34 +37,33 @@ namespace flib template struct iterator_traits { - typedef Iterator iterator; - typedef typename iterator::difference_type difference_type; - typedef typename iterator::pointer pointer; - typedef typename iterator::reference reference; - typedef typename iterator::size_type size_type; - typedef typename iterator::value_type value_type; + typedef typename Iterator::difference_type difference_type; + typedef typename Iterator::pointer pointer; + typedef typename Iterator::reference reference; + typedef typename Iterator::size_type size_type; + typedef typename Iterator::value_type value_type; - static iterator next(const iterator &i) + static Iterator next(const Iterator &i) { return i.next(); } - static iterator previous(const iterator &i) + static Iterator previous(const Iterator &i) { return i.previous(); } - static reference reference_of(iterator i) + static reference reference_of(Iterator i) { return *i; } - static pointer pointer_of(iterator i) + static pointer pointer_of(Iterator i) { return i.operator -> (); } - static value_type value_of(const iterator i) + static value_type value_of(const Iterator i) { return *i; } ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Suffix flib::(const_)iterator with _wrapper since they abstract another iterator type.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=57f8ddf315fa21b8172033298141ffb6c064b7cc commit 57f8ddf315fa21b8172033298141ffb6c064b7cc Author: Michel Hermier Date: Tue Nov 4 13:39:19 2014 +0100 libpacman: Suffix flib::(const_)iterator with _wrapper since they abstract another iterator type. diff --git a/lib/libpacman/util/flist.h b/lib/libpacman/util/flist.h index a1c8e63..05c6f02 100644 --- a/lib/libpacman/util/flist.h +++ b/lib/libpacman/util/flist.h @@ -71,7 +71,7 @@ namespace flib }; template - struct const_iterator + struct const_iterator_wrapper { public: // typedef typename iterator_traits::difference_type difference_type; @@ -80,15 +80,15 @@ namespace flib typedef typename iterator_traits::size_type size_type; typedef typename iterator_traits::value_type value_type; - explicit const_iterator(iterable i = iterable()) + explicit const_iterator_wrapper(iterable i = iterable()) : m_iterable(i) { } - const_iterator(const const_iterator &o) + const_iterator_wrapper(const const_iterator_wrapper &o) : m_iterable(o.m_iterable) { } - ~const_iterator() + ~const_iterator_wrapper() { } operator iterable () @@ -96,44 +96,44 @@ namespace flib return m_iterable; } - const_iterator &operator = (const const_iterator &o) + const_iterator_wrapper &operator = (const const_iterator_wrapper &o) { m_iterable = o.m_iterable; return *this; } - bool operator == (const const_iterator &o) const + bool operator == (const const_iterator_wrapper &o) const { return m_iterable == o.m_iterable; } - bool operator != (const const_iterator &o) const + bool operator != (const const_iterator_wrapper &o) const { return !operator == (o); } - const_iterator &operator ++ () + const_iterator_wrapper &operator ++ () { m_iterable = _next(); return *this; } - const_iterator operator ++ (int) + const_iterator_wrapper operator ++ (int) { - const_iterator tmp(*this); + const_iterator_wrapper tmp(*this); operator ++ (); return tmp; } - const_iterator &operator -- () + const_iterator_wrapper &operator -- () { m_iterable = _previous(); return *this; } - const_iterator operator -- (int) + const_iterator_wrapper operator -- (int) { - const_iterator tmp(*this); + const_iterator_wrapper tmp(*this); operator -- (); return tmp; } @@ -148,14 +148,14 @@ namespace flib return iterator_traits::pointer_of(m_iterable); } - const_iterator next() const + const_iterator_wrapper next() const { - return const_iterator(_next()); + return const_iterator_wrapper(_next()); } - const_iterator previous() const + const_iterator_wrapper previous() const { - return const_iterator(_previous()); + return const_iterator_wrapper(_previous()); } /* FIXME: temporary */ @@ -180,7 +180,7 @@ namespace flib }; template - struct iterator + struct iterator_wrapper { public: // typedef typename iterator_traits::difference_type difference_type; @@ -190,15 +190,15 @@ namespace flib typedef typename iterator_traits::size_type size_type; typedef typename iterator_traits::value_type value_type; - explicit iterator(iterable i = iterable()) + explicit iterator_wrapper(iterable i = iterable()) : m_iterable(i) { } - iterator(const iterator &o) + iterator_wrapper(const iterator_wrapper &o) : m_iterable(o.m_iterable) { } - ~iterator() + ~iterator_wrapper() { } operator iterable () @@ -206,44 +206,44 @@ namespace flib return m_iterable; } - iterator &operator = (const iterator &o) + iterator_wrapper &operator = (const iterator_wrapper &o) { m_iterable = o.m_iterable; return *this; } - bool operator == (const iterator &o) const + bool operator == (const iterator_wrapper &o) const { return m_iterable == o.m_iterable; } - bool operator != (const iterator &o) const + bool operator != (const iterator_wrapper &o) const { return !operator == (o); } - iterator &operator ++ () + iterator_wrapper &operator ++ () { m_iterable = _next(); return *this; } - iterator operator ++ (int) + iterator_wrapper operator ++ (int) { - iterator tmp(*this); + iterator_wrapper tmp(*this); operator ++ (); return tmp; } -
[Frugalware-git] pacman-g2: libpacman: More iterator api rework.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=051bab1beedfd609b05b4d280164e15be772de5c commit 051bab1beedfd609b05b4d280164e15be772de5c Author: Michel Hermier Date: Fri Nov 7 08:44:32 2014 +0100 libpacman: More iterator api rework. diff --git a/lib/libpacman/util/flist.h b/lib/libpacman/util/flist.h index 7572884..503ba22 100644 --- a/lib/libpacman/util/flist.h +++ b/lib/libpacman/util/flist.h @@ -37,33 +37,35 @@ namespace flib template struct iterator_traits { + typedef Iterator iterator; + typedef typename Iterator::difference_type difference_type; typedef typename Iterator::pointer pointer; typedef typename Iterator::reference reference; typedef typename Iterator::size_type size_type; typedef typename Iterator::value_type value_type; - static Iterator next(const Iterator &i) + static iterator next(const iterator &i) { return i.next(); } - static Iterator previous(const Iterator &i) + static iterator previous(const iterator &i) { return i.previous(); } - static reference reference_of(Iterator i) + static reference reference_of(iterator i) { return *i; } - static pointer pointer_of(Iterator i) + static pointer pointer_of(iterator i) { return i.operator -> (); } - static value_type value_of(const Iterator i) + static value_type value_of(const iterator i) { return *i; } @@ -399,36 +401,37 @@ namespace flib template <> struct iterator_traits { - typedef FCListItem *iterable; + typedef FCListItem *iterator; + // typedef typename FCListItem::difference_type difference_type; typedef typename FCListItem::pointer pointer; typedef typename FCListItem::reference reference; typedef typename FCListItem::size_type size_type; typedef typename FCListItem::value_type value_type; - static iterable next(const FCListItem * const i) + static iterator next(const FCListItem * const i) { ASSERT(i != NULL, RET_ERR(PM_ERR_WRONG_ARGS, NULL)); return i->m_next; } - static iterable previous(const FCListItem * const i) + static iterator previous(const FCListItem * const i) { ASSERT(i != NULL, RET_ERR(PM_ERR_WRONG_ARGS, NULL)); return i->m_previous; } #if 0 - static reference reference_of(iterable i) + static reference reference_of(iterator i) { return i->operator * (); } - static pointer pointer_of(iterable i) + static pointer pointer_of(iterator i) { return i->operator -> (); } - static value_type value_of(const iterable i) + static value_type value_of(const iterator i) { return i->operator * (); } @@ -526,7 +529,7 @@ namespace flib template struct iterator_traits *> { - typedef FListItem *iterable; + typedef FListItem *iterator; // typedef typename FListItem::difference_type difference_type; typedef typename FListItem::pointer pointer; @@ -534,27 +537,27 @@ namespace flib typedef typename FListItem::size_type size_type; typedef typename FListItem::value_type value_type; - static iterable next(const iterable &i) + static iterator next(const iterator &i) { - return static_cast(iterator_traits::next(i)); + return static_cast(iterator_traits::next(i)); } - static iterable previous(const iterable &i) + static iterator previous(const iterator &i) { - return static_cast(iterator_traits::previous(i)); + return static_cast(iterator_traits::previous(i)); } - static reference reference_of(iterable i) + static reference reference_of(iterator i) { return i->operator * (); } - static pointer pointer_of(iterable i) + static pointer pointer_of(iterator i) { return i->operator -> (); } - static value_type value_of(const iterable i) + static value_type value_of(const iterator i) { return i->operator * (); } @@ -564,16 +567,22 @@ namespace flib class list : protected FCListItem { - public: - typedef flib::FListItem *iterable; + protected: + typedef flib::FListItem *data_holder; + typedef flib::iterator_traits data_holder_traits; + public: /* std::list compatibility */ - typedef T value_type; - typedef flib::iterator_wrapper iterator; - typedef flib::iterator_wrapper reverse_iterator; - typedef flib::const_iterator_wrapper const_iterator; - typedef flib::const_iterator_wrapper const_reverse_iterator; - typedef size_t size_type; + typedef flib::iterator_wrapper
[Frugalware-git] pacman-g2: libpacman: Remove unecessary templates overloads.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=d5b54e6f05fc96c3ace80dd4577566998c22c69f commit d5b54e6f05fc96c3ace80dd4577566998c22c69f Author: Michel Hermier Date: Tue Nov 4 11:34:38 2014 +0100 libpacman: Remove unecessary templates overloads. diff --git a/lib/libpacman/util/flist.h b/lib/libpacman/util/flist.h index c1ec051..a363995 100644 --- a/lib/libpacman/util/flist.h +++ b/lib/libpacman/util/flist.h @@ -70,78 +70,6 @@ namespace flib } }; - template - struct iterable_traits - { - typedef Iterable *iterable; - typedef ptrdiff_t difference_type; - typedef Iterable *pointer; - typedef Iterable &reference; - typedef size_t size_type; - typedef Iterable value_type; - - static iterable next(const iterable &i) - { - return i->next(); - } - - static iterable previous(const iterable &i) - { - return i->previous(); - } - - static reference reference_of(iterable i) - { - return i->operator * (); - } - - static pointer pointer_of(iterable i) - { - return i->operator -> (); - } - - static value_type value_of(const iterable i) - { - return i->operator * (); - } - }; - - template - struct iterable_traits - { - typedef Iterable *iterable; - typedef ptrdiff_t difference_type; - typedef const Iterable *pointer; - typedef const Iterable &reference; - typedef size_t size_type; - typedef Iterable value_type; - - static iterable next(const iterable &i) - { - return i->next(); - } - - static iterable previous(const iterable &i) - { - return i->previous(); - } - - static reference reference_of(iterable i) - { - return i->operator * (); - } - - static pointer pointer_of(iterable i) - { - return i->operator -> (); - } - - static value_type value_of(const iterable i) - { - return i->operator * (); - } - }; - template struct const_iterator { ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Move FCListItem inside flib.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=e69c17d431c618857e2cb628e7d6088f2a9c94da commit e69c17d431c618857e2cb628e7d6088f2a9c94da Author: Michel Hermier Date: Tue Nov 4 11:40:38 2014 +0100 libpacman: Move FCListItem inside flib. diff --git a/lib/libpacman/util/flist.h b/lib/libpacman/util/flist.h index a363995..b052734 100644 --- a/lib/libpacman/util/flist.h +++ b/lib/libpacman/util/flist.h @@ -299,97 +299,95 @@ namespace flib public: /* FIXME: Make protected/private */ iterable m_iterable; }; -} -class FCListItem -{ -public: - friend struct flib::iterable_traits; + class FCListItem + { + public: + friend struct flib::iterable_traits; - typedef void *value_type; - typedef value_type *pointer; - typedef size_t size_type; - typedef value_type &reference; + typedef void *value_type; + typedef value_type *pointer; + typedef size_t size_type; + typedef value_type &reference; - FCListItem() - : FCListItem(NULL, NULL) - { } + FCListItem() + : FCListItem(NULL, NULL) + { } - FCListItem(FCListItem *previous, FCListItem *next) - : m_next(next), m_previous(previous) - { } + FCListItem(FCListItem *previous, FCListItem *next) + : m_next(next), m_previous(previous) + { } - virtual ~FCListItem() - { } // FIXME: Make pure virtual + virtual ~FCListItem() + { } // FIXME: Make pure virtual #if 0 - virtual void *c_data() const - { return m_data; } // FIXME: Make pure virtual + virtual void *c_data() const + { return m_data; } // FIXME: Make pure virtual #endif - bool insert_after(FCListItem *previous) - { - FCListItem *next; + bool insert_after(FCListItem *previous) + { + FCListItem *next; - ASSERT(previous != NULL, RET_ERR(PM_ERR_WRONG_ARGS, false)); + ASSERT(previous != NULL, RET_ERR(PM_ERR_WRONG_ARGS, false)); - next = previous->m_next; - previous->m_next = this; - m_next = next; - m_previous = previous; + next = previous->m_next; + previous->m_next = this; + m_next = next; + m_previous = previous; #ifndef F_NOCOMPAT - if (next != NULL) + if (next != NULL) #endif - next->m_previous = this; - return true; - } - - FCListItem *next() const - { - return m_next; - } + next->m_previous = this; + return true; + } - FCListItem *previous() const - { - return m_previous; - } + FCListItem *next() const + { + return m_next; + } - void swap(FCListItem &o) - { - std::swap(m_next, o.m_next); - std::swap(m_previous, o.m_previous); - if(m_next != &o) { - m_next->m_previous = this; - m_previous->m_next = this; - } else { - m_next = m_previous = this; + FCListItem *previous() const + { + return m_previous; } - if(o.m_next != this) { - o.m_next->m_previous = &o; - o.m_previous->m_next = &o; - } else { - o.m_next = o.m_previous = &o; + + void swap(FCListItem &o) + { + std::swap(m_next, o.m_next); + std::swap(m_previous, o.m_previous); + if(m_next != &o) { + m_next->m_previous = this; + m_previous->m_next = this; + } else { + m_next = m_previous = this; + } + if(o.m_next != this) { + o.m_next->m_previous = &o; + o.m_previous->m_next = &o; + } else { + o.m_next = o.m_previous = &o; + } } - } - void remove() - { - m_next->m_previous = m_previous; - m_previous->m_next = m_next; - m_next = m_previous = NULL; - } + void remove() + { + m_next->m_previous = m_previous; +
[Frugalware-git] pacman-g2: libpacman: Rename FList to flib::list.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=84cd20a8a37431ba98baed9fdfc3345682d62188 commit 84cd20a8a37431ba98baed9fdfc3345682d62188 Author: Michel Hermier Date: Tue Nov 4 12:13:53 2014 +0100 libpacman: Rename FList to flib::list. diff --git a/lib/libpacman/database_cache.cpp b/lib/libpacman/database_cache.cpp index 7d8863c..8f934ca 100644 --- a/lib/libpacman/database_cache.cpp +++ b/lib/libpacman/database_cache.cpp @@ -42,6 +42,7 @@ #include "handle.h" #include "error.h" +using namespace flib; using namespace libpacman; static @@ -129,7 +130,7 @@ int Database::remove_pkgfromcache(package_ptr pkg) } static -Group *_pacman_db_get_grpfromlist(const FList &list, const char *target) +Group *_pacman_db_get_grpfromlist(const list &list, const char *target) { if(_pacman_strempty(target)) { return(NULL); diff --git a/lib/libpacman/deps.cpp b/lib/libpacman/deps.cpp index 3e76f2c..d21bf06 100644 --- a/lib/libpacman/deps.cpp +++ b/lib/libpacman/deps.cpp @@ -42,6 +42,7 @@ #include "versioncmp.h" #include "handle.h" +using namespace flib; using namespace libpacman; typedef struct __pmgraph_t { @@ -50,7 +51,7 @@ typedef struct __pmgraph_t { { } pmsyncpkg_t *data; - FList<__pmgraph_t *> children; + list<__pmgraph_t *> children; int state; /* 0: untouched, -1: entered, other: leaving time */ struct __pmgraph_t *parent; /* where did we come from? */ @@ -111,7 +112,7 @@ FPtrList &_pacman_depmisslist_add(FPtrList &misslist, pmdepmissing_t *miss) */ void pmtrans_t::sortbydeps(int mode) { - FList vertices; + list vertices; pmgraph_t *vertex; int found; diff --git a/lib/libpacman/handle.h b/lib/libpacman/handle.h index a205f8d..ceae0d6 100644 --- a/lib/libpacman/handle.h +++ b/lib/libpacman/handle.h @@ -65,7 +65,7 @@ public: pmaccess_t access; uid_t uid; libpacman::Database *db_local; - FList dbs_sync; + flib::list dbs_sync; FILE *logfd; FFileLock *filelock; pmtrans_t *trans; diff --git a/lib/libpacman/package.h b/lib/libpacman/package.h index 5f1dec1..04c8567 100644 --- a/lib/libpacman/package.h +++ b/lib/libpacman/package.h @@ -179,7 +179,7 @@ public: typedef flib::refcounted_shared_ptr package_ptr; bool operator < (const package_ptr &pkg1, const package_ptr &pkg2); - typedef FList package_list; + typedef flib::list package_list; typedef flib::set package_set; class PackageMatcher diff --git a/lib/libpacman/pacman_p.h b/lib/libpacman/pacman_p.h index cbcf173..d8d57e0 100644 --- a/lib/libpacman/pacman_p.h +++ b/lib/libpacman/pacman_p.h @@ -54,11 +54,11 @@ DEFINE_CAST(struct __pmpkg_t, libpacman::package) //DEFINE_CAST(struct __pmtrans_t, libpacman::Transaction) template -static inline __pmlist_t *c_cast(FList &obj) +static inline __pmlist_t *c_cast(flib::list &obj) { return (__pmlist_t *)&obj; } template -static inline __pmlist_t *c_cast(FList *obj) +static inline __pmlist_t *c_cast(flib::list *obj) { return (__pmlist_t *)obj; } static inline struct __pmpkg_t *c_cast(const libpacman::package_ptr &obj) diff --git a/lib/libpacman/trans.h b/lib/libpacman/trans.h index 6b387ee..903e015 100644 --- a/lib/libpacman/trans.h +++ b/lib/libpacman/trans.h @@ -82,7 +82,7 @@ struct __pmtrans_t int flags; unsigned char state; FStringList targets; - FList syncpkgs; + flib::list syncpkgs; flib::str_set skiplist; FStringList triggers; diff --git a/lib/libpacman/util/flist.h b/lib/libpacman/util/flist.h index 17b9a69..fc4a429 100644 --- a/lib/libpacman/util/flist.h +++ b/lib/libpacman/util/flist.h @@ -550,309 +550,309 @@ namespace flib return i->operator * (); } }; -} -template -class FList - : protected flib::FCListItem -{ -public: - typedef flib::FListItem *iterable; - - /* std::list compatibility */ - typedef T value_type; - typedef flib::iterator iterator; - typedef flib::iterator reverse_iterator; - typedef flib::const_iterator const_iterator; - typedef flib::const_iterator const_reverse_iterator; - typedef size_t size_type; - - FList() - : FCListItem(this, this) - { } - - FList(FList &&o) - : FList() + template + class list + : protected FCListItem { - swap(o); - } + public: + typedef flib::FListItem *iterable; - FList &operator = (FList &&o) - { - swap(o); - return *this; - } + /* std::list compatibility */ + typedef T value_type; + typedef flib::iterator iterator; + typedef flib::iterator reverse_iterator; + typedef flib::const_iterator const_iterator; + typedef flib::const_iterator const_reverse_iterator; + typedef size_t size_type; - virtual ~FList() overri
[Frugalware-git] pacman-g2: libpacman: Make flib::set work more with keyed_value_traits.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=9621965cdd5d2577a357d0d00798f6a9b8df731b commit 9621965cdd5d2577a357d0d00798f6a9b8df731b Author: Michel Hermier Date: Fri Nov 7 11:08:19 2014 +0100 libpacman: Make flib::set work more with keyed_value_traits. diff --git a/lib/libpacman/util/fset.h b/lib/libpacman/util/fset.h index 9056ed1..3ee53e9 100644 --- a/lib/libpacman/util/fset.h +++ b/lib/libpacman/util/fset.h @@ -57,13 +57,11 @@ namespace flib { private: typedef flib::list super_type; + typedef flib::keyed_value_traits keyed_value_traits; public: using typename super_type::iterator; - using typename super_type::value_type; - - typedef Compare key_compare; - typedef Compare value_compare; + using typename super_type::const_iterator; using super_type::list; @@ -84,33 +82,53 @@ namespace flib using super_type::any_match_if; + public: + typedef typename keyed_value_traits::keyed_value_type keyed_value_type; + typedef typename keyed_value_traits::key_type key_type; + typedef typename keyed_value_traits::value_type value_type; + + typedef Compare key_compare; + typedef Compare value_compare; + explicit operator const flib::list &() const { return *this; } - virtual iterator add(const value_type &data) override + virtual iterator add(const keyed_value_type &keyed_value) override { iterator end = this->end(); /* Find insertion point. */ - iterator next = find_insertion_point(data); + iterator next = find_insertion_point(keyed_value_traits::value_of(keyed_value)); // ensure we don't have an egality - if(next == end || m_compare(data, *next)) { - typename super_type::data_holder add = new FListItem(data); + if(next == end || m_compare(keyed_value, *next)) { + typename super_type::data_holder add = new FListItem(keyed_value); add->insert_after(next.previous()); return iterator(add); } return end; } - iterator find(const value_type &data) + iterator find(const key_type &key) { iterator end = this->end(); - iterator it = find_insertion_point(data); + iterator it = find_insertion_point(key); + + // ensure we have an egality + if(it == end || !m_compare(key, *it)) { + return end; + } + return it; + } + + const_iterator find(const key_type &key) const + { + const_iterator end = this->end(); + const_iterator it = find_insertion_point(key); // ensure we have an egality - if(it == end || !m_compare(data, *it)) { + if(it == end || !m_compare(key, *it)) { return end; } return it; @@ -129,9 +147,11 @@ namespace flib private: /* Return the first iterator where value does not satisfy Compare */ - iterator find_insertion_point(const value_type &data) + iterator find_insertion_point(const key_type &key) { - return super_type::find_if_not([&] (const T &o) -> bool { return m_compare(o, data); }); + return super_type::find_if_not( + [&] (const keyed_value_type &keyed_value) -> bool + { return m_compare(keyed_value_traits::value_of(keyed_value), key); }); } Compare m_compare; ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Remove unused flib::uncompared struct.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=e33d5427c2f7a5b6e97716294680a8e78a12e803 commit e33d5427c2f7a5b6e97716294680a8e78a12e803 Author: Michel Hermier Date: Tue Nov 4 11:15:04 2014 +0100 libpacman: Remove unused flib::uncompared struct. diff --git a/lib/libpacman/util/flist.h b/lib/libpacman/util/flist.h index 0bae4d6..c1ec051 100644 --- a/lib/libpacman/util/flist.h +++ b/lib/libpacman/util/flist.h @@ -34,10 +34,6 @@ namespace flib { - /* Used as a marker to make containers unsorted */ - struct uncompared - { }; - template struct iterable_traits { ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Add base class for iterator wrappers.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=b01df91caa9cfe2e3dc214b36b5c195dcfd9c124 commit b01df91caa9cfe2e3dc214b36b5c195dcfd9c124 Author: Michel Hermier Date: Tue Nov 4 14:29:03 2014 +0100 libpacman: Add base class for iterator wrappers. diff --git a/lib/libpacman/trans.cpp b/lib/libpacman/trans.cpp index 98867be..6da550c 100644 --- a/lib/libpacman/trans.cpp +++ b/lib/libpacman/trans.cpp @@ -1023,7 +1023,7 @@ int _pacman_fpmpackage_install(package_ptr pkg, pmtranstype_t type, pmtrans_t *t } sprintf(fn, "%s\t%s", file, sha1_pkg); } - lp.m_iterable->swap_data((const char *&)fn); + lp.m_iterator->swap_data((const char *&)fn); free(fn); } } @@ -1159,7 +1159,7 @@ int _pacman_fpmpackage_install(package_ptr pkg, pmtranstype_t type, pmtrans_t *t sprintf(fn, "%s\t%s", file, sha1); FREE(sha1); } - lp.m_iterable->swap_data((const char *&)fn); + lp.m_iterator->swap_data((const char *&)fn); free(fn); } } @@ -1507,7 +1507,7 @@ int __pmtrans_t::commit(FPtrList **data) for(auto m = depends.begin(), end = depends.end(); m != end; ++m) { if(!strcmp(*m, old->name())) { const char *str = strdup(pkg_new->name()); - m.m_iterable->swap_data(str); + m.m_iterator->swap_data(str); free(str); } } diff --git a/lib/libpacman/util/flist.h b/lib/libpacman/util/flist.h index 05c6f02..035ac66 100644 --- a/lib/libpacman/util/flist.h +++ b/lib/libpacman/util/flist.h @@ -70,10 +70,71 @@ namespace flib } }; + template + class iterator_wrapper_base + { + public: + typedef Iterator wrapped_iterator_type; + typedef iterator_traits wrapped_iterator_traits; + typedef typename wrapped_iterator_traits::pointer pointer; + typedef typename wrapped_iterator_traits::size_type size_type; + typedef typename wrapped_iterator_traits::value_type value_type; + + explicit iterator_wrapper_base(wrapped_iterator_type i = wrapped_iterator_type()) + : m_iterator(i) + { } + + iterator_wrapper_base(const iterator_wrapper_base &o) + : m_iterator(o.m_iterator) + { } + + iterator_wrapper_base &operator = (const iterator_wrapper_base &o) + { + m_iterator = o.m_iterator; + return *this; + } + + /* explicit */ operator wrapped_iterator_type () + { + return m_iterator; + } + + bool operator == (const iterator_wrapper_base &o) const + { + return m_iterator == o.m_iterator; + } + + bool operator != (const iterator_wrapper_base &o) const + { + return m_iterator != o.m_iterator; + } + + wrapped_iterator_type iterator() const + { + return m_iterator; + } + + wrapped_iterator_type iterator_next() const + { + return !Reverse ? wrapped_iterator_traits::next(m_iterator) : wrapped_iterator_traits::previous(m_iterator); + } + + wrapped_iterator_type iterator_previous() const + { + return !Reverse ? wrapped_iterator_traits::previous(m_iterator) : wrapped_iterator_traits::next(m_iterator); + } + + /* protected: */ + wrapped_iterator_type m_iterator; + }; + template struct const_iterator_wrapper + : public iterator_wrapper_base { public: + typedef iterator_wrapper_base super_type; + // typedef typename iterator_traits::difference_type difference_type; typedef typename iterator_traits::iterable iterable; typedef typename iterator_traits::pointer pointer; @@ -81,40 +142,25 @@ namespace flib typedef typename iterator_traits::value_type value_type; explicit const_iterator_wrapper(iterable i = iterable()) - : m_iterable(i) + : super_type(i) { } const_iterator_wrapper(const const_iterator_wrapper &o) - : m_iterable(o.m_iterable) + : super_type(o) { } ~const_iterator_wrapper() { } - operator iterable () - { - return m_iterable; - } - const_iterator_wrapper &operator = (const const_iterator_wrapper &o) { -
[Frugalware-git] pacman-g2: libpacman: Add keyed_value_traits, make flib::set privately inherit of flib::list.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=ed2f134709e78751b73c4d39a67befcd43346a62 commit ed2f134709e78751b73c4d39a67befcd43346a62 Author: Michel Hermier Date: Fri Nov 7 10:42:39 2014 +0100 libpacman: Add keyed_value_traits, make flib::set privately inherit of flib::list. diff --git a/lib/libpacman/database_cache.cpp b/lib/libpacman/database_cache.cpp index 8f934ca..73d1ac2 100644 --- a/lib/libpacman/database_cache.cpp +++ b/lib/libpacman/database_cache.cpp @@ -130,7 +130,7 @@ int Database::remove_pkgfromcache(package_ptr pkg) } static -Group *_pacman_db_get_grpfromlist(const list &list, const char *target) +Group *_pacman_db_get_grpfromlist(const group_set &list, const char *target) { if(_pacman_strempty(target)) { return(NULL); diff --git a/lib/libpacman/pacman_p.h b/lib/libpacman/pacman_p.h index d8d57e0..a3db46a 100644 --- a/lib/libpacman/pacman_p.h +++ b/lib/libpacman/pacman_p.h @@ -61,6 +61,10 @@ template static inline __pmlist_t *c_cast(flib::list *obj) { return (__pmlist_t *)obj; } +template +static inline __pmlist_t *c_cast(flib::set &obj) +{ return (__pmlist_t *)&obj; } + static inline struct __pmpkg_t *c_cast(const libpacman::package_ptr &obj) { return (__pmpkg_t *)obj.get(); } diff --git a/lib/libpacman/util/fset.h b/lib/libpacman/util/fset.h index e8f8c22..9056ed1 100644 --- a/lib/libpacman/util/fset.h +++ b/lib/libpacman/util/fset.h @@ -28,13 +28,37 @@ namespace flib { - template > + template + struct keyed_value_traits + { + typedef T keyed_value_type; + typedef T key_type; + typedef T value_type; + + static const key_type &key_of(const keyed_value_type &o) + { + return o; + } + + static value_type &value_of(keyed_value_type &o) + { + return o; + } + + static const value_type &value_of(const keyed_value_type &o) + { + return o; + } + }; + + template ::key_type>> class set - : public flib::list + : private flib::list { - public: + private: typedef flib::list super_type; + public: using typename super_type::iterator; using typename super_type::value_type; @@ -43,6 +67,28 @@ namespace flib using super_type::list; + /* Iterators */ + using super_type::begin; + using super_type::end; + using super_type::rbegin; + using super_type::rend; + + /* Capacity */ + using super_type::empty; + using super_type::size; + + /* Element access */ + using super_type::clear; + using super_type::contains; + using super_type::remove; + + using super_type::any_match_if; + + explicit operator const flib::list &() const + { + return *this; + } + virtual iterator add(const value_type &data) override { iterator end = this->end(); ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: pacman-g2: Fix typo in dump_pkg_files.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=36bc62edd5d8ef58ec30cd7a102e701b1ce66381 commit 36bc62edd5d8ef58ec30cd7a102e701b1ce66381 Author: Michel Hermier Date: Sun Nov 9 22:05:29 2014 +0100 pacman-g2: Fix typo in dump_pkg_files. diff --git a/src/pacman-g2/package.c b/src/pacman-g2/package.c index a66db07..2596ab3 100644 --- a/src/pacman-g2/package.c +++ b/src/pacman-g2/package.c @@ -176,7 +176,7 @@ void dump_pkg_files(PM_PKG *pkg) pkgname = pacman_pkg_getinfo(pkg, PM_PKG_NAME); pkgfiles = pacman_pkg_getinfo(pkg, PM_PKG_FILES); - for(pmlist_iterator_t *i = pacman_list_begin(pkgfiles), *end = pacman_list_begin(pkgfiles); i != end; i = pacman_list_next(i)) { + for(pmlist_iterator_t *i = pacman_list_begin(pkgfiles), *end = pacman_list_end(pkgfiles); i != end; i = pacman_list_next(i)) { fprintf(stdout, "%s %s%s\n", (char *)pkgname, config->root, (char *)pacman_list_getdata(i)); } ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Move FListItem inside flib.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=1f4ed7ab83b6ad8c9cc711e8010bb818c7d779c8 commit 1f4ed7ab83b6ad8c9cc711e8010bb818c7d779c8 Author: Michel Hermier Date: Tue Nov 4 11:48:17 2014 +0100 libpacman: Move FListItem inside flib. diff --git a/lib/libpacman/util/flist.h b/lib/libpacman/util/flist.h index b052734..17b9a69 100644 --- a/lib/libpacman/util/flist.h +++ b/lib/libpacman/util/flist.h @@ -426,97 +426,95 @@ namespace flib } #endif }; -} -template -class FListItem - : public flib::FCListItem -{ -public: - friend struct flib::iterable_traits; + template + class FListItem + : public flib::FCListItem + { + public: + friend struct flib::iterable_traits; - typedef T value_type; - typedef value_type *pointer; - typedef size_t size_type; - typedef value_type &reference; + typedef T value_type; + typedef value_type *pointer; + typedef size_t size_type; + typedef value_type &reference; - explicit FListItem(const T &data = T()) - : m_data(data) - { } + explicit FListItem(const T &data = T()) + : m_data(data) + { } - FListItem(T &&data) - : m_data(std::move(data)) - { } + FListItem(T &&data) + : m_data(std::move(data)) + { } - virtual ~FListItem() - { } + virtual ~FListItem() + { } #if 0 - virtual void *c_data() const override - { - return &m_data; - } + virtual void *c_data() const override + { + return &m_data; + } - T &data() - { - return m_data; - } + T &data() + { + return m_data; + } - const T &data() const - { - return m_data; - } + const T &data() const + { + return m_data; + } #endif - reference operator * () - { - return m_data; - } + reference operator * () + { + return m_data; + } - const value_type operator * () const - { - return m_data; - } + const value_type operator * () const + { + return m_data; + } - pointer operator -> () - { - return &m_data; - } + pointer operator -> () + { + return &m_data; + } - const pointer operator -> () const - { - return &m_data; - } + const pointer operator -> () const + { + return &m_data; + } - FListItem *next() const - { - return static_cast(m_next); - } + FListItem *next() const + { + return static_cast(m_next); + } - FListItem *previous() const - { - return static_cast(m_previous); - } + FListItem *previous() const + { + return static_cast(m_previous); + } - void swap_data(T &o) - { - std::swap(m_data, o); - } + void swap_data(T &o) + { + std::swap(m_data, o); + } - void swap_data(T *o) - { - std::swap(m_data, *o); - } + void swap_data(T *o) + { + std::swap(m_data, *o); + } -//protected: - T m_data; +// protected: + T m_data; -private: - FListItem(const FListItem &o); + private: + FListItem(const FListItem &o); - FListItem &operator = (const FListItem &o); -}; + FListItem &operator = (const FListItem &o); + }; -namespace flib { template struct iterable_traits *> { @@ -559,7 +557,7 @@ class FList : protected flib::FCListItem { public: - typedef FListItem *iterable; + typedef flib::FListItem *iterable; /* std::list compatibility */ typedef T value_type; @@ -718,8 +716,8 @@ public: { ASSERT(position != c_end(), RET_ERR(PM_ERR_WRONG_ARGS, position)); - FListItem *erased = (iterable)position; - FListItem *next = erased->next(); + iterable erased = (iterable)position; + iterable next = erased->next(); erased->remove(); delete erased; return iterator(next); @@ -79
[Frugalware-git] pacman-g2: libpacman: Rename flib::refcounted::aboutToDestroy to about_to_destroy.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=d9fa55abc10f72f14405f4f2a17ec26465724ad5 commit d9fa55abc10f72f14405f4f2a17ec26465724ad5 Author: Michel Hermier Date: Sat Nov 1 09:23:09 2014 +0100 libpacman: Rename flib::refcounted::aboutToDestroy to about_to_destroy. diff --git a/lib/libpacman/kernel/frefcounted.cpp b/lib/libpacman/kernel/frefcounted.cpp index 6be2958..49a637d 100644 --- a/lib/libpacman/kernel/frefcounted.cpp +++ b/lib/libpacman/kernel/frefcounted.cpp @@ -44,7 +44,7 @@ void refcounted::acquire() const void refcounted::release() const { if(--m_reference_counter == 0) { - aboutToDestroy(const_cast(this)); + about_to_destroy(const_cast(this)); delete this; } } diff --git a/lib/libpacman/kernel/frefcounted.h b/lib/libpacman/kernel/frefcounted.h index 32ebefa..4340196 100644 --- a/lib/libpacman/kernel/frefcounted.h +++ b/lib/libpacman/kernel/frefcounted.h @@ -30,7 +30,7 @@ namespace flib class refcounted { public: - flib::FSignal aboutToDestroy; + flib::FSignal about_to_destroy; public: refcounted(); ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Add Flist (all|any)_match(_if) helpers.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=bbb2d288ec1220827d6fe5ee93310de85c6111a1 commit bbb2d288ec1220827d6fe5ee93310de85c6111a1 Author: Michel Hermier Date: Mon Oct 27 17:25:45 2014 +0100 libpacman: Add Flist (all|any)_match(_if) helpers. diff --git a/lib/libpacman/util/flist.h b/lib/libpacman/util/flist.h index b028dbe..0bae4d6 100644 --- a/lib/libpacman/util/flist.h +++ b/lib/libpacman/util/flist.h @@ -879,6 +879,30 @@ public: FCListItem::swap(o); } + template + bool all_match(const U &val) const + { + return flib::all_match(begin(), end(), val); + } + + template + bool all_match_if(UnaryPredicate pred) const + { + return flib::all_match_if(begin(), end(), pred); + } + + template + bool any_match(const U &val) const + { + return flib::any_match(begin(), end(), val()); + } + + template + bool any_match_if(UnaryPredicate pred) + { + return flib::any_match_if(begin(), end(), pred); + } + public: iterable c_first() const { ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Remove a now dummy goto in _pacman_trans_sysupgrade.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=23744f91caa12b79f7d5f886d21d9b3328979fd3 commit 23744f91caa12b79f7d5f886d21d9b3328979fd3 Author: Michel Hermier Date: Mon Oct 27 07:42:44 2014 +0100 libpacman: Remove a now dummy goto in _pacman_trans_sysupgrade. diff --git a/lib/libpacman/trans_sysupgrade.cpp b/lib/libpacman/trans_sysupgrade.cpp index 987aefe..67c89a0 100644 --- a/lib/libpacman/trans_sysupgrade.cpp +++ b/lib/libpacman/trans_sysupgrade.cpp @@ -133,9 +133,7 @@ int _pacman_trans_sysupgrade(pmtrans_t *trans) for(auto i = cache_local.begin(), end= cache_local.end(); i != end; ++i) { int cmp; int replace=0; - package_ptr local(*i); - package_ptr spkg = NULL; - pmsyncpkg_t *ps; + package_ptr local(*i), spkg; for(auto j = handle->dbs_sync.begin(), end = handle->dbs_sync.end(); !spkg && j != end; ++j) { spkg = ((Database *)*j)->find(local->name()); @@ -147,8 +145,7 @@ int _pacman_trans_sysupgrade(pmtrans_t *trans) /* we don't care about a to-be-replaced package's newer version */ for(auto j = trans->syncpkgs.begin(), end = trans->syncpkgs.end(); j != end && !replace; ++j) { - ps = *j; - if(_pacman_pkg_isin(spkg->name(), ps->m_replaces)) { + if(_pacman_pkg_isin(spkg->name(), (*j)->m_replaces)) { replace=1; } } @@ -182,9 +179,9 @@ int _pacman_trans_sysupgrade(pmtrans_t *trans) local->name(), local->version(), local->version(), spkg->version()); /* check if spkg->name is already in the packages list. */ if(!trans->find(spkg->name())) { - ps = new __pmsyncpkg_t(PM_TRANS_TYPE_SYNC, spkg); + pmsyncpkg_t *ps = new __pmsyncpkg_t(PM_TRANS_TYPE_SYNC, spkg); if(ps == NULL) { - goto error; + return -1; } trans->syncpkgs.add(ps); } else { @@ -192,11 +189,7 @@ int _pacman_trans_sysupgrade(pmtrans_t *trans) } } } - - return(0); - -error: - return(-1); + return 0; } /* vim: set ts=2 sw=2 noet: */ ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Add flib::refcounted_weak_ptr.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=33f9773cb39e92d4f669ae5a145ccce7d2ca0662 commit 33f9773cb39e92d4f669ae5a145ccce7d2ca0662 Author: Michel Hermier Date: Mon Nov 3 12:08:04 2014 +0100 libpacman: Add flib::refcounted_weak_ptr. diff --git a/lib/libpacman/kernel/frefcounted.h b/lib/libpacman/kernel/frefcounted.h index 2eb4386..0813923 100644 --- a/lib/libpacman/kernel/frefcounted.h +++ b/lib/libpacman/kernel/frefcounted.h @@ -253,8 +253,10 @@ namespace flib { template void reset(Y *ptr) { - if(super_type::get() != nullptr) { - super_type::get()->release(); + typename super_type::element_type *old_ptr = super_type::get(); + + if(old_ptr != nullptr) { + old_ptr->release(); } if(ptr != nullptr) { ptr->acquire(); @@ -267,6 +269,114 @@ namespace flib { super_type::swap(o); } }; + + template + class refcounted_weak_ptr + : public refcounted_ptr + { + public: + typedef refcounted_ptr super_type; + + constexpr refcounted_weak_ptr() + : refcounted_weak_ptr(nullptr) + { } + + constexpr refcounted_weak_ptr(std::nullptr_t) + { } + + template + explicit refcounted_weak_ptr(Y *refcounted_ptr) + : refcounted_weak_ptr() + { + reset(refcounted_ptr.get()); + } + + template + refcounted_weak_ptr(const refcounted_ptr &o) + : refcounted_weak_ptr(o.get()) + { } + + refcounted_weak_ptr(const refcounted_ptr &o) + : refcounted_weak_ptr(o.get()) + { } + + template + refcounted_weak_ptr(const refcounted_weak_ptr &o) + : refcounted_weak_ptr(o.get()) + { } + + refcounted_weak_ptr(const refcounted_weak_ptr &o) + : refcounted_weak_ptr(o.get()) + { } + + refcounted_weak_ptr(refcounted_weak_ptr &&o) + : refcounted_weak_ptr() + { + swap(o); + } + + ~refcounted_weak_ptr() + { + reset(); + } + + template + refcounted_weak_ptr &operator = (const refcounted_ptr &o) + { + reset(o.get()); + return *this; + } + + refcounted_weak_ptr &operator = (const refcounted_ptr &o) + { + reset(o.get()); + return *this; + } + + template + refcounted_weak_ptr &operator = (const refcounted_weak_ptr &o) + { + return operator = (static_cast &>(o)); + } + + refcounted_weak_ptr &operator = (const refcounted_weak_ptr &o) + { + return operator = (static_cast &>(o)); + } + + refcounted_weak_ptr &operator = (refcounted_weak_ptr &&o) + { + swap(o); + return *this; + } + + /* Manipulators */ + void reset() + { + reset(nullptr); + } + + template + void reset(Y *ptr) + { + typename super_type::element_type *old_ptr = super_type::get(); + + if(old_ptr != nullptr) { + old_ptr->about_to_destroy.disconnect(this); + } + if(ptr != nullptr) { + ptr->about_to_destroy.connect(this, static_cast(&reset)); + } + super_type::reset(ptr); + } + + void swap(refcounted_weak_ptr &o) + { + typename super_type::element_type *ptr = super_type::get(); + reset(o.get()); + o.reset(ptr); + } + }; } // namespace flib #endif /* FREFCOUNTED_H */ ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Use flib::str_set to hold trans::skiplist.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=718f15cc96755e645e734125907f73e85dd2fdfd commit 718f15cc96755e645e734125907f73e85dd2fdfd Author: Michel Hermier Date: Mon Oct 27 10:17:43 2014 +0100 libpacman: Use flib::str_set to hold trans::skiplist. diff --git a/lib/libpacman/db/localdb.cpp b/lib/libpacman/db/localdb.cpp index ce7590d..83c762b 100644 --- a/lib/libpacman/db/localdb.cpp +++ b/lib/libpacman/db/localdb.cpp @@ -48,12 +48,10 @@ using namespace libpacman; LocalPackage::LocalPackage(LocalDatabase *database) : package(database) -{ -} +{ } LocalPackage::~LocalPackage() -{ -} +{ } LocalDatabase *LocalPackage::database() const { @@ -176,13 +174,7 @@ int _pacman_localpackage_remove(package_ptr pkg, pmtrans_t *trans, int howmany, /* check the "skip list" before removing the file. * see the big comment block in db_find_conflicts() for an * explanation. */ - int skipit = 0; - for(auto j = trans->skiplist.begin(), end = trans->skiplist.end(); j != end; ++j) { - if(!strcmp(file, *j)) { - skipit = 1; - } - } - if(skipit) { + if(trans->skiplist.contains(file)) { _pacman_log(PM_LOG_FLOW2, _("skipping removal of %s as it has moved to another package"), file); } else { diff --git a/lib/libpacman/kernel/fstr.cpp b/lib/libpacman/kernel/fstr.cpp index 61df894..b1c2a82 100644 --- a/lib/libpacman/kernel/fstr.cpp +++ b/lib/libpacman/kernel/fstr.cpp @@ -115,7 +115,7 @@ void str::reset(const char *s) if(m_str != nullptr) { free(m_str); } - m_str = strdup(s); + m_str = f_strdup(s); } void str::swap(str &o) diff --git a/lib/libpacman/trans.h b/lib/libpacman/trans.h index 0cb657b..6b387ee 100644 --- a/lib/libpacman/trans.h +++ b/lib/libpacman/trans.h @@ -28,6 +28,7 @@ typedef struct __pmtrans_t pmtrans_t; #include "kernel/fobject.h" #include "util/fstringlist.h" +#include "util/fstrset.h" namespace libpacman { @@ -82,7 +83,7 @@ struct __pmtrans_t unsigned char state; FStringList targets; FList syncpkgs; - FStringList skiplist; + flib::str_set skiplist; FStringList triggers; private: ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Simplify _pacman_localdb_write* internal API by using specialisation.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=f449a11c3e3f649018abe274854d7e716eba6373 commit f449a11c3e3f649018abe274854d7e716eba6373 Author: Michel Hermier Date: Mon Oct 27 11:00:18 2014 +0100 libpacman: Simplify _pacman_localdb_write* internal API by using specialisation. diff --git a/lib/libpacman/db/localdb.cpp b/lib/libpacman/db/localdb.cpp index 83c762b..66157ee 100644 --- a/lib/libpacman/db/localdb.cpp +++ b/lib/libpacman/db/localdb.cpp @@ -369,7 +369,7 @@ package_ptr LocalDatabase::scan(const char *target, unsigned int inforeq) } static -void _pacman_localdb_write_string(const char *entry, const char *value, FILE *stream) +void _pacman_localdb_write(const char *entry, const char *value, FILE *stream) { if(!_pacman_strempty(value)) { fprintf(stream, "%%%s%%\n%s\n\n", entry, value); @@ -377,7 +377,7 @@ void _pacman_localdb_write_string(const char *entry, const char *value, FILE *st } static -void _pacman_localdb_write_stringlist(const char *entry, const FStringList &values, FILE *stream) +void _pacman_localdb_write(const char *entry, const FStringList &values, FILE *stream) { if(!values.empty()) { fprintf(stream, "%%%s%%\n", entry); @@ -411,19 +411,19 @@ int LocalDatabase::write(package_ptr info, unsigned int inforeq) retval = 1; goto cleanup; } - _pacman_localdb_write_string("NAME", info->name(), fp); - _pacman_localdb_write_string("VERSION", info->version(), fp); + _pacman_localdb_write("NAME", info->name(), fp); + _pacman_localdb_write("VERSION", info->version(), fp); if(info->description()[0]) { - _pacman_localdb_write_stringlist("DESC", info->desc_localized, fp); + _pacman_localdb_write("DESC", info->desc_localized, fp); } - _pacman_localdb_write_stringlist("GROUPS", info->groups(), fp); - _pacman_localdb_write_string("URL", info->url(), fp); - _pacman_localdb_write_stringlist("LICENSE", info->license, fp); - _pacman_localdb_write_string("ARCH", info->arch, fp); - _pacman_localdb_write_string("BUILDDATE", info->builddate, fp); - _pacman_localdb_write_string("BUILDTYPE", info->buildtype, fp); - _pacman_localdb_write_string("INSTALLDATE", info->installdate, fp); - _pacman_localdb_write_string("PACKAGER", info->packager, fp); + _pacman_localdb_write("GROUPS", info->groups(), fp); + _pacman_localdb_write("URL", info->url(), fp); + _pacman_localdb_write("LICENSE", info->license, fp); + _pacman_localdb_write("ARCH", info->arch, fp); + _pacman_localdb_write("BUILDDATE", info->builddate, fp); + _pacman_localdb_write("BUILDTYPE", info->buildtype, fp); + _pacman_localdb_write("INSTALLDATE", info->installdate, fp); + _pacman_localdb_write("PACKAGER", info->packager, fp); if(info->size) { fprintf(fp, "%%SIZE%%\n" "%ld\n\n", info->size); @@ -432,7 +432,7 @@ int LocalDatabase::write(package_ptr info, unsigned int inforeq) fprintf(fp, "%%REASON%%\n" "%d\n\n", info->reason()); } - _pacman_localdb_write_stringlist("TRIGGERS", info->triggers(), fp); + _pacman_localdb_write("TRIGGERS", info->triggers(), fp); fclose(fp); fp = NULL; } @@ -445,8 +445,8 @@ int LocalDatabase::write(package_ptr info, unsigned int inforeq) retval = -1; goto cleanup; } - _pacman_localdb_write_stringlist("FILES", info->files(), fp); - _pacman_localdb_write_stringlist("BACKUP", info->backup(), fp); + _pacman_localdb_write("FILES", info->files(), fp); + _pacman_localdb_write("BACKUP", info->backup(), fp); fclose(fp); fp = NULL; } @@ -459,10 +459,10 @@ int LocalDatabase::write(package_ptr info, unsigned int inforeq) retval = -1; goto cleanup; } - _pacman_localdb_write_stringlist("DEPENDS", info->depends(), fp); - _pacman_localdb_write_stringlist("REQUIREDBY", info->requiredby(), fp); - _pacman_localdb_write_stringlist("CONFLICTS", info->conflicts(), fp); - _pacman_localdb_write_stringlist("PROVIDES", info->provides(), fp); + _pacman_localdb_write("DEPENDS", info->depends(), fp); + _pacman_localdb_write("REQUIREDBY", info->requiredby(), fp); + _pacman_localdb_write("CONFLICTS", info->conflicts(), fp); + _pacman_localdb_write("PROVIDES", info->provides(), fp); fclose(fp); fp = NULL; } ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Rename flib::refcounted_ptr to refcounted_shared_ptr.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=942fa53e37c416c4fa2dd479a8ee8474a8bea4ca commit 942fa53e37c416c4fa2dd479a8ee8474a8bea4ca Author: Michel Hermier Date: Sat Nov 1 09:22:24 2014 +0100 libpacman: Rename flib::refcounted_ptr to refcounted_shared_ptr. diff --git a/lib/libpacman/kernel/frefcounted.h b/lib/libpacman/kernel/frefcounted.h index 71fef3a..32ebefa 100644 --- a/lib/libpacman/kernel/frefcounted.h +++ b/lib/libpacman/kernel/frefcounted.h @@ -65,60 +65,60 @@ namespace flib }; template - class refcounted_ptr + class refcounted_shared_ptr { public: typedef T element_type; - constexpr refcounted_ptr() - : refcounted_ptr(nullptr) + constexpr refcounted_shared_ptr() + : refcounted_shared_ptr(nullptr) { } - constexpr refcounted_ptr(std::nullptr_t) + constexpr refcounted_shared_ptr(std::nullptr_t) : m_refcounted_ptr(nullptr) { } template - explicit refcounted_ptr(Y *ptr) - : refcounted_ptr() + explicit refcounted_shared_ptr(Y *ptr) + : refcounted_shared_ptr() { reset(ptr); } template - refcounted_ptr(const refcounted_ptr &o) - : refcounted_ptr(o.m_refcounted_ptr) + refcounted_shared_ptr(const refcounted_shared_ptr &o) + : refcounted_shared_ptr(o.m_refcounted_ptr) { } - refcounted_ptr(const refcounted_ptr &o) - : refcounted_ptr(o.m_refcounted_ptr) + refcounted_shared_ptr(const refcounted_shared_ptr &o) + : refcounted_shared_ptr(o.m_refcounted_ptr) { } - refcounted_ptr(refcounted_ptr &&o) - : refcounted_ptr() + refcounted_shared_ptr(refcounted_shared_ptr &&o) + : refcounted_shared_ptr() { swap(o); } - ~refcounted_ptr() + ~refcounted_shared_ptr() { reset(); } template - refcounted_ptr &operator = (const refcounted_ptr &o) + refcounted_shared_ptr &operator = (const refcounted_shared_ptr &o) { reset(o.m_refcounted_ptr); return *this; } - refcounted_ptr &operator = (const refcounted_ptr &o) + refcounted_shared_ptr &operator = (const refcounted_shared_ptr &o) { reset(o.m_refcounted_ptr); return *this; } - refcounted_ptr &operator = (refcounted_ptr &&o) + refcounted_shared_ptr &operator = (refcounted_shared_ptr &&o) { swap(o); return *this; @@ -142,7 +142,7 @@ namespace flib m_refcounted_ptr = ptr; } - void swap(refcounted_ptr &o) + void swap(refcounted_shared_ptr &o) { std::swap(m_refcounted_ptr, o.m_refcounted_ptr); } @@ -179,25 +179,25 @@ namespace flib }; template - bool operator == (const refcounted_ptr &lhs, const refcounted_ptr &rhs) + bool operator == (const refcounted_shared_ptr &lhs, const refcounted_shared_ptr &rhs) { return lhs.get() == rhs.get(); } template - bool operator == (const refcounted_ptr &lhs, std::nullptr_t rhs) + bool operator == (const refcounted_shared_ptr &lhs, std::nullptr_t rhs) { return lhs.get() == rhs; } template - bool operator != (const refcounted_ptr &lhs, const refcounted_ptr &rhs) + bool operator != (const refcounted_shared_ptr &lhs, const refcounted_shared_ptr &rhs) { return lhs.get() != rhs.get(); } template - bool operator != (const refcounted_ptr &lhs, std::nullptr_t rhs) + bool operator != (const refcounted_shared_ptr &lhs, std::nullptr_t rhs) { return lhs.get() != rhs; } @@ -206,13 +206,13 @@ namespace flib namespace std { template - bool operator == (nullptr_t lhs, const flib::refcounted_ptr &rhs) + bool operator == (nullptr_t lhs, const flib::refcounted_shared_ptr &rhs) { return lhs == rhs.get(); } template - bool operator != (nullptr_t lhs, const flib::refcounted_ptr &rhs) + bool operator != (nullptr_t lhs, const flib::refcounted_shared_ptr &rhs) { return lhs != rhs.get(); } diff --git a/lib/libpacman/package.h b/lib/libpacman/package.h index 49e9812..5f1dec1 100644 --- a/lib/libpacman/package.h +++ b/lib/libpacman/package.h @@ -176,7 +176,7 @@ public: char *m_path; }; - typedef flib::refcounted_ptr package_ptr; + typedef flib::refcounted_shared_ptr package_ptr; bool operator < (const package_ptr &pkg1, const package_ptr &pkg2); typedef FList package_list; diff --git a/lib/libpacman/package_graph.cpp b/lib/libpacman/package_graph.cpp index 3d95bd5..23034a8 100644 --- a/lib/libpacman/package_graph.cpp +++ b/lib/libpacman/package_graph.cpp @@ -68,4 +68,14 @@ bool libpacman::operator < (const
[Frugalware-git] pacman-g2: libpacman Use flib::str_set to store package files.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=be947fce4f9eb4f0f645775b52b0e7424d970cb9 commit be947fce4f9eb4f0f645775b52b0e7424d970cb9 Author: Michel Hermier Date: Fri Oct 31 08:50:04 2014 +0100 libpacman Use flib::str_set to store package files. diff --git a/lib/libpacman/conflict.cpp b/lib/libpacman/conflict.cpp index cc04672..2aa67e7 100644 --- a/lib/libpacman/conflict.cpp +++ b/lib/libpacman/conflict.cpp @@ -42,6 +42,7 @@ #include #include +using namespace flib; using namespace libpacman; /* Returns a FPtrList* of pmdepmissing_t pointers. @@ -198,14 +199,14 @@ FPtrList pmtrans_t::checkconflicts() * Hooray for set-intersects! * Pre-condition: both lists are sorted! */ -static FStringList chk_fileconflicts(const FStringList &filesA, const FStringList &filesB) +static FStringList chk_fileconflicts(const str_set &filesA, const str_set &filesB) { FStringList ret; auto pA = filesA.begin(), pB = filesB.begin(); while(pA != filesA.end() && pB != filesB.end()) { - const char *strA = *pA; - const char *strB = *pB; + const char *strA = pA->c_str(); + const char *strB = pB->c_str(); /* skip directories, we don't care about dir conflicts */ if(strA[strlen(strA)-1] == '/') { ++pA; @@ -275,7 +276,7 @@ FPtrList pmtrans_t::find_conflicts() dbpkg = NULL; auto &files = p->files(); for(auto j = files.begin(), j_end = files.end(); j != j_end; ++j) { - const char *filestr = *j; + const char *filestr = j->c_str(); snprintf(path, PATH_MAX, "%s%s", root, filestr); /* is this target a file or directory? */ if(path[strlen(path)-1] == '/') { diff --git a/lib/libpacman/db/localdb.cpp b/lib/libpacman/db/localdb.cpp index 66157ee..c16db75 100644 --- a/lib/libpacman/db/localdb.cpp +++ b/lib/libpacman/db/localdb.cpp @@ -142,7 +142,7 @@ int _pacman_localpackage_remove(package_ptr pkg, pmtrans_t *trans, int howmany, for(auto lp = pkg->files().rbegin(), end = pkg->files().rend(); lp != end; ++lp) { int nb = 0; double percent = 0; - const char *file = *lp; + const char *file = lp->c_str(); char *hash_orig = pkg->fileneedbackup(file); if (position != 0) { @@ -377,6 +377,18 @@ void _pacman_localdb_write(const char *entry, const char *value, FILE *stream) } static +void _pacman_localdb_write(const char *entry, const flib::str_set &values, FILE *stream) +{ + if(!values.empty()) { + fprintf(stream, "%%%s%%\n", entry); + for(auto lp = values.begin(), end = values.end(); lp != end; ++lp) { + fprintf(stream, "%s\n", lp->c_str()); + } + fputc('\n', stream); + } +} + +static void _pacman_localdb_write(const char *entry, const FStringList &values, FILE *stream) { if(!values.empty()) { @@ -506,7 +518,7 @@ package_list LocalDatabase::getowners(const char *filename) for(auto i = files.begin(), end = files.end(); i != end; ++i) { char path[PATH_MAX]; - snprintf(path, PATH_MAX, "%s%s", m_handle->root, *i); + snprintf(path, PATH_MAX, "%s%s", m_handle->root, i->c_str()); if(!strcmp(path, rpath)) { ret.add(info); if(rpath[strlen(rpath)-1] != '/') { diff --git a/lib/libpacman/kernel/fstr.cpp b/lib/libpacman/kernel/fstr.cpp index b1c2a82..d91f6f8 100644 --- a/lib/libpacman/kernel/fstr.cpp +++ b/lib/libpacman/kernel/fstr.cpp @@ -213,6 +213,11 @@ bool FStrMatcher::match(const char *str) const return 0; } +bool FStrMatcher::match(const str &s) const +{ + return match(s.c_str()); +} + int f_stringlist_any_match(const FStringList *list, const FStrMatcher *matcher) { #ifndef F_NOCOMPAT diff --git a/lib/libpacman/kernel/fstr.h b/lib/libpacman/kernel/fstr.h index d0a97eb..3c24258 100644 --- a/lib/libpacman/kernel/fstr.h +++ b/lib/libpacman/kernel/fstr.h @@ -122,7 +122,18 @@ public: ~FStrMatcher(); - bool match(const char *str) const; + bool operator () (const char *s) const + { + return match(s); + } + + bool operator () (const flib::str &s) const + { + return match(s); + } + + bool match(const char *s) const; + bool match(const flib::str &s) const; protected: int m_flags; diff --git a/lib/libpacman/package.cpp b/lib/libpacman/package.cpp index ad87ad8..d68c51d 100644 --- a/lib/libpacman/package.cpp +++ b/lib/libpacman/package.cpp @@ -361,7 +361,7 @@ int _pacman_strmatcher_match(const FStrMatcher *strmatcher, const package_ptr &p ((flags & PM_PACKAGE_FLAG_LICENSE) && f_stringlist_any_match(&pkg->license, strmatcher)) || ((flags & PM_PACKAGE_FLAG_REPLACES) && f_stringlist_any_match(&pkg->replaces(), strmatcher)) || ((flags & PM_P
[Frugalware-git] pacman-g2: libpacman: Remove unused fcomparator.h.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=afa8d135fc3d9bfefd0e08659e6e01786911b401 commit afa8d135fc3d9bfefd0e08659e6e01786911b401 Author: Michel Hermier Date: Mon Oct 27 07:54:29 2014 +0100 libpacman: Remove unused fcomparator.h. diff --git a/lib/libpacman/util/fcomparator.h b/lib/libpacman/util/fcomparator.h deleted file mode 100644 index d662b20..000 --- a/lib/libpacman/util/fcomparator.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * fcomparator.h - * - * Copyright (c) 2014 by Michel Hermier - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, - * USA. - */ -#ifndef F_COMPARATOR_H -#define F_COMPARATOR_H - -#include "fmatcher.h" - -template -class FComparator -{ -public: - FComparator() - { } - - virtual ~FComparator() override - { } - - virtual int compare(const T &o) const = 0; - - bool match(const T &o) const override - { - return compare(o) == 0; - } - -protected: - FComparator(const FComparator &o) - { } - - FComparator &operator = (const FComparator &o) - { - return *this; - } -}; - -// FIXME: Add FComparatorList with compare_all - -#endif /* F_COMPARATOR_H */ - -/* vim: set ts=2 sw=2 noet: */ ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Make a more proper interaction with refcounted_ptr in refcounted_shared_ptr.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=03441a04b280b57fe20628122fc6f22a45f594e2 commit 03441a04b280b57fe20628122fc6f22a45f594e2 Author: Michel Hermier Date: Mon Nov 3 08:25:54 2014 +0100 libpacman: Make a more proper interaction with refcounted_ptr in refcounted_shared_ptr. diff --git a/lib/libpacman/kernel/frefcounted.h b/lib/libpacman/kernel/frefcounted.h index 1b05f1e..2eb4386 100644 --- a/lib/libpacman/kernel/frefcounted.h +++ b/lib/libpacman/kernel/frefcounted.h @@ -67,6 +67,9 @@ namespace flib template class refcounted_ptr { + public: + typedef T element_type; + protected: refcounted_ptr() : m_refcounted_ptr(nullptr) @@ -166,7 +169,6 @@ namespace flib { : public refcounted_ptr { public: - typedef T element_type; typedef refcounted_ptr super_type; constexpr refcounted_shared_ptr() @@ -184,14 +186,23 @@ namespace flib { } template - refcounted_shared_ptr(const refcounted_shared_ptr &o) + refcounted_shared_ptr(const refcounted_ptr &o) : refcounted_shared_ptr(o.get()) { } - refcounted_shared_ptr(const refcounted_shared_ptr &o) + refcounted_shared_ptr(const refcounted_ptr &o) : refcounted_shared_ptr(o.get()) { } + template + refcounted_shared_ptr(const refcounted_shared_ptr &o) + : refcounted_shared_ptr(static_cast &>(o)) + { } + + refcounted_shared_ptr(const refcounted_shared_ptr &o) + : refcounted_shared_ptr(static_cast &>(o)) + { } + refcounted_shared_ptr(refcounted_shared_ptr &&o) : refcounted_shared_ptr() { @@ -204,18 +215,29 @@ namespace flib { } template - refcounted_shared_ptr &operator = (const refcounted_shared_ptr &o) + refcounted_shared_ptr &operator = (const refcounted_ptr &o) { reset(o.get()); return *this; } - refcounted_shared_ptr &operator = (const refcounted_shared_ptr &o) + refcounted_shared_ptr &operator = (const refcounted_ptr &o) { reset(o.get()); return *this; } + template + refcounted_shared_ptr &operator = (const refcounted_shared_ptr &o) + { + return operator = (static_cast &>(o)); + } + + refcounted_shared_ptr &operator = (const refcounted_shared_ptr &o) + { + return operator = (static_cast &>(o)); + } + refcounted_shared_ptr &operator = (refcounted_shared_ptr &&o) { swap(o); ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Reorder flib::refcounted_ptr operators.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=bf67db25a28be13cf3d3a939e2f3cff3d038b096 commit bf67db25a28be13cf3d3a939e2f3cff3d038b096 Author: Michel Hermier Date: Mon Nov 3 08:03:35 2014 +0100 libpacman: Reorder flib::refcounted_ptr operators. diff --git a/lib/libpacman/kernel/frefcounted.h b/lib/libpacman/kernel/frefcounted.h index 2412b5d..1b05f1e 100644 --- a/lib/libpacman/kernel/frefcounted.h +++ b/lib/libpacman/kernel/frefcounted.h @@ -120,6 +120,47 @@ namespace flib T *m_refcounted_ptr; }; + template + bool operator == (const refcounted_ptr &lhs, const refcounted_ptr &rhs) + { + return lhs.get() == rhs.get(); + } + + template + bool operator == (const refcounted_ptr &lhs, std::nullptr_t rhs) + { + return lhs.get() == rhs; + } + + template + bool operator != (const refcounted_ptr &lhs, const refcounted_ptr &rhs) + { + return lhs.get() != rhs.get(); + } + + template + bool operator != (const refcounted_ptr &lhs, std::nullptr_t rhs) + { + return lhs.get() != rhs; + } +} // namespace flib + +namespace std +{ + template + bool operator == (nullptr_t lhs, const flib::refcounted_ptr &rhs) + { + return lhs == rhs.get(); + } + + template + bool operator != (nullptr_t lhs, const flib::refcounted_ptr &rhs) + { + return lhs != rhs.get(); + } +} // namespace std + +namespace flib { template class refcounted_shared_ptr : public refcounted_ptr @@ -204,47 +245,8 @@ namespace flib super_type::swap(o); } }; - - template - bool operator == (const refcounted_ptr &lhs, const refcounted_ptr &rhs) - { - return lhs.get() == rhs.get(); - } - - template - bool operator == (const refcounted_ptr &lhs, std::nullptr_t rhs) - { - return lhs.get() == rhs; - } - - template - bool operator != (const refcounted_ptr &lhs, const refcounted_ptr &rhs) - { - return lhs.get() != rhs.get(); - } - - template - bool operator != (const refcounted_ptr &lhs, std::nullptr_t rhs) - { - return lhs.get() != rhs; - } } // namespace flib -namespace std -{ - template - bool operator == (nullptr_t lhs, const flib::refcounted_ptr &rhs) - { - return lhs == rhs.get(); - } - - template - bool operator != (nullptr_t lhs, const flib::refcounted_ptr &rhs) - { - return lhs != rhs.get(); - } -} // namespace std - #endif /* FREFCOUNTED_H */ /* vim: set ts=2 sw=2 noet: */ ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Add small flib::str_set class wrapper.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=b3587889e0ce6b34ca5779e762ad2d2bebad6748 commit b3587889e0ce6b34ca5779e762ad2d2bebad6748 Author: Michel Hermier Date: Mon Oct 27 10:16:28 2014 +0100 libpacman: Add small flib::str_set class wrapper. diff --git a/lib/libpacman/util/fstrset.h b/lib/libpacman/util/fstrset.h new file mode 100644 index 000..b8e0a0e --- /dev/null +++ b/lib/libpacman/util/fstrset.h @@ -0,0 +1,39 @@ +/* + * fstrset.h + * + * Copyright (c) 2014 by Michel Hermier + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + * USA. + */ +#ifndef F_STRSET_H +#define F_STRSET_H + +#include "kernel/fstr.h" +#include "util/fset.h" + +namespace flib +{ + class str_set + : public set + { + public: + using set::set; + }; +} // namespace flib + +#endif /* F_STRSET_H */ + +/* vim: set ts=2 sw=2 noet: */ ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Move package graph code to its own class.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=c3df55fcf29e4f741abd15261e4c3b65dec3f59c commit c3df55fcf29e4f741abd15261e4c3b65dec3f59c Author: Michel Hermier Date: Mon Oct 27 10:44:19 2014 +0100 libpacman: Move package graph code to its own class. diff --git a/lib/libpacman/CMakeLists.txt b/lib/libpacman/CMakeLists.txt index c196048..7989e83 100644 --- a/lib/libpacman/CMakeLists.txt +++ b/lib/libpacman/CMakeLists.txt @@ -60,6 +60,7 @@ set(LIBPACMAN_SOURCES group.cpp handle.cpp package.cpp + package_graph.cpp packages_transaction.cpp pacman.cpp server.cpp diff --git a/lib/libpacman/handle.h b/lib/libpacman/handle.h index ed504fd..a205f8d 100644 --- a/lib/libpacman/handle.h +++ b/lib/libpacman/handle.h @@ -29,6 +29,7 @@ #include "io/ffilelock.h" #include "package.h" +#include "package_graph.h" #include "trans.h" #include "kernel/fobject.h" diff --git a/lib/libpacman/package.cpp b/lib/libpacman/package.cpp index 55daac4..ad87ad8 100644 --- a/lib/libpacman/package.cpp +++ b/lib/libpacman/package.cpp @@ -390,26 +390,4 @@ bool PackageMatcher::match(const package_ptr package, int mask) const return _pacman_strmatcher_match(m_strmatcher, package, m_flags & mask); } -package_node::package_node(const str &name) - : m_name(name) // PKG_NAME_LEN -{ } - -package_node::~package_node() -{ } - -bool package_node::operator < (const package_node &o) const -{ - return m_name < o.m_name; -} - -const str &package_node::name() const -{ - return m_name; -} - -bool libpacman::operator < (const libpacman::package_node_ptr &pn1, const libpacman::package_node_ptr &pn2) -{ - return pn1->name() < pn2->name(); -} - /* vim: set ts=2 sw=2 noet: */ diff --git a/lib/libpacman/package.h b/lib/libpacman/package.h index b5dae10..915a27f 100644 --- a/lib/libpacman/package.h +++ b/lib/libpacman/package.h @@ -195,33 +195,6 @@ private: int m_flags; FStrMatcher m_strmatcher_internal; }; - - class package_node - : public flib::refcounted - { - public: - package_node(const flib::str &name); - ~package_node(); - bool operator < (const package_node &o) const; - - const flib::str &name() const; - - private: - flib::str m_name; - libpacman::package_set m_packages; - }; - - typedef flib::refcounted_ptr package_node_ptr; - bool operator < (const package_node_ptr &pn1, const package_node_ptr &pn2); - - typedef flib::set package_node_set; - - class package_graph - : package_node_set - { - public: - using package_node_set::package_node_set; - }; } // namespace libpacman const libpacman::package_ptr _pacman_pkg_isin(const char *needle, const libpacman::package_list &haystack); diff --git a/lib/libpacman/package_graph.cpp b/lib/libpacman/package_graph.cpp new file mode 100644 index 000..3d95bd5 --- /dev/null +++ b/lib/libpacman/package_graph.cpp @@ -0,0 +1,71 @@ +/* + * package.c + * + * Copyright (c) 2014 by Michel Hermier + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + * USA. + */ + +#include "config.h" + +/* pacman-g2 */ +#include "package.h" + +#include "db/localdb_files.h" +#include "util.h" +#include "error.h" +#include "db.h" +#include "deps.h" +#include "handle.h" +#include "pacman.h" +#include "versioncmp.h" + +#include "io/archive.h" +#include "util/log.h" +#include "fstdlib.h" +#include "fstring.h" + +#include +#include +#include +#include + +using namespace flib; +using namespace libpacman; + +package_node::package_node(const str &name) + : m_name(name) // PKG_NAME_LEN +{ } + +package_node::~package_node() +{ } + +bool package_node::operator < (const package_node &o) const +{ + return m_name < o.m_name; +} + +const str &package_node::name() const +{ + return m_name; +} + +bool libpacman::operator < (const libpacman::package_node_ptr &pn1, const libpacman::
[Frugalware-git] pacman-g2: libpacman: Make refcounted_ptr a base class of refcounted_shared_ptr.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=f35e3a39c956fcfe2ffcefe0594375f8d70bb1ec commit f35e3a39c956fcfe2ffcefe0594375f8d70bb1ec Author: Michel Hermier Date: Mon Nov 3 08:00:39 2014 +0100 libpacman: Make refcounted_ptr a base class of refcounted_shared_ptr. diff --git a/lib/libpacman/kernel/frefcounted.h b/lib/libpacman/kernel/frefcounted.h index 4340196..2412b5d 100644 --- a/lib/libpacman/kernel/frefcounted.h +++ b/lib/libpacman/kernel/frefcounted.h @@ -65,33 +65,90 @@ namespace flib }; template + class refcounted_ptr + { + protected: + refcounted_ptr() + : m_refcounted_ptr(nullptr) + { } + + /* Manipulators */ + template + void reset(Y *refcounted_ptr) + { + m_refcounted_ptr = refcounted_ptr; + } + + public: + /* Accessors */ + T *get() const + { + return m_refcounted_ptr; + } + + T &operator * () const + { + return *operator -> (); + } + + T *operator -> () const + { + assert(m_refcounted_ptr != nullptr); + return get(); + } + + explicit operator T * () const + { + return get(); + } + + operator bool () const + { + return m_refcounted_ptr != nullptr; + } + + protected: + void swap(refcounted_ptr &o) + { + std::swap(m_refcounted_ptr, o.m_refcounted_ptr); + } + + private: + refcounted_ptr(const refcounted_ptr &o); + refcounted_ptr &operator = (const refcounted_ptr &o); + + T *m_refcounted_ptr; + }; + + template class refcounted_shared_ptr + : public refcounted_ptr { public: typedef T element_type; + typedef refcounted_ptr super_type; constexpr refcounted_shared_ptr() : refcounted_shared_ptr(nullptr) { } constexpr refcounted_shared_ptr(std::nullptr_t) - : m_refcounted_ptr(nullptr) { } template - explicit refcounted_shared_ptr(Y *ptr) + explicit refcounted_shared_ptr(Y *refcounted_ptr) : refcounted_shared_ptr() { - reset(ptr); + reset(refcounted_ptr); } template refcounted_shared_ptr(const refcounted_shared_ptr &o) - : refcounted_shared_ptr(o.m_refcounted_ptr) + : refcounted_shared_ptr(o.get()) { } refcounted_shared_ptr(const refcounted_shared_ptr &o) - : refcounted_shared_ptr(o.m_refcounted_ptr) + : refcounted_shared_ptr(o.get()) { } refcounted_shared_ptr(refcounted_shared_ptr &&o) @@ -108,13 +165,13 @@ namespace flib template refcounted_shared_ptr &operator = (const refcounted_shared_ptr &o) { - reset(o.m_refcounted_ptr); + reset(o.get()); return *this; } refcounted_shared_ptr &operator = (const refcounted_shared_ptr &o) { - reset(o.m_refcounted_ptr); + reset(o.get()); return *this; } @@ -133,71 +190,41 @@ namespace flib template void reset(Y *ptr) { - if(m_refcounted_ptr != nullptr) { - m_refcounted_ptr->release(); + if(super_type::get() != nullptr) { + super_type::get()->release(); } if(ptr != nullptr) { ptr->acquire(); } - m_refcounted_ptr = ptr; + super_type::reset(ptr); } void swap(refcounted_shared_ptr &o) { - std::swap(m_refcounted_ptr, o.m_refcounted_ptr); - } - - /* Accessors */ - T *get() const - { - return m_refcounted_ptr; - } - - T &operator * () const - { - return *operator -> (); - } - - T *operator -> () const - { - assert(m_refcounted_ptr != nullptr); - return get(); - } - - explicit operator T * () const - { - return get(); - } - - operator bool () const - { - return m_refcounted_ptr != nullptr; + super_type::swap(o); } - - private: - T *m_refcounted_ptr; }; template - bool operator == (const refcounted_shared_ptr &lhs, const r
[Frugalware-git] pacman-g2: libpacman: Add basic C string like class.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=c7c3ca5fe511a68a3155fb35c8f8fd640e966fd9 commit c7c3ca5fe511a68a3155fb35c8f8fd640e966fd9 Author: Michel Hermier Date: Mon Oct 27 08:34:06 2014 +0100 libpacman: Add basic C string like class. diff --git a/lib/libpacman/kernel/fstr.cpp b/lib/libpacman/kernel/fstr.cpp index 2fa43d1..61df894 100644 --- a/lib/libpacman/kernel/fstr.cpp +++ b/lib/libpacman/kernel/fstr.cpp @@ -24,6 +24,140 @@ #include "fstring.h" #include "util/fstringlist.h" +using namespace flib; + +str::str(const char *s) + : str() +{ + reset(s); +} + +str::str(const str &o) + : str(o.m_str) +{ } + +str::str(str &&o) + : str() +{ + swap(o); +} + +str::~str() +{ + reset(); +} + +str &str::operator = (const str &o) +{ + reset(o.m_str); + return *this; +} + +str &str::operator = (str &&o) +{ + swap(o); + return *this; +} + +str str::create(char *s) +{ + str ret; + ret.m_str = s; + return ret; +} + +str str::create(const char *s) +{ + return str(s); +} + +str str::format(const char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + str ret = vformat(fmt, ap); + va_end(ap); + return ret; +} + +str str::vformat(const char *fmt, va_list ap) +{ + char *dest; + + vasprintf(&dest, fmt, ap); + return create(dest); +} + +const char *str::data() const +{ + if (empty()) { + return ""; + } + return m_str; +} + +str::size_type str::size() const +{ + if(!empty()) { + return strlen(m_str); + } + return 0; +} + +int str::compare(const str &s) const +{ + return strcmp(c_str(), s.c_str()); +} + +void str::reset(const char *s) +{ + if(m_str != nullptr) { + free(m_str); + } + m_str = strdup(s); +} + +void str::swap(str &o) +{ + std::swap(m_str, o.m_str); +} + +bool flib::operator == (const str &lhs, const str &rhs) +{ + return lhs.compare(rhs) == 0; +} + +bool flib::operator == (const str &lhs, std::nullptr_t rhs) +{ + return lhs.compare(str(rhs)) == 0; +} + +bool flib::operator != (const str &lhs, const str &rhs) +{ + return !(lhs == rhs); +} + +bool flib::operator != (const str &lhs, std::nullptr_t rhs) +{ + return !(lhs == rhs); +} + +bool flib::operator < (const str &lhs, const str &rhs) +{ + return lhs.compare(rhs) < 0; +} + +bool std::operator == (nullptr_t lhs, const flib::str &rhs) +{ + return rhs == lhs; +} + +bool std::operator != (nullptr_t lhs, const flib::str &rhs) +{ + return rhs != lhs; +} + FStrMatcher::FStrMatcher() : m_flags(0), m_str(NULL) { } diff --git a/lib/libpacman/kernel/fstr.h b/lib/libpacman/kernel/fstr.h index b482d05..d0a97eb 100644 --- a/lib/libpacman/kernel/fstr.h +++ b/lib/libpacman/kernel/fstr.h @@ -23,8 +23,85 @@ #include "fstring.h" +#include "util/flist.h" + +#include #include +namespace flib { + class str + { + public: + typedef size_t size_type; + + static str create(char *s); + static str create(const char *s); + static str format(const char *fmt, ...); + static str vformat(const char *fmt, va_list ap); + + constexpr str() + : str(nullptr) + { } + + constexpr str(std::nullptr_t n) + : m_str(n) + { } + + str(const char *s); + str(const str &o); + str(str &&o); + ~str(); + + str &operator = (const str &o); + str &operator = (str &&o); + + explicit operator const char * () + { + return m_str; + } + + /* Element access */ + const char *c_str() const + { + return data(); + } + + const char *data() const; + + /* Capacity */ + bool empty() const + { + return m_str == nullptr || m_str[0] == '\0'; + } + + size_type length() const + { + return size(); + } + + size_type size() const; + + /* Operations */ + int compare(const str &str) const; + void reset(const char *s = nullptr); + void swap(str &o); + + private: + char *m_str; + }; + + bool operator == (const str &lhs, const str &rhs); + bool operator == (const str &lhs, std::nullptr_t rhs); + bool operator != (const str &lhs, const str &
[Frugalware-git] pacman-g2: libpacman: Fix flib::find.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=12d98380e7bdabefee0b0d90f972e7eb608c6660 commit 12d98380e7bdabefee0b0d90f972e7eb608c6660 Author: Michel Hermier Date: Mon Oct 27 07:40:04 2014 +0100 libpacman: Fix flib::find. diff --git a/lib/libpacman/util/falgorithm.h b/lib/libpacman/util/falgorithm.h index b6e4b24..28b2801 100644 --- a/lib/libpacman/util/falgorithm.h +++ b/lib/libpacman/util/falgorithm.h @@ -68,8 +68,8 @@ namespace flib template InputIterator find(InputIterator first, InputIterator last, const T &val) { - return find(first, last, - [&] (const typename InputIterator::reference o) -> bool + return find_if(first, last, + [&] (const typename InputIterator::value_type &o) -> bool { return o == val; }); } ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Reduce visibility stress in the compiler in package class.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=891d1ec6fb1595a3d0944c99d00b50892db37410 commit 891d1ec6fb1595a3d0944c99d00b50892db37410 Author: Michel Hermier Date: Wed Oct 22 07:54:36 2014 +0200 libpacman: Reduce visibility stress in the compiler in package class. diff --git a/lib/libpacman/package.h b/lib/libpacman/package.h index d8c40a7..1216d8d 100644 --- a/lib/libpacman/package.h +++ b/lib/libpacman/package.h @@ -95,12 +95,10 @@ namespace libpacman { class package : public ::flib::FObject { +public: #define LIBPACMAN_PACKAGE_PROPERTY(type, name, flag) \ -public: \ type name(); - #include "package_properties.h" - #undef LIBPACMAN_PACKAGE_PROPERTY public: ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Remove some unused variables/functions.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=d085c009e9425f82109ec1f85bd3adba9a1d9dd2 commit d085c009e9425f82109ec1f85bd3adba9a1d9dd2 Author: Michel Hermier Date: Wed Oct 22 08:06:17 2014 +0200 libpacman: Remove some unused variables/functions. diff --git a/lib/libpacman/trans.cpp b/lib/libpacman/trans.cpp index 76730ee..ff60957 100644 --- a/lib/libpacman/trans.cpp +++ b/lib/libpacman/trans.cpp @@ -208,12 +208,8 @@ int _pacman_syncpkg_cmp(const void *s1, const void *s2) return(strcmp(((pmsyncpkg_t *)s1)->pkg_name, ((pmsyncpkg_t *)s2)->pkg_name)); } -static int pkg_cmp(const void *p1, const void *p2) -{ - return(strcmp(((package *)p1)->name(), ((pmsyncpkg_t *)p2)->pkg_name)); -} - -static int check_olddelay(Handle *handle) +static +int check_olddelay(Handle *handle) { Timestamp tm; @@ -470,10 +466,6 @@ int __pmtrans_t::prepare(FPtrList **data) _pacman_trans_compute_triggers(this); if(m_type == PM_TRANS_TYPE_SYNC) { - for(auto i = syncpkgs.begin(), end = syncpkgs.end(); i != end; ++i) { - pmsyncpkg_t *ps = *i; - } - if(!(flags & PM_TRANS_FLAG_NODEPS)) { /* Resolve targets dependencies */ if(resolvedeps(data) == -1) { @@ -1659,7 +1651,6 @@ int __pmtrans_t::commit(FPtrList **data) for(auto lp = depends.begin(), lp_end = depends.end(); lp != lp_end; ++lp) { package_ptr depinfo = NULL; pmdepend_t depend; - char *data; if(_pacman_splitdep(*lp, &depend)) { continue; } ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Remove FMatcher.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=e39631ea196c6c3fcd2c8700152e4891395d78c9 commit e39631ea196c6c3fcd2c8700152e4891395d78c9 Author: Michel Hermier Date: Tue Oct 21 15:10:23 2014 +0200 libpacman: Remove FMatcher. diff --git a/lib/libpacman/kernel/fstr.h b/lib/libpacman/kernel/fstr.h index a249527..b482d05 100644 --- a/lib/libpacman/kernel/fstr.h +++ b/lib/libpacman/kernel/fstr.h @@ -23,14 +23,11 @@ #include "fstring.h" -#include "util/fmatcher.h" - #include class FStringList; -class FStrMatcher - : public FMatcher +class FStrMatcher final { public: enum { @@ -48,7 +45,7 @@ public: ~FStrMatcher(); - virtual bool match(const char *str) const override; + bool match(const char *str) const; protected: int m_flags; diff --git a/lib/libpacman/util/fcomparator.h b/lib/libpacman/util/fcomparator.h index 8e82dfa..d662b20 100644 --- a/lib/libpacman/util/fcomparator.h +++ b/lib/libpacman/util/fcomparator.h @@ -25,7 +25,6 @@ template class FComparator - : public FMatcher { public: FComparator() diff --git a/lib/libpacman/util/fmatcher.h b/lib/libpacman/util/fmatcher.h deleted file mode 100644 index ebb8c34..000 --- a/lib/libpacman/util/fmatcher.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * fmatcher.h - * - * Copyright (c) 2014 by Michel Hermier - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, - * USA. - */ -#ifndef F_MATCHER_H -#define F_MATCHER_H - -#include "fstdlib.h" -#include "util.h" - -template -class FMatcher -{ -public: - FMatcher() - { } - - virtual ~FMatcher() - { } - - virtual bool match(T data) const = 0; - -protected: - FMatcher(const FMatcher &o) - { } - - FMatcher &operator = (const FMatcher &o) - { - return *this; - } -}; - -namespace flib -{ - template - bool match(const T &val, const FMatcher &matcher) - { - return flib::match(matcher, val); - } - - template - bool match(const FMatcher &matcher, const U &val) - { - return matcher.match(val); - } -} - -#endif /* F_MATCHER_H */ - -/* vim: set ts=2 sw=2 noet: */ ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Add operator < for package_ptr & package_node_ptr.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=62b941ef00c0ac01f2b938045b17c3904977c1b3 commit 62b941ef00c0ac01f2b938045b17c3904977c1b3 Author: Michel Hermier Date: Tue Oct 21 15:29:53 2014 +0200 libpacman: Add operator < for package_ptr & package_node_ptr. diff --git a/lib/libpacman/package.cpp b/lib/libpacman/package.cpp index a8222c2..a119579 100644 --- a/lib/libpacman/package.cpp +++ b/lib/libpacman/package.cpp @@ -423,4 +423,14 @@ bool package_node_less::operator () (const package_node *p1, const package_node return strcmp(p1->name(), p2->name()) < 0; } +bool operator < (const libpacman::package_ptr &pkg1, const libpacman::package_ptr &pkg2) +{ + return strcmp(pkg1->name(), pkg2->name()) < 0; +} + +bool operator < (const libpacman::package_node_ptr &pn1, const libpacman::package_node_ptr &pn2) +{ + return strcmp(pn1->name(), pn2->name()) < 0; +} + /* vim: set ts=2 sw=2 noet: */ diff --git a/lib/libpacman/package.h b/lib/libpacman/package.h index 4846d12..69fa218 100644 --- a/lib/libpacman/package.h +++ b/lib/libpacman/package.h @@ -233,6 +233,9 @@ private: }; } // namespace libpacman +bool operator < (const libpacman::package_ptr &pkg1, const libpacman::package_ptr &pkg2); +bool operator < (const libpacman::package_node_ptr &pn1, const libpacman::package_node_ptr &pn2); + const libpacman::package_ptr _pacman_pkg_isin(const char *needle, const libpacman::package_list &haystack); #endif /* _PACMAN_PACKAGE_H */ ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Introduce package_ptr abstraction, will be a refcounted_ptr in the future.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=1bfcf55796595d334c00778d53c1b346998521c6 commit 1bfcf55796595d334c00778d53c1b346998521c6 Author: Michel Hermier Date: Sat Oct 18 12:10:12 2014 +0200 libpacman: Introduce package_ptr abstraction, will be a refcounted_ptr in the future. diff --git a/lib/libpacman/database_cache.cpp b/lib/libpacman/database_cache.cpp index 5983b53..e498ea9 100644 --- a/lib/libpacman/database_cache.cpp +++ b/lib/libpacman/database_cache.cpp @@ -56,7 +56,7 @@ int _pacman_db_load_grpcache(Database *db); static int _pacman_db_load_pkgcache(Database *db) { - Package *info; + package_ptr info; ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1)); @@ -99,7 +99,7 @@ libpacman::package_set &Database::get_packages() return pkgcache; } -int Database::add_pkgincache(Package *pkg) +int Database::add_pkgincache(package_ptr pkg) { if(pkg == NULL) { return(-1); @@ -114,7 +114,7 @@ int Database::add_pkgincache(Package *pkg) return(0); } -int Database::remove_pkgfromcache(Package *pkg) +int Database::remove_pkgfromcache(package_ptr pkg) { if(pkg == NULL) { return(-1); @@ -162,7 +162,7 @@ int _pacman_db_load_grpcache(Database *db) _pacman_log(PM_LOG_DEBUG, _("loading group cache for repository '%s'"), db->treename()); for(auto it = cache.begin(), end = cache.end(); it != end; ++it) { - Package *pkg = *it; + package_ptr pkg = *it; if(!(pkg->flags & INFRQ_DESC)) { pkg->read(INFRQ_DESC); diff --git a/lib/libpacman/db.cpp b/lib/libpacman/db.cpp index 3d14123..84f265c 100644 --- a/lib/libpacman/db.cpp +++ b/lib/libpacman/db.cpp @@ -235,7 +235,7 @@ int Database::rewind() return -1; } -Package *Database::readpkg(unsigned int inforeq) +package_ptr Database::readpkg(unsigned int inforeq) { return NULL; } diff --git a/lib/libpacman/db.h b/lib/libpacman/db.h index a7cfc12..2967331 100644 --- a/lib/libpacman/db.h +++ b/lib/libpacman/db.h @@ -65,14 +65,14 @@ public: /* Package iterator */ virtual int rewind(); - virtual libpacman::Package *readpkg(unsigned int inforeq); - virtual libpacman::Package *scan(const char *target, unsigned int inforeq) = 0; + virtual libpacman::package_ptr readpkg(unsigned int inforeq); + virtual libpacman::package_ptr scan(const char *target, unsigned int inforeq) = 0; virtual int write(libpacman::Package *info, unsigned int inforeq); /* Cache operations */ - int add_pkgincache(libpacman::Package *pkg); - int remove_pkgfromcache(libpacman::Package *pkg); + int add_pkgincache(libpacman::package_ptr pkg); + int remove_pkgfromcache(libpacman::package_ptr pkg); void free_pkgcache(); FList filter(const libpacman::PackageMatcher &packagematcher); diff --git a/lib/libpacman/db/localdb.cpp b/lib/libpacman/db/localdb.cpp index 93a972b..48b2c6f 100644 --- a/lib/libpacman/db/localdb.cpp +++ b/lib/libpacman/db/localdb.cpp @@ -228,13 +228,13 @@ LocalDatabase::~LocalDatabase() } static -LocalPackage *_pacman_localdb_pkg_new(LocalDatabase *db, const struct dirent *dirent, unsigned int inforeq) +package_ptr _pacman_localdb_pkg_new(LocalDatabase *db, const struct dirent *dirent, unsigned int inforeq) { LocalPackage *pkg; const char *dname; - ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, NULL)); - ASSERT(dirent != NULL, return NULL); + ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, nullptr)); + ASSERT(dirent != NULL, return nullptr); dname = dirent->d_name; if((pkg = new LocalPackage(db)) == NULL || @@ -244,7 +244,7 @@ LocalPackage *_pacman_localdb_pkg_new(LocalDatabase *db, const struct dirent *di pkg->release(); pkg = NULL; } - return pkg; + return package_ptr(pkg); } FStringList LocalDatabase::test() const @@ -319,7 +319,7 @@ int LocalDatabase::rewind() return 0; } -Package *LocalDatabase::readpkg(unsigned int inforeq) +package_ptr LocalDatabase::readpkg(unsigned int inforeq) { struct dirent *ent = NULL; struct stat sbuf; @@ -338,7 +338,7 @@ Package *LocalDatabase::readpkg(unsigned int inforeq) return NULL; } -Package *LocalDatabase::scan(const char *target, unsigned int inforeq) +package_ptr LocalDatabase::scan(const char *target, unsigned int inforeq) { struct dirent *ent = NULL; struct stat sbuf; diff --git a/lib/libpacman/db/localdb.h b/lib/libpacman/db/localdb.h index dd4bc44..59d2e29 100644 --- a/lib/libpacman/db/localdb.h +++ b/lib/libpacman/db/localdb.h @@ -56,8 +56,8 @@ public: virtual int close(); virtual int rewind(); - virtual libpacman::Package *readpkg(unsigned int inforeq); - virtual libpacman::Package *scan(const char *target, unsigned int inforeq); + virtual libpacman::package_ptr readpkg(unsigned int inforeq); + virtual libpacman::package_ptr scan(const char *target, unsigned int inforeq); virtual int write(libpacman::Package *info, unsigned int inforeq); diff --git a/lib/libpacman/db/syncdb.cpp b/lib/libpacman/db/syncdb.cpp in
[Frugalware-git] pacman-g2: libpacman: Fix errneous return value in _pacman_fpmpackage_load.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=7b3335a948bac3197e6311151af12c9cd609e6e2 commit 7b3335a948bac3197e6311151af12c9cd609e6e2 Author: Michel Hermier Date: Tue Oct 21 09:49:00 2014 +0200 libpacman: Fix errneous return value in _pacman_fpmpackage_load. diff --git a/lib/libpacman/package/fpmpackage.cpp b/lib/libpacman/package/fpmpackage.cpp index 7db9a5a..ebd5913 100644 --- a/lib/libpacman/package/fpmpackage.cpp +++ b/lib/libpacman/package/fpmpackage.cpp @@ -182,7 +182,7 @@ package_ptr _pacman_fpmpackage_load(const char *pkgfile) char *str; if((str = (char *)malloc(PATH_MAX)) == NULL) { - RET_ERR(PM_ERR_MEMORY, (package_ptr)-1); + RET_ERR(PM_ERR_MEMORY, nullptr); } filelist = _pacman_archive_read_fropen(archive); while(!feof(filelist)) { @@ -227,9 +227,7 @@ error: if(!ret) { archive_read_finish (archive); } - pm_errno = PM_ERR_PKG_CORRUPTED; - - return(NULL); + RET_ERR(PM_ERR_PKG_CORRUPTED, nullptr); } /* vim: set ts=2 sw=2 noet: */ ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Use package_ptr where possible.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=efa637d6f4021768bb3156f583e57f9b7f688928 commit efa637d6f4021768bb3156f583e57f9b7f688928 Author: Michel Hermier Date: Tue Oct 21 00:01:17 2014 +0200 libpacman: Use package_ptr where possible. diff --git a/lib/libpacman/conflict.cpp b/lib/libpacman/conflict.cpp index f413e23..5617527 100644 --- a/lib/libpacman/conflict.cpp +++ b/lib/libpacman/conflict.cpp @@ -50,7 +50,7 @@ using namespace libpacman; */ FPtrList pmtrans_t::checkconflicts() { - Package *info = NULL; + package_ptr info = NULL; FPtrList baddeps; pmdepmissing_t *miss = NULL; int howmany, remain; @@ -64,7 +64,7 @@ FPtrList pmtrans_t::checkconflicts() howmany = syncpkgs.size(); for(auto i = syncpkgs.begin(), end = syncpkgs.end(); i != end; ++i) { - Package *tp = (*i)->pkg_new; + package_ptr tp = (*i)->pkg_new; if(tp == NULL) { continue; } @@ -88,7 +88,7 @@ FPtrList pmtrans_t::checkconflicts() _pacman_log(PM_LOG_DEBUG, _("checkconflicts: targ '%s' vs db"), tp->name()); auto &cache = db_local->get_packages(); for(auto k = cache.begin(), k_end = cache.end(); k != k_end; ++k) { - Package *dp = *k; + package_ptr dp = *k; if(!strcmp(dp->name(), tp->name())) { /* a package cannot conflict with itself -- that's just not nice */ continue; @@ -116,7 +116,7 @@ FPtrList pmtrans_t::checkconflicts() /* CHECK 2: check targets against targets */ _pacman_log(PM_LOG_DEBUG, _("checkconflicts: targ '%s' vs targs"), tp->name()); for(auto k = syncpkgs.begin(), k_end = syncpkgs.end(); k != k_end; ++k) { - Package *otp = (*k)->pkg_new; + package_ptr otp = (*k)->pkg_new; if(!strcmp(otp->name(), tp->name())) { /* a package cannot conflict with itself -- that's just not nice */ continue; @@ -157,7 +157,7 @@ FPtrList pmtrans_t::checkconflicts() * conflicts list from the new package, not the old one (*info) */ for(auto j = syncpkgs.begin(), j_end = syncpkgs.end(); j != j_end; ++j) { - Package *pkg = (*j)->pkg_new; + package_ptr pkg = (*j)->pkg_new; if(!strcmp(pkg->name(), info->name())) { /* Use the new, to-be-installed package's conflicts */ conflicts = &pkg->conflicts(); @@ -235,7 +235,7 @@ FPtrList pmtrans_t::find_conflicts() char path[PATH_MAX+1]; struct stat buf; FPtrList conflicts; - Package *p, *dbpkg; + package_ptr p, dbpkg; double percent; int howmany, remain; Database *db_local = m_handle->db_local; @@ -248,12 +248,12 @@ FPtrList pmtrans_t::find_conflicts() /* CHECK 1: check every target against every target */ for(auto i = syncpkgs.begin(), end = syncpkgs.end(); i != end; ++i) { - Package *p1 = (*i)->pkg_new; + package_ptr p1 = (*i)->pkg_new; remain = flib::count(i, end); percent = (double)(howmany - remain + 1) / howmany; PROGRESS(this, PM_TRANS_PROGRESS_CONFLICTS_START, "", (percent * 100), howmany, howmany - remain + 1); for(auto j = i; j != end; ++j) { - Package *p2 = (*j)->pkg_new; + package_ptr p2 = (*j)->pkg_new; if(strcmp(p1->name(), p2->name())) { auto ret = chk_fileconflicts(p1->files(), p2->files()); for(auto k = ret.begin(), k_end = ret.end(); k != k_end; ++k) { @@ -303,11 +303,10 @@ FPtrList pmtrans_t::find_conflicts() if(!ok) { /* Look at all the targets */ for(auto k = syncpkgs.begin(), k_end = syncpkgs.end(); k != k_end && !ok; ++k) { - Package *p2 = (*k)->pkg_new; + package_ptr p2 = (*k)->pkg_new; /* As long as they're not the current package */ if(strcmp(p2->name(), p->name())) { - Package *dbpkg2 = NULL; - dbpkg2 = db_local->find(p2->name()); + package_ptr dbpkg2(db_local->find(p2->name())); if(dbpkg2 && !(dbpkg2->flags & INFRQ_FILES)) { _pacman_log(PM_LOG_DEBUG, _("loading FILES info for '%s'"), dbpkg2->name()); dbpkg2->read(INFRQ_FILES); diff --git a/lib/libpacman/db.cpp b/lib/libpacman/db.cpp index e572171..db4bf81 100644 --- a/lib/libpacman/db.cpp +++ b/lib/libpacman/db.cpp @@ -98,7 +98,7 @@ package_list Database::filter(const PackageMatcher &packagematcher) auto &cache = get_packages(); for(auto it = cache.begin(), end = cache.end(); it != end; ++it) { - Package *pkg = (Package *)*it; + package_ptr pkg = *it; if(packagematcher.match(pkg)) { ret.add(pkg); @@ -128,7 +128,7 @@
[Frugalware-git] pacman-g2: libpacman: Make package_ptr refcounted.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=8131ef1eb9cd5b5934c780472d9f2074ee496b5b commit 8131ef1eb9cd5b5934c780472d9f2074ee496b5b Author: Michel Hermier Date: Tue Oct 21 14:40:41 2014 +0200 libpacman: Make package_ptr refcounted. diff --git a/lib/libpacman/kernel/frefcounted.h b/lib/libpacman/kernel/frefcounted.h index 32147bb..6ab9f08 100644 --- a/lib/libpacman/kernel/frefcounted.h +++ b/lib/libpacman/kernel/frefcounted.h @@ -90,18 +90,40 @@ namespace flib : refcounted_ptr(o.m_refcounted_ptr) { } + refcounted_ptr(const refcounted_ptr &o) + : refcounted_ptr(o.m_refcounted_ptr) + { } + + refcounted_ptr(refcounted_ptr &&o) + : refcounted_ptr() + { + swap(o); + } + ~refcounted_ptr() { reset(); } template - refcounted_ptr &operator = (const refcounted_ptr &o) + refcounted_ptr &operator = (const refcounted_ptr &o) + { + reset(o.m_refcounted_ptr); + return *this; + } + + refcounted_ptr &operator = (const refcounted_ptr &o) { reset(o.m_refcounted_ptr); return *this; } + refcounted_ptr &operator = (refcounted_ptr &&o) + { + swap(o); + return *this; + } + /* Manipulators */ void reset() { diff --git a/lib/libpacman/package.h b/lib/libpacman/package.h index 38612c6..6524fd8 100644 --- a/lib/libpacman/package.h +++ b/lib/libpacman/package.h @@ -177,11 +177,7 @@ public: char *m_path; }; - #if 0 typedef flib::refcounted_ptr package_ptr; - #else - typedef package *package_ptr; - #endif template struct less; ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Simplify trans_t::syncpkgs.remove calls, no need to use slow _pacman_syncpkg_cmp, we allready got the pointer from the list (this path is still optimisable with
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=e300e952004046ea0f6f9c05b07a8e8efa2640aa commit e300e952004046ea0f6f9c05b07a8e8efa2640aa Author: Michel Hermier Date: Wed Oct 22 10:53:46 2014 +0200 libpacman: Simplify trans_t::syncpkgs.remove calls, no need to use slow _pacman_syncpkg_cmp, we allready got the pointer from the list (this path is still optimisable with iterators though). diff --git a/lib/libpacman/trans.cpp b/lib/libpacman/trans.cpp index ff60957..98867be 100644 --- a/lib/libpacman/trans.cpp +++ b/lib/libpacman/trans.cpp @@ -200,14 +200,6 @@ int _pacman_trans_set_state(pmtrans_t *trans, int new_state) return(0); } -/* Helper functions for _pacman_list_remove - */ -static -int _pacman_syncpkg_cmp(const void *s1, const void *s2) -{ - return(strcmp(((pmsyncpkg_t *)s1)->pkg_name, ((pmsyncpkg_t *)s2)->pkg_name)); -} - static int check_olddelay(Handle *handle) { @@ -587,11 +579,8 @@ int __pmtrans_t::prepare(FPtrList **data) } if(rmpkg) { pmsyncpkg_t *rsync = find(rmpkg); - pmsyncpkg_t *spkg = NULL; - _pacman_log(PM_LOG_FLOW2, _("removing '%s' from target list"), rmpkg); - syncpkgs.remove(rsync, _pacman_syncpkg_cmp, &spkg); - delete spkg; + syncpkgs.remove(rsync); continue; } } @@ -622,11 +611,8 @@ int __pmtrans_t::prepare(FPtrList **data) ps->m_replaces.add(q); if(rsync) { /* remove it from the target list */ - pmsyncpkg_t *spkg = NULL; - _pacman_log(PM_LOG_FLOW2, _("removing '%s' from target list"), miss->depend.name); - syncpkgs.remove(rsync, _pacman_syncpkg_cmp, &spkg); - delete spkg; + syncpkgs.remove(rsync); } } else { /* abort */ diff --git a/lib/libpacman/util/flist.h b/lib/libpacman/util/flist.h index 815e3a9..b028dbe 100644 --- a/lib/libpacman/util/flist.h +++ b/lib/libpacman/util/flist.h @@ -28,9 +28,6 @@ #include -/* Sort comparison callback function declaration */ -typedef int (*_pacman_fn_cmp)(const void *, const void *); - #ifdef __cplusplus #include "util/falgorithm.h" @@ -878,27 +875,6 @@ public: return iterator(newItem); } - bool remove(void *ptr, _pacman_fn_cmp fn, value_type *data) - { - return remove(fn, ptr, data); - } - - bool remove(_pacman_fn_cmp fn, void *ptr, value_type *data = nullptr) - { - for(auto i = c_first(), end = c_end(); i != end; i = i->next()) { - if(fn(ptr, i->m_data) == 0) { - /* we found a matching item */ - i->remove(); - if(data != nullptr) { - *data = i->m_data; - } - delete i; - return true; - } - } - return false; - } - void swap(FList &o) { FCListItem::swap(o); } ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Simplify type declarations in package.h
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=7a01e8db54afcd3c49b6476b33d720c448154f3f commit 7a01e8db54afcd3c49b6476b33d720c448154f3f Author: Michel Hermier Date: Tue Oct 21 15:23:55 2014 +0200 libpacman: Simplify type declarations in package.h diff --git a/lib/libpacman/package.cpp b/lib/libpacman/package.cpp index c8d81ef..a8222c2 100644 --- a/lib/libpacman/package.cpp +++ b/lib/libpacman/package.cpp @@ -93,6 +93,7 @@ bool package::set_filename(const char *filename, int witharch) /* Helper function for comparing packages */ +static int _pacman_pkg_cmp(const package_ptr p1, const package_ptr p2) { package *pkg1 = (package *)p1; diff --git a/lib/libpacman/package.h b/lib/libpacman/package.h index 6524fd8..4846d12 100644 --- a/lib/libpacman/package.h +++ b/lib/libpacman/package.h @@ -178,16 +178,13 @@ public: }; typedef flib::refcounted_ptr package_ptr; - template struct less; - template <> struct less { bool operator () (const package_ptr pkg1, const package_ptr pkg2); }; - typedef FList package_list; typedef flib::set> package_set; @@ -221,12 +218,12 @@ private: libpacman::package_set m_packages; }; + typedef flib::refcounted_ptr package_node_ptr; struct package_node_less { bool operator () (const package_node *p1, const package_node *p2); }; - - typedef flib::set, package_node_less> package_node_set; + typedef flib::set package_node_set; class package_graph : package_node_set @@ -236,7 +233,6 @@ private: }; } // namespace libpacman -int _pacman_pkg_cmp(const libpacman::package pkg1, const libpacman::package_ptr pkg2); const libpacman::package_ptr _pacman_pkg_isin(const char *needle, const libpacman::package_list &haystack); #endif /* _PACMAN_PACKAGE_H */ ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Make refcounted_ptr a little bit more usefull/usable.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=1c317890d22c8b6019aa8542ca5b11876d3479e5 commit 1c317890d22c8b6019aa8542ca5b11876d3479e5 Author: Michel Hermier Date: Sat Oct 18 12:09:07 2014 +0200 libpacman: Make refcounted_ptr a little bit more usefull/usable. diff --git a/lib/libpacman/kernel/frefcounted.h b/lib/libpacman/kernel/frefcounted.h index 64f95ba..c5c9921 100644 --- a/lib/libpacman/kernel/frefcounted.h +++ b/lib/libpacman/kernel/frefcounted.h @@ -71,6 +71,10 @@ namespace flib typedef T element_type; constexpr refcounted_ptr() + : refcounted_ptr(nullptr) + { } + + constexpr refcounted_ptr(std::nullptr_t) : m_refcounted_ptr(nullptr) { } @@ -83,6 +87,11 @@ namespace flib } } + template + refcounted_ptr(const refcounted_ptr &o) + : refcounted_ptr(o.m_refcounted_ptr) + { } + ~refcounted_ptr() { if(m_refcounted_ptr != nullptr) { @@ -90,6 +99,13 @@ namespace flib } } + template + refcounted_ptr &operator = (const refcounted_ptr &o) + { + reset(o.m_refcounted_ptr); + return *this; + } + /* Manipulators */ void reset() { @@ -102,7 +118,7 @@ namespace flib swap(*this, refcounted_ptr(ptr)); } - void swap(refcounted_ptr &o) + void swap(refcounted_ptr &o) { std::swap(m_refcounted_ptr, o.m_refcounted_ptr); } @@ -139,6 +155,18 @@ namespace flib }; } +template +bool operator == (const flib::refcounted_ptr &lhs, const flib::refcounted_ptr &rhs) +{ + return lhs.get() == rhs.get(); +} + +template +bool operator != (const flib::refcounted_ptr &lhs, const flib::refcounted_ptr &rhs) +{ + return lhs.get() != rhs.get(); +} + #endif /* FREFCOUNTED_H */ /* vim: set ts=2 sw=2 noet: */ ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: pacman-g2: Fix uninitialised pointer.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=19aed4319d4bbc87b4ebbb0568c4ec3e9a643bc4 commit 19aed4319d4bbc87b4ebbb0568c4ec3e9a643bc4 Author: Michel Hermier Date: Sun Oct 19 11:14:47 2014 +0200 pacman-g2: Fix uninitialised pointer. diff --git a/src/pacman-g2/sync.c b/src/pacman-g2/sync.c index c3babd2..89dee4e 100644 --- a/src/pacman-g2/sync.c +++ b/src/pacman-g2/sync.c @@ -420,7 +420,7 @@ int syncpkg(FStringList *targets) if(!found) { /* targ not found in sync db, searching for providers... */ PM_PKG *pkg; - char *pname; + char *pname = NULL; for(FPtrListIterator *j = f_ptrlist_first(pmc_syncs), *end = f_ptrlist_end(pmc_syncs); j != end; j = f_ptrlistitem_next(j)) { PM_DB *db = list_data(j); PM_LIST *k = pacman_db_whatprovides(db, targ); ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Fix up operators so that the compiler find them.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=bea74a0abf0357e99ece870d710fb0f33d79fe59 commit bea74a0abf0357e99ece870d710fb0f33d79fe59 Author: Michel Hermier Date: Wed Oct 22 07:51:49 2014 +0200 libpacman: Fix up operators so that the compiler find them. diff --git a/lib/libpacman/kernel/frefcounted.h b/lib/libpacman/kernel/frefcounted.h index 68f7a5e..71fef3a 100644 --- a/lib/libpacman/kernel/frefcounted.h +++ b/lib/libpacman/kernel/frefcounted.h @@ -160,7 +160,7 @@ namespace flib T *operator -> () const { - assert(*this); + assert(m_refcounted_ptr != nullptr); return get(); } @@ -177,43 +177,46 @@ namespace flib private: T *m_refcounted_ptr; }; -} -template -bool operator == (const flib::refcounted_ptr &lhs, const flib::refcounted_ptr &rhs) -{ - return lhs.get() == rhs.get(); -} + template + bool operator == (const refcounted_ptr &lhs, const refcounted_ptr &rhs) + { + return lhs.get() == rhs.get(); + } -template -bool operator == (const flib::refcounted_ptr &lhs, std::nullptr_t rhs) -{ - return lhs.get() == rhs; -} + template + bool operator == (const refcounted_ptr &lhs, std::nullptr_t rhs) + { + return lhs.get() == rhs; + } -template -bool operator == (std::nullptr_t lhs, const flib::refcounted_ptr &rhs) -{ - return lhs == rhs.get(); -} + template + bool operator != (const refcounted_ptr &lhs, const refcounted_ptr &rhs) + { + return lhs.get() != rhs.get(); + } -template -bool operator != (const flib::refcounted_ptr &lhs, const flib::refcounted_ptr &rhs) -{ - return lhs.get() != rhs.get(); -} + template + bool operator != (const refcounted_ptr &lhs, std::nullptr_t rhs) + { + return lhs.get() != rhs; + } +} // namespace flib -template -bool operator != (const flib::refcounted_ptr &lhs, std::nullptr_t rhs) +namespace std { - return lhs.get() != rhs; -} + template + bool operator == (nullptr_t lhs, const flib::refcounted_ptr &rhs) + { + return lhs == rhs.get(); + } -template -bool operator != (std::nullptr_t lhs, const flib::refcounted_ptr &rhs) -{ - return lhs != rhs.get(); -} + template + bool operator != (nullptr_t lhs, const flib::refcounted_ptr &rhs) + { + return lhs != rhs.get(); + } +} // namespace std #endif /* FREFCOUNTED_H */ diff --git a/lib/libpacman/package.cpp b/lib/libpacman/package.cpp index 3b447b3..52ba318 100644 --- a/lib/libpacman/package.cpp +++ b/lib/libpacman/package.cpp @@ -329,11 +329,6 @@ bool package::match(const pmdepend_t &depend) } } -bool less::operator () (const package_ptr &pkg1, const package_ptr &pkg2) -{ - return pkg1 < pkg2; -} - typedef struct FPackageStrMatcher FPackageStrMatcher; struct FPackageStrMatcher @@ -407,17 +402,12 @@ const char *package_node::name() const return m_name; } -bool package_node_less::operator () (const package_node_ptr p1, const package_node_ptr p2) -{ - return strcmp(p1->name(), p2->name()) < 0; -} - -bool operator < (const libpacman::package_ptr &pkg1, const libpacman::package_ptr &pkg2) +bool libpacman::operator < (const libpacman::package_ptr &pkg1, const libpacman::package_ptr &pkg2) { return strcmp(pkg1->name(), pkg2->name()) < 0; } -bool operator < (const libpacman::package_node_ptr &pn1, const libpacman::package_node_ptr &pn2) +bool libpacman::operator < (const libpacman::package_node_ptr &pn1, const libpacman::package_node_ptr &pn2) { return strcmp(pn1->name(), pn2->name()) < 0; } diff --git a/lib/libpacman/package.h b/lib/libpacman/package.h index f8a6f4b..d8c40a7 100644 --- a/lib/libpacman/package.h +++ b/lib/libpacman/package.h @@ -178,15 +178,10 @@ public: }; typedef flib::refcounted_ptr package_ptr; - template - struct less; - template <> - struct less - { - bool operator () (const package_ptr &pkg1, const package_ptr &pkg2); - }; + bool operator < (const package_ptr &pkg1, const package_ptr &pkg2); + typedef FList package_list; - typedef flib::set> package_set; + typedef flib::set package_set; class PackageMatcher { @@ -219,11 +214,9 @@ private: }; typedef flib::refcounted_ptr package_node_ptr; - struct package_node_less - { - bool operator () (const package_node_ptr p1, const package_node_ptr p2); - }; - typedef flib::set package_node_set; + bool operator < (const package_node_ptr &pn1, const package_node_ptr &pn2); + + typedef flib::set package_node_set; class package_graph : package_node_set @@ -233,9 +226,6 @@ p
[Frugalware-git] pacman-g2: libpacman: Move a bunch of NULL to nullptr in preparation of the refcounted package_ptr.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=f660790ff114e6f8e56535c6047bb1eb72b2d6d4 commit f660790ff114e6f8e56535c6047bb1eb72b2d6d4 Author: Michel Hermier Date: Tue Oct 21 10:40:47 2014 +0200 libpacman: Move a bunch of NULL to nullptr in preparation of the refcounted package_ptr. diff --git a/lib/libpacman/conflict.cpp b/lib/libpacman/conflict.cpp index 5617527..cc04672 100644 --- a/lib/libpacman/conflict.cpp +++ b/lib/libpacman/conflict.cpp @@ -65,7 +65,7 @@ FPtrList pmtrans_t::checkconflicts() for(auto i = syncpkgs.begin(), end = syncpkgs.end(); i != end; ++i) { package_ptr tp = (*i)->pkg_new; - if(tp == NULL) { + if(tp == nullptr) { continue; } remain = flib::count(i, end); @@ -289,7 +289,7 @@ FPtrList pmtrans_t::find_conflicts() /* if it's a directory, then we have no conflict */ ok = 1; } else { - if(dbpkg == NULL) { + if(dbpkg == nullptr) { dbpkg = db_local->find(p->name()); } if(dbpkg && !(dbpkg->flags & INFRQ_FILES)) { diff --git a/lib/libpacman/database_cache.cpp b/lib/libpacman/database_cache.cpp index 4720fe4..7d8863c 100644 --- a/lib/libpacman/database_cache.cpp +++ b/lib/libpacman/database_cache.cpp @@ -69,7 +69,7 @@ int _pacman_db_load_pkgcache(Database *db) inforeq, db->treename()); db->rewind(); - while((info = db->readpkg(inforeq)) != NULL) { + while((info = db->readpkg(inforeq)) != nullptr) { /* add to the collective */ db->pkgcache.add(info); } @@ -101,7 +101,7 @@ libpacman::package_set &Database::get_packages() int Database::add_pkgincache(package_ptr pkg) { - if(pkg == NULL) { + if(pkg == nullptr) { return(-1); } @@ -115,7 +115,7 @@ int Database::add_pkgincache(package_ptr pkg) int Database::remove_pkgfromcache(package_ptr pkg) { - if(pkg == NULL) { + if(pkg == nullptr) { return(-1); } diff --git a/lib/libpacman/db.cpp b/lib/libpacman/db.cpp index db4bf81..8efa4ce 100644 --- a/lib/libpacman/db.cpp +++ b/lib/libpacman/db.cpp @@ -157,7 +157,7 @@ package_ptr Database::find(const PackageMatcher &packagematcher) if(packagematcher.match(pkg)) { if(packagematcher.match(pkg, ~PM_PACKAGE_FLAG_PROVIDES)) { return pkg; - } else if (ret == NULL) { + } else if (ret == nullptr) { /* Store provide match */ ret = pkg; } @@ -247,7 +247,7 @@ const char *Database::treename() const int Database::write(package_ptr info, unsigned int inforeq) { - ASSERT(info != NULL, RET_ERR(PM_ERR_PKG_INVALID, -1)); + ASSERT(info != nullptr, RET_ERR(PM_ERR_PKG_INVALID, -1)); RET_ERR(PM_ERR_WRONG_ARGS, -1); // Not supported } diff --git a/lib/libpacman/db/fakedb.cpp b/lib/libpacman/db/fakedb.cpp index 16101ff..8c4bafd 100644 --- a/lib/libpacman/db/fakedb.cpp +++ b/lib/libpacman/db/fakedb.cpp @@ -41,7 +41,7 @@ package_ptr _pacman_fakedb_pkg_new(const char *name) char *str = NULL; package_ptr dummy(new package(NULL, NULL)); - if(dummy == NULL) { + if(dummy == nullptr) { RET_ERR(PM_ERR_MEMORY, NULL); } diff --git a/lib/libpacman/db/localdb.cpp b/lib/libpacman/db/localdb.cpp index 185bb83..ce7590d 100644 --- a/lib/libpacman/db/localdb.cpp +++ b/lib/libpacman/db/localdb.cpp @@ -61,7 +61,7 @@ LocalDatabase *LocalPackage::database() const } static -int _pacman_localpkg_file_reader(Database *db, package_ptr pkg, unsigned int flags, unsigned int flags_masq, const char *file, int (*reader)(package *, FILE *)) +int _pacman_localpkg_file_reader(Database *db, package *pkg, unsigned int flags, unsigned int flags_masq, const char *file, int (*reader)(package *, FILE *)) { int ret = 0; @@ -403,7 +403,7 @@ int LocalDatabase::write(package_ptr info, unsigned int inforeq) mode_t oldmask; int retval = 0; - ASSERT(info != NULL, RET_ERR(PM_ERR_PKG_INVALID, -1)); + ASSERT(info != nullptr, RET_ERR(PM_ERR_PKG_INVALID, -1)); snprintf(path, PATH_MAX, "%s/%s-%s", this->path, info->name(), info->version()); oldmask = umask(); diff --git a/lib/libpacman/db/localdb_files.cpp b/lib/libpacman/db/localdb_files.cpp index b84c90a..16fbe26 100644 --- a/lib/libpacman/db/localdb_files.cpp +++ b/lib/libpacman/db/localdb_files.cpp @@ -60,7 +60,7 @@ int _pacman_db_read_lines(FStringList &list, char *s, size_t size, FILE *fp) return lines; } -int _pacman_localdb_desc_fread(package_ptr info, FILE *fp) +int _pacman_localdb_desc_fread(package *info, FILE *fp) { char line[512]; int sline = sizeof(line)-1; @@ -183,7 +183,7 @@ error: return -1; } -int _pacman_localdb_depends_fread(package_ptr info, FILE *fp) +int _pacman_localdb_depends_fread(package *info, FILE *fp) { char line[512]; int sline = sizeof(line)-1; @@ -219,7 +219,7 @@ int _pacman_localdb_depends_fread(package_ptr info, FILE *fp) return 0; } -int _pacman_localdb_files_fread(package_ptr info, FILE *fp) +int _pacman_localdb_files_fread(packag
[Frugalware-git] pacman-g2: libpacman: Wrap FList in package_list.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=d6789017f4f7fcf46a67d81a7f97a181fb11d3d1 commit d6789017f4f7fcf46a67d81a7f97a181fb11d3d1 Author: Michel Hermier Date: Mon Oct 20 19:31:53 2014 +0200 libpacman: Wrap FList in package_list. diff --git a/lib/libpacman/db.cpp b/lib/libpacman/db.cpp index 84f265c..e572171 100644 --- a/lib/libpacman/db.cpp +++ b/lib/libpacman/db.cpp @@ -92,9 +92,9 @@ bool Database::add_server(const char *url) return true; } -FList Database::filter(const PackageMatcher &packagematcher) +package_list Database::filter(const PackageMatcher &packagematcher) { - FList ret; + package_list ret; auto &cache = get_packages(); for(auto it = cache.begin(), end = cache.end(); it != end; ++it) { @@ -107,14 +107,14 @@ FList Database::filter(const PackageMatcher &packagematcher) return ret; } -FList Database::filter(const FStrMatcher *strmatcher, int packagestrmatcher_flags) +package_list Database::filter(const FStrMatcher *strmatcher, int packagestrmatcher_flags) { return filter(PackageMatcher(strmatcher, packagestrmatcher_flags)); } -FList Database::filter(const FStringList &needles, int packagestrmatcher_flags, int strmatcher_flags) +package_list Database::filter(const FStringList &needles, int packagestrmatcher_flags, int strmatcher_flags) { - FList ret; + package_list ret; for(auto i = needles.begin(), end = needles.end(); i != end; ++i) { const char *pattern = (const char *)*i; @@ -138,12 +138,12 @@ FList Database::filter(const FStringList &needles, int packagestrmatc return ret; } -FList Database::filter(const char *pattern, int packagestrmatcher_flags, int strmatcher_flags) +package_list Database::filter(const char *pattern, int packagestrmatcher_flags, int strmatcher_flags) { if(!f_strempty(pattern)) { return filter(PackageMatcher(pattern, packagestrmatcher_flags, strmatcher_flags)); } - return FList(); + return package_list(); } Package *Database::find(const PackageMatcher &packagematcher) @@ -179,7 +179,7 @@ Package *Database::find(const char *pattern, int packagestrmatcher_flags, int st return NULL; } -FList Database::whatPackagesProvide(const char *target) +package_list Database::whatPackagesProvide(const char *target) { return filter(target, PM_PACKAGE_FLAG_PROVIDES); } @@ -251,9 +251,9 @@ int Database::write(Package *info, unsigned int inforeq) RET_ERR(PM_ERR_WRONG_ARGS, -1); // Not supported } -FList Database::getowners(const char *filename) +package_list Database::getowners(const char *filename) { - return FList(); + return package_list(); } /* Reads dbpath/treename.lastupdate and populates *ts with the contents. diff --git a/lib/libpacman/db.h b/lib/libpacman/db.h index 2967331..209b084 100644 --- a/lib/libpacman/db.h +++ b/lib/libpacman/db.h @@ -75,10 +75,10 @@ public: int remove_pkgfromcache(libpacman::package_ptr pkg); void free_pkgcache(); - FList filter(const libpacman::PackageMatcher &packagematcher); - FList filter(const FStrMatcher *strmatcher, int packagestrmatcher_flags); - FList filter(const FStringList &needles, int packagestrmatcher_flags, int strmatcher_flags = FStrMatcher::EQUAL); - FList filter(const char *pattern, int packagestrmatcher_flags, int strmatcher_flags = FStrMatcher::EQUAL); + libpacman::package_list filter(const libpacman::PackageMatcher &packagematcher); + libpacman::package_list filter(const FStrMatcher *strmatcher, int packagestrmatcher_flags); + libpacman::package_list filter(const FStringList &needles, int packagestrmatcher_flags, int strmatcher_flags = FStrMatcher::EQUAL); + libpacman::package_list filter(const char *pattern, int packagestrmatcher_flags, int strmatcher_flags = FStrMatcher::EQUAL); libpacman::Package *find(const libpacman::PackageMatcher &packagematcher); libpacman::Package *find(const FStrMatcher *strmatcher, int packagestrmatcher_flags); libpacman::Package *find(const char *target, @@ -87,9 +87,9 @@ public: libpacman::Group *find_group(const char *target); libpacman::package_set &get_packages(); libpacman::group_set &get_groups(); - FList whatPackagesProvide(const char *target); + libpacman::package_list whatPackagesProvide(const char *target); - virtual FList getowners(const char *filename); /* Make pure virtual */ + virtual libpacman::package_list getowners(const char *filename); /* Make pure virtual */ ::libpacman::Handle *m_handle; char *path; diff --git a/lib/libpacman/db/localdb.cpp b/lib/libpacman/db/localdb.cpp index 95754e2..01b0009 100644 --- a/lib/libpacman/db/localdb.cpp +++ b/lib/libpacman/db/localdb.cpp @@ -488,12 +488,12 @@ cleanup: return(retval); } -FList LocalDatabase::getowners(const char *filename) +package_list LocalDatabase::getowners(const char *filename) { struct stat buf; int gotcha = 0; char rpath[PATH_MAX]; - FList ret; + package_l
[Frugalware-git] pacman-g2: libpacman: Remove a bunch of unused code in fptrlist.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=513af9c907d53b2820726f4f66ca937cd5d9f4d1 commit 513af9c907d53b2820726f4f66ca937cd5d9f4d1 Author: Michel Hermier Date: Sun Oct 19 11:22:51 2014 +0200 libpacman: Remove a bunch of unused code in fptrlist. diff --git a/lib/libpacman/util/fptrlist.cpp b/lib/libpacman/util/fptrlist.cpp index 7001937..2e68cc8 100644 --- a/lib/libpacman/util/fptrlist.cpp +++ b/lib/libpacman/util/fptrlist.cpp @@ -84,46 +84,10 @@ FPtrListIterator *f_ptrlist_end(FPtrList *self) return self->end(); } -const FPtrListIterator *f_ptrlist_end_const(const FPtrList *self) -{ - ASSERT(self != NULL, RET_ERR(PM_ERR_WRONG_ARGS, NULL)); - return self->end(); -} - FPtrListIterator *f_ptrlist_first(FPtrList *self) { ASSERT(self != NULL, RET_ERR(PM_ERR_WRONG_ARGS, NULL)); return self->begin(); } -const FPtrListIterator *f_ptrlist_first_const(const FPtrList *self) -{ - ASSERT(self != NULL, RET_ERR(PM_ERR_WRONG_ARGS, NULL)); - return self->begin(); -} - -FPtrListIterator *f_ptrlist_last(FPtrList *self) -{ - ASSERT(self != NULL, RET_ERR(PM_ERR_WRONG_ARGS, NULL)); - return self->last(); -} - -const FPtrListIterator *f_ptrlist_last_const(const FPtrList *self) -{ - ASSERT(self != NULL, RET_ERR(PM_ERR_WRONG_ARGS, NULL)); - return self->last(); -} - -FPtrListIterator *f_ptrlist_rend(FPtrList *self) -{ - ASSERT(self != NULL, RET_ERR(PM_ERR_WRONG_ARGS, NULL)); - return self->rend(); -} - -const FPtrListIterator *f_ptrlist_rend_const(const FPtrList *self) -{ - ASSERT(self != NULL, RET_ERR(PM_ERR_WRONG_ARGS, NULL)); - return self->rend(); -} - /* vim: set ts=2 sw=2 noet: */ diff --git a/lib/libpacman/util/fptrlist.h b/lib/libpacman/util/fptrlist.h index a43261b..0300f6b 100644 --- a/lib/libpacman/util/fptrlist.h +++ b/lib/libpacman/util/fptrlist.h @@ -53,13 +53,7 @@ int f_ptrlist_delete(FPtrList *list); FPtrList *f_ptrlist_add(FPtrList *list, void *data); size_t f_ptrlist_count(const FPtrList *self); FPtrListIterator *f_ptrlist_end(FPtrList *self); -const FPtrListIterator *f_ptrlist_end_const(const FPtrList *self); FPtrListIterator *f_ptrlist_first(FPtrList *self); -const FPtrListIterator *f_ptrlist_first_const(const FPtrList *self); -FPtrListIterator *f_ptrlist_last(FPtrList *self); -const FPtrListIterator *f_ptrlist_last_const(const FPtrList *self); -FPtrListIterator *f_ptrlist_rend(FPtrList *self); -const FPtrListIterator *f_ptrlist_rend_const(const FPtrList *self); #ifdef __cplusplus } ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Remove _pacman_pkg_cmp.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=f22b658368b1df3a5e346af8a69d19f871515dbd commit f22b658368b1df3a5e346af8a69d19f871515dbd Author: Michel Hermier Date: Tue Oct 21 16:04:56 2014 +0200 libpacman: Remove _pacman_pkg_cmp. diff --git a/lib/libpacman/package.cpp b/lib/libpacman/package.cpp index a1f035c..3b447b3 100644 --- a/lib/libpacman/package.cpp +++ b/lib/libpacman/package.cpp @@ -91,17 +91,6 @@ bool package::set_filename(const char *filename, int witharch) return false; } -/* Helper function for comparing packages - */ -static -int _pacman_pkg_cmp(const package_ptr p1, const package_ptr p2) -{ - package *pkg1 = (package *)p1; - package *pkg2 = (package *)p2; - - return pkg1 == pkg2 ? 0: strcmp(pkg1->name(), pkg2->name()); -} - bool package::is_valid(const pmtrans_t *trans, const char *pkgfile) const { struct utsname name; @@ -340,9 +329,9 @@ bool package::match(const pmdepend_t &depend) } } -bool less::operator () (const package_ptr pkg1, const package_ptr pkg2) +bool less::operator () (const package_ptr &pkg1, const package_ptr &pkg2) { - return _pacman_pkg_cmp(pkg1, pkg2) < 0; + return pkg1 < pkg2; } typedef struct FPackageStrMatcher FPackageStrMatcher; diff --git a/lib/libpacman/package.h b/lib/libpacman/package.h index ee51686..f8a6f4b 100644 --- a/lib/libpacman/package.h +++ b/lib/libpacman/package.h @@ -181,12 +181,12 @@ public: template struct less; template <> - struct less + struct less { - bool operator () (const package_ptr pkg1, const package_ptr pkg2); + bool operator () (const package_ptr &pkg1, const package_ptr &pkg2); }; typedef FList package_list; - typedef flib::set> package_set; + typedef flib::set> package_set; class PackageMatcher { ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Make refcounted_ptr auto conversion operator to pointer explicit.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=7c73094180a8190c89bf76e02394555ea8d467d3 commit 7c73094180a8190c89bf76e02394555ea8d467d3 Author: Michel Hermier Date: Tue Oct 21 15:45:21 2014 +0200 libpacman: Make refcounted_ptr auto conversion operator to pointer explicit. diff --git a/lib/libpacman/deps.cpp b/lib/libpacman/deps.cpp index a07cae6..3e76f2c 100644 --- a/lib/libpacman/deps.cpp +++ b/lib/libpacman/deps.cpp @@ -503,7 +503,7 @@ int pmtrans_t::resolvedeps(FPtrList **data) int usedep = 1; if(m_handle->ignorepkg.contains(ps->name())) { package_ptr dummypkg(new package(miss->target, NULL)); - QUESTION(this, PM_TRANS_CONV_INSTALL_IGNOREPKG, dummypkg, ps, NULL, &usedep); + QUESTION(this, PM_TRANS_CONV_INSTALL_IGNOREPKG, dummypkg.get(), ps.get(), NULL, &usedep); } if(usedep) { _pacman_log(PM_LOG_DEBUG, _("pulling dependency %s"), ps->name()); diff --git a/lib/libpacman/handle.cpp b/lib/libpacman/handle.cpp index bd52f31..e0efbfe 100644 --- a/lib/libpacman/handle.cpp +++ b/lib/libpacman/handle.cpp @@ -173,7 +173,6 @@ Database *Handle::getDatabase(const char *treename) return sdb; } } - return NULL; } diff --git a/lib/libpacman/kernel/frefcounted.h b/lib/libpacman/kernel/frefcounted.h index 6ab9f08..68f7a5e 100644 --- a/lib/libpacman/kernel/frefcounted.h +++ b/lib/libpacman/kernel/frefcounted.h @@ -164,7 +164,7 @@ namespace flib return get(); } - operator T * () const + explicit operator T * () const { return get(); } diff --git a/lib/libpacman/package.cpp b/lib/libpacman/package.cpp index a119579..a1f035c 100644 --- a/lib/libpacman/package.cpp +++ b/lib/libpacman/package.cpp @@ -418,7 +418,7 @@ const char *package_node::name() const return m_name; } -bool package_node_less::operator () (const package_node *p1, const package_node *p2) +bool package_node_less::operator () (const package_node_ptr p1, const package_node_ptr p2) { return strcmp(p1->name(), p2->name()) < 0; } diff --git a/lib/libpacman/package.h b/lib/libpacman/package.h index 69fa218..ee51686 100644 --- a/lib/libpacman/package.h +++ b/lib/libpacman/package.h @@ -221,7 +221,7 @@ private: typedef flib::refcounted_ptr package_node_ptr; struct package_node_less { - bool operator () (const package_node *p1, const package_node *p2); + bool operator () (const package_node_ptr p1, const package_node_ptr p2); }; typedef flib::set package_node_set; diff --git a/lib/libpacman/package/fpmpackage.cpp b/lib/libpacman/package/fpmpackage.cpp index 67d92a9..fc7a78f 100644 --- a/lib/libpacman/package/fpmpackage.cpp +++ b/lib/libpacman/package/fpmpackage.cpp @@ -221,7 +221,7 @@ package_ptr _pacman_fpmpackage_load(const char *pkgfile) /* internal */ info->m_path = strdup(pkgfile); - return(info); + return info; error: if(!ret) { diff --git a/lib/libpacman/pacman.cpp b/lib/libpacman/pacman.cpp index 8685c2a..d44abd9 100644 --- a/lib/libpacman/pacman.cpp +++ b/lib/libpacman/pacman.cpp @@ -932,7 +932,7 @@ void *pacman_sync_getinfo(pmsyncpkg_t *ps, unsigned char parm) switch(parm) { case PM_SYNC_TYPE: data = (void *)(long)ps->type; break; case PM_SYNC_NAME: data = ps->pkg_name; break; - case PM_SYNC_PKG: data = ps->pkg_new; break; + case PM_SYNC_PKG: data = ps->pkg_new.get(); break; case PM_SYNC_REPLACES: data = &ps->m_replaces; break; default: data = NULL; diff --git a/lib/libpacman/pacman_p.h b/lib/libpacman/pacman_p.h index dcaaff5..cbcf173 100644 --- a/lib/libpacman/pacman_p.h +++ b/lib/libpacman/pacman_p.h @@ -24,6 +24,7 @@ #include "pacman.h" #include "util/fptrlist.h" +#include "package.h" #define DEFINE_CAST(c_type, cxx_type) \ static inline c_type *c_cast(cxx_type *obj) \ @@ -60,6 +61,9 @@ template static inline __pmlist_t *c_cast(FList *obj) { return (__pmlist_t *)obj; } +static inline struct __pmpkg_t *c_cast(const libpacman::package_ptr &obj) +{ return (__pmpkg_t *)obj.get(); } + #undef DEFINE_CAST #endif /* _PACMAN_P_H */ diff --git a/lib/libpacman/trans.cpp b/lib/libpacman/trans.cpp index cb587e4..76730ee 100644 --- a/lib/libpacman/trans.cpp +++ b/lib/libpacman/trans.cpp @@ -333,7 +333,7 @@ int __pmtrans_t::add(const char *target, pmtranstype_t type, int flags, pmsyncpk if(cmp > 0) { /* pkg_local version is newer -- get confirmation before adding */ int resp = 0; - QUESTION(this, PM_TRANS_CONV_LOCAL_NEWER, pkg_local, NULL, NULL, &resp); + QUESTION(this, PM_TRANS_CONV_LOCAL_NEWER, pkg_local.get(), NULL, NULL, &resp); if(!resp) { _pacman_log(PM_LOG_WARNING, _("%s-%s: local version is newer -- skipping"), pkg_local->name(), pkg_local->version()); return(0); @@ -341,7 +341,7 @@ int __pmtrans_t::add(const char *target, pmtranstype_t t
[Frugalware-git] pacman-g2: libpacman: make FFunction and FSignal less dependent to ASSERT.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=f294a59b4092511d5ed2caac51bee37fd95f42dc commit f294a59b4092511d5ed2caac51bee37fd95f42dc Author: Michel Hermier Date: Sun Oct 19 11:45:49 2014 +0200 libpacman: make FFunction and FSignal less dependent to ASSERT. diff --git a/lib/libpacman/kernel/fsignal.h b/lib/libpacman/kernel/fsignal.h index af82569..933de6c 100644 --- a/lib/libpacman/kernel/fsignal.h +++ b/lib/libpacman/kernel/fsignal.h @@ -70,10 +70,11 @@ public: bool connect(const flib::FFunction& function) { - ASSERT(function, return false); - - m_connections.push_back(function); - return true; + if(function) { + m_connections.push_back(function); + return true; + } + return false; } template diff --git a/lib/libpacman/util/ffunctional.h b/lib/libpacman/util/ffunctional.h index 4527447..fd9db4a 100644 --- a/lib/libpacman/util/ffunctional.h +++ b/lib/libpacman/util/ffunctional.h @@ -27,8 +27,6 @@ #include "util/ftype_traits.h" -#include "util.h" // For ASSERT - namespace flib { @@ -307,10 +305,9 @@ class FFunction template void _connect(Pointer pointer, MethodSignature method) { - ASSERT(pointer != nullptr, return;); - ASSERT(method != nullptr, return;); - - d = shared_ptr(new flib::detail::FMethodImpl(pointer, method)); + if(pointer != nullptr && method != nullptr) { + d = shared_ptr(new flib::detail::FMethodImpl(pointer, method)); + } } public: @@ -328,17 +325,17 @@ public: template FFunction(FunctionR (*function)(FunctionArgs...)) { - ASSERT(function != nullptr, return;); - - d = shared_ptr(new flib::detail::FFunctionImpl(function)); + if(function != nullptr) { + d = shared_ptr(new flib::detail::FFunctionImpl(function)); + } } template FFunction(CallbackR (*callback)(CallbackData, CallbackArgs...), CallbackDataHolder data) { - ASSERT(callback != nullptr, return;); - - d = shared_ptr(new flib::detail::FCallbackImpl(callback, data)); + if(callback != nullptr) { + d = shared_ptr(new flib::detail::FCallbackImpl(callback, data)); + } } template ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Drop explicit refcounting calls (will be replace with implicit refcounting using refcounted_ptr).
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=8bb58b314bc1993c363d36e39ddb1b9c013685b7 commit 8bb58b314bc1993c363d36e39ddb1b9c013685b7 Author: Michel Hermier Date: Mon Oct 20 13:10:16 2014 +0200 libpacman: Drop explicit refcounting calls (will be replace with implicit refcounting using refcounted_ptr). diff --git a/lib/libpacman/database_cache.cpp b/lib/libpacman/database_cache.cpp index e498ea9..4720fe4 100644 --- a/lib/libpacman/database_cache.cpp +++ b/lib/libpacman/database_cache.cpp @@ -86,7 +86,7 @@ void Database::free_pkgcache() _pacman_log(PM_LOG_DEBUG, _("freeing package cache for repository '%s'"), treename()); - pkgcache.clear(flib::fRelease); + pkgcache.clear(); _pacman_db_clear_grpcache(this); } @@ -105,7 +105,6 @@ int Database::add_pkgincache(package_ptr pkg) return(-1); } - 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(), treename()); pkgcache.add(pkg); @@ -124,13 +123,9 @@ int Database::remove_pkgfromcache(package_ptr pkg) /* package not found */ return(-1); } - _pacman_log(PM_LOG_DEBUG, _("removing entry '%s' from '%s' cache"), pkg->name(), treename()); - pkg->release(); // FIXME: Should not be necessary, but required during migration to refcounted object - _pacman_db_clear_grpcache(this); - - return(0); + return 0; } static diff --git a/lib/libpacman/db/fakedb.cpp b/lib/libpacman/db/fakedb.cpp index baee4c9..098ac8e 100644 --- a/lib/libpacman/db/fakedb.cpp +++ b/lib/libpacman/db/fakedb.cpp @@ -72,7 +72,6 @@ Package *_pacman_fakedb_pkg_new(const char *name) } free(str); if(dummy->m_name[0] == 0 || dummy->m_version[0] == 0) { - dummy->release(); RET_ERR(PM_ERR_PKG_INVALID_NAME, NULL); } return dummy; diff --git a/lib/libpacman/db/localdb.cpp b/lib/libpacman/db/localdb.cpp index 48b2c6f..95754e2 100644 --- a/lib/libpacman/db/localdb.cpp +++ b/lib/libpacman/db/localdb.cpp @@ -241,7 +241,6 @@ package_ptr _pacman_localdb_pkg_new(LocalDatabase *db, const struct dirent *dire !pkg->set_filename(dname, 0) || pkg->read(inforeq) == -1) { _pacman_log(PM_LOG_ERROR, _("invalid name for dabatase entry '%s'"), dname); - pkg->release(); pkg = NULL; } return package_ptr(pkg); diff --git a/lib/libpacman/db/syncdb.cpp b/lib/libpacman/db/syncdb.cpp index 8e8e35c..30166bd 100644 --- a/lib/libpacman/db/syncdb.cpp +++ b/lib/libpacman/db/syncdb.cpp @@ -141,7 +141,6 @@ package_ptr _pacman_syncdb_pkg_new(SyncDatabase *db, const struct archive_entry !pkg->set_filename(dname, 0) || pkg->read(inforeq) == -1) { _pacman_log(PM_LOG_ERROR, _("invalid name for dabatase entry '%s'"), dname); - pkg->release(); pkg = NULL; } return package_ptr(pkg); diff --git a/lib/libpacman/deps.cpp b/lib/libpacman/deps.cpp index d86d3f1..11b1c0b 100644 --- a/lib/libpacman/deps.cpp +++ b/lib/libpacman/deps.cpp @@ -505,7 +505,6 @@ int pmtrans_t::resolvedeps(FPtrList **data) if(m_handle->ignorepkg.contains(ps->name())) { Package *dummypkg = new Package(miss->target, NULL); QUESTION(this, PM_TRANS_CONV_INSTALL_IGNOREPKG, dummypkg, ps, NULL, &usedep); - dummypkg->release(); } if(usedep) { _pacman_log(PM_LOG_DEBUG, _("pulling dependency %s"), ps->name()); diff --git a/lib/libpacman/kernel/fobject.h b/lib/libpacman/kernel/fobject.h index d2f19e0..feaa0c4 100644 --- a/lib/libpacman/kernel/fobject.h +++ b/lib/libpacman/kernel/fobject.h @@ -45,20 +45,6 @@ public: virtual int set(unsigned val, unsigned long data); }; -static inline void fAcquire(flib::FObject *object) -{ - if(object != nullptr) { - object->acquire(); - } -} - -static inline void fRelease(flib::FObject *object) -{ - if(object != nullptr) { - object->release(); - } -} - } #endif /* FOBJECT_H */ diff --git a/lib/libpacman/kernel/frefcounted.cpp b/lib/libpacman/kernel/frefcounted.cpp index 6789ef5..6be2958 100644 --- a/lib/libpacman/kernel/frefcounted.cpp +++ b/lib/libpacman/kernel/frefcounted.cpp @@ -30,12 +30,11 @@ using namespace flib; refcounted::refcounted() - : m_reference_counter(1) + : m_reference_counter(0) { } refcounted::~refcounted() -{ -} +{ } void refcounted::acquire() const { diff --git a/lib/libpacman/package/fpmpackage.cpp b/lib/libpacman/package/fpmpackage.cpp index b61bb5e..2cd9721 100644 --- a/lib/libpacman/package/fpmpackage.cpp +++ b/lib/libpacman/package/fpmpackage.cpp @@ -225,7 +225,6 @@ Package *_pacman_fpmpackage_load(const char *pkgfile) return(info); error: - info->release(); if(!ret) { archive_read_finish (archive); } diff --git a/lib/libpacman/pacman.cpp b/lib/libpacman/pacman.cpp index af94ec6..e
[Frugalware-git] pacman-g2: libpacman: Remove ASSERTs on f_ptrlist_first, f_ptrlist_end.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=83ad22202f715b4aadd717b2b6337364f9302517 commit 83ad22202f715b4aadd717b2b6337364f9302517 Author: Michel Hermier Date: Sun Oct 19 11:29:12 2014 +0200 libpacman: Remove ASSERTs on f_ptrlist_first, f_ptrlist_end. diff --git a/lib/libpacman/util/fptrlist.cpp b/lib/libpacman/util/fptrlist.cpp index 2e68cc8..3d7b9d9 100644 --- a/lib/libpacman/util/fptrlist.cpp +++ b/lib/libpacman/util/fptrlist.cpp @@ -80,14 +80,18 @@ size_t f_ptrlist_count(const FPtrList *self) FPtrListIterator *f_ptrlist_end(FPtrList *self) { - ASSERT(self != NULL, RET_ERR(PM_ERR_WRONG_ARGS, NULL)); - return self->end(); + if(self != NULL) { + return self->end(); + } + return NULL; } FPtrListIterator *f_ptrlist_first(FPtrList *self) { - ASSERT(self != NULL, RET_ERR(PM_ERR_WRONG_ARGS, NULL)); - return self->begin(); + if(self != NULL) { + return self->begin(); + } + return NULL; } /* vim: set ts=2 sw=2 noet: */ ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Optimise FList::remove_if.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=a367403df7c673f3ac3f02e82db018fa5a4aff9a commit a367403df7c673f3ac3f02e82db018fa5a4aff9a Author: Michel Hermier Date: Tue Oct 21 15:09:30 2014 +0200 libpacman: Optimise FList::remove_if. diff --git a/lib/libpacman/util/flist.h b/lib/libpacman/util/flist.h index 608fffb..815e3a9 100644 --- a/lib/libpacman/util/flist.h +++ b/lib/libpacman/util/flist.h @@ -830,7 +830,7 @@ public: size_type size = 0; iterator it = begin(), end = this->end(); - while((it = find_if(pred)) != end) { + while((it = flib::find_if(it, end, pred)) != end) { fn(*it); it = erase(it); ++size; ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: pacman-g2: Fix ouput when querying info.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=f396da9d16475abd6675557a166edbd693ea89d7 commit f396da9d16475abd6675557a166edbd693ea89d7 Author: Michel Hermier Date: Fri Oct 17 16:48:02 2014 +0200 pacman-g2: Fix ouput when querying info. diff --git a/src/pacman-g2/query.c b/src/pacman-g2/query.c index e7232a6..40f9f64 100644 --- a/src/pacman-g2/query.c +++ b/src/pacman-g2/query.c @@ -58,7 +58,7 @@ int querypkg(FStringList *targets) PM_PKG *pkg = pacman_list_getdata(j); printf("local/%s %s-%s [Desc: %s]\n", - (char *)pacman_list_getdata(pacman_pkg_getinfo(pkg, PM_PKG_GROUPS)), + (char *)pacman_list_getdata(pacman_list_begin(pacman_pkg_getinfo(pkg, PM_PKG_GROUPS))), (char *)pacman_pkg_getinfo(pkg, PM_PKG_NAME), (char *)pacman_pkg_getinfo(pkg, PM_PKG_VERSION), (char *)pacman_pkg_getinfo(pkg, PM_PKG_DESC)); ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Drop unused f_stringlist_add_stringlist.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=164021c2a93f68f1705097371307dac2891846a6 commit 164021c2a93f68f1705097371307dac2891846a6 Author: Michel Hermier Date: Fri Oct 17 16:10:00 2014 +0200 libpacman: Drop unused f_stringlist_add_stringlist. diff --git a/lib/libpacman/util/fstringlist.cpp b/lib/libpacman/util/fstringlist.cpp index b93cc08..4f454e6 100644 --- a/lib/libpacman/util/fstringlist.cpp +++ b/lib/libpacman/util/fstringlist.cpp @@ -80,17 +80,6 @@ FStringList *f_stringlist_add(FStringList *self, const char *s) return &self->add(s); } -FStringList *f_stringlist_add_stringlist(FStringList *self, const FStringList *src) -{ - if(src == NULL || src->empty()) { - return self; - } - if(self == NULL) { - self = new FStringList(); - } - return &self->add(*src); -} - FStringList *f_stringlist_addf(FStringList *self, const char *fmt, ...) { va_list ap; diff --git a/lib/libpacman/util/fstringlist.h b/lib/libpacman/util/fstringlist.h index f8246e0..f479829 100644 --- a/lib/libpacman/util/fstringlist.h +++ b/lib/libpacman/util/fstringlist.h @@ -41,7 +41,6 @@ FStringList *_pacman_list_remove_dupes(FStringList *list); int f_stringlist_delete(FStringList *self); FStringList *f_stringlist_add(FStringList *list, const char *s); -FStringList *f_stringlist_add_stringlist(FStringList *dest, const FStringList *src); FStringList *f_stringlist_addf(FStringList *self, const char *s, ...); FStringList *f_stringlist_vaddf(FStringList *self, const char *s, va_list ap); int f_stringlist_clear(FStringList *self); ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Fix cut&paste typo.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=aced64645c6961a8fc081d4fa669498f0322fa46 commit aced64645c6961a8fc081d4fa669498f0322fa46 Author: Michel Hermier Date: Fri Oct 17 16:38:11 2014 +0200 libpacman: Fix cut&paste typo. diff --git a/src/pacman-g2/util.c b/src/pacman-g2/util.c index c2fe231..2f05e91 100644 --- a/src/pacman-g2/util.c +++ b/src/pacman-g2/util.c @@ -93,7 +93,7 @@ char *buildstring(FStringList *strlist) char *str; int size = 1; - for(FPtrListIterator *lp = f_ptrlist_first(strlist), *end = f_ptrlist_first(strlist); lp != end; lp = f_ptrlistitem_next(lp)) { + for(FPtrListIterator *lp = f_ptrlist_first(strlist), *end = f_ptrlist_end(strlist); lp != end; lp = f_ptrlistitem_next(lp)) { size += strlen(list_data(lp)) + 1; } str = (char *)malloc(size); @@ -101,7 +101,7 @@ char *buildstring(FStringList *strlist) ERR(NL, _("failed to allocated %d bytes\n"), size); } str[0] = '\0'; - for(FPtrListIterator *lp = f_ptrlist_first(strlist), *end = f_ptrlist_first(strlist); lp != end; lp = f_ptrlistitem_next(lp)) { + for(FPtrListIterator *lp = f_ptrlist_first(strlist), *end = f_ptrlist_end(strlist); lp != end; lp = f_ptrlistitem_next(lp)) { strcat(str, list_data(lp)); strcat(str, " "); } ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: pacman-g2: Fix output when searching a package.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=e3b1097f1e1128c85291d5834e0d6d2bf0bac564 commit e3b1097f1e1128c85291d5834e0d6d2bf0bac564 Author: Michel Hermier Date: Fri Oct 17 16:18:52 2014 +0200 pacman-g2: Fix output when searching a package. diff --git a/src/pacman-g2/sync.c b/src/pacman-g2/sync.c index 5ed96c0..c3babd2 100644 --- a/src/pacman-g2/sync.c +++ b/src/pacman-g2/sync.c @@ -98,7 +98,7 @@ static int sync_search(FStringList *targets) printf("%s/%s %s-%s ", (char *)pacman_db_getinfo(db, PM_DB_TREENAME), - (char *)pacman_list_getdata(pacman_pkg_getinfo(pkg,PM_PKG_GROUPS)), + (char *)pacman_list_getdata(pacman_list_begin(pacman_pkg_getinfo(pkg,PM_PKG_GROUPS))), (char *)pacman_pkg_getinfo(pkg, PM_PKG_NAME), (char *)pacman_pkg_getinfo(pkg, PM_PKG_VERSION)); ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Drop unused f_stringlist_vaddf.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=331c455df41e1fcea5c2dd29a7ea21a96a1ebff5 commit 331c455df41e1fcea5c2dd29a7ea21a96a1ebff5 Author: Michel Hermier Date: Fri Oct 17 16:13:42 2014 +0200 libpacman: Drop unused f_stringlist_vaddf. diff --git a/lib/libpacman/util/fstringlist.cpp b/lib/libpacman/util/fstringlist.cpp index 4f454e6..f9d2530 100644 --- a/lib/libpacman/util/fstringlist.cpp +++ b/lib/libpacman/util/fstringlist.cpp @@ -84,18 +84,14 @@ FStringList *f_stringlist_addf(FStringList *self, const char *fmt, ...) { va_list ap; - va_start(ap, fmt); - self = f_stringlist_vaddf(self, fmt, ap); - va_end(ap); - return self; -} - -FStringList *f_stringlist_vaddf(FStringList *self, const char *fmt, va_list ap) -{ if(self == NULL) { self = new FStringList(); } - return &self->vaddf(fmt, ap); + + va_start(ap, fmt); + self->vaddf(fmt, ap); + va_end(ap); + return self; } int f_stringlist_clear(FStringList *self) diff --git a/lib/libpacman/util/fstringlist.h b/lib/libpacman/util/fstringlist.h index f479829..c241efa 100644 --- a/lib/libpacman/util/fstringlist.h +++ b/lib/libpacman/util/fstringlist.h @@ -42,7 +42,6 @@ int f_stringlist_delete(FStringList *self); FStringList *f_stringlist_add(FStringList *list, const char *s); FStringList *f_stringlist_addf(FStringList *self, const char *s, ...); -FStringList *f_stringlist_vaddf(FStringList *self, const char *s, va_list ap); int f_stringlist_clear(FStringList *self); #ifdef __cplusplus ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Add flib::refcounted_ptr.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=77c00a5b5f279dd4f911450b080f225ae88158d0 commit 77c00a5b5f279dd4f911450b080f225ae88158d0 Author: Michel Hermier Date: Fri Oct 17 11:26:09 2014 +0200 libpacman: Add flib::refcounted_ptr. diff --git a/lib/libpacman/kernel/frefcounted.h b/lib/libpacman/kernel/frefcounted.h index 51c26fc..64f95ba 100644 --- a/lib/libpacman/kernel/frefcounted.h +++ b/lib/libpacman/kernel/frefcounted.h @@ -23,9 +23,10 @@ #include "kernel/fsignal.h" +#include + namespace flib { - class refcounted { public: @@ -62,6 +63,80 @@ namespace flib mutable unsigned m_reference_counter; }; + + template + class refcounted_ptr + { + public: + typedef T element_type; + + constexpr refcounted_ptr() + : m_refcounted_ptr(nullptr) + { } + + template + explicit refcounted_ptr(Y *ptr) + : m_refcounted_ptr(ptr) + { + if(m_refcounted_ptr != nullptr) { + m_refcounted_ptr->acquire(); + } + } + + ~refcounted_ptr() + { + if(m_refcounted_ptr != nullptr) { + m_refcounted_ptr->release(); + } + } + + /* Manipulators */ + void reset() + { + reset(*this, nullptr); + } + + template + void reset(Y *ptr) + { + swap(*this, refcounted_ptr(ptr)); + } + + void swap(refcounted_ptr &o) + { + std::swap(m_refcounted_ptr, o.m_refcounted_ptr); + } + + /* Accessors */ + T *get() const + { + return m_refcounted_ptr; + } + + T &operator * () const + { + return *operator -> (); + } + + T *operator -> () const + { + assert(*this); + return get(); + } + + operator T * () const + { + return get(); + } + + operator bool () const + { + return m_refcounted_ptr != nullptr; + } + + private: + T *m_refcounted_ptr; + }; } #endif /* FREFCOUNTED_H */ diff --git a/lib/libpacman/package.h b/lib/libpacman/package.h index 8c24f35..5aecd25 100644 --- a/lib/libpacman/package.h +++ b/lib/libpacman/package.h @@ -206,6 +206,7 @@ private: }; class package_node + : public flib::refcounted { public: package_node(const char *name); @@ -225,7 +226,7 @@ private: }; class package_graph - : flib::set + : flib::set, package_node_less> { public: using set::set; ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Simplify Database::remove_pkgfromcache removal code.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=608f646525985ad9f8be86ed7178024cec1c25a0 commit 608f646525985ad9f8be86ed7178024cec1c25a0 Author: Michel Hermier Date: Wed Oct 8 12:34:55 2014 +0200 libpacman: Simplify Database::remove_pkgfromcache removal code. diff --git a/lib/libpacman/database_cache.cpp b/lib/libpacman/database_cache.cpp index a88c49d..1c7cb94 100644 --- a/lib/libpacman/database_cache.cpp +++ b/lib/libpacman/database_cache.cpp @@ -116,19 +116,17 @@ int Database::add_pkgincache(Package *pkg) int Database::remove_pkgfromcache(Package *pkg) { - Package *data; - if(pkg == NULL) { return(-1); } - if(!pkgcache.remove(pkg, f_ptrcmp, &data)) { + if(!pkgcache.remove(pkg)) { /* package not found */ return(-1); } _pacman_log(PM_LOG_DEBUG, _("removing entry '%s' from '%s' cache"), pkg->name(), treename()); - data->release(); // FIXME: Should not be necessary, but required during migration to refcounted object + pkg->release(); // FIXME: Should not be necessary, but required during migration to refcounted object _pacman_db_clear_grpcache(this); ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Extract refcounting aspect to a separated class of flib::object.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=2e23be8f599da26724b108d3f08290876e85e552 commit 2e23be8f599da26724b108d3f08290876e85e552 Author: Michel Hermier Date: Thu Oct 16 14:20:52 2014 +0200 libpacman: Extract refcounting aspect to a separated class of flib::object. diff --git a/lib/libpacman/CMakeLists.txt b/lib/libpacman/CMakeLists.txt index caac641..c196048 100644 --- a/lib/libpacman/CMakeLists.txt +++ b/lib/libpacman/CMakeLists.txt @@ -7,6 +7,8 @@ CONFIGURE_FILE("pacman.pc.in" "pacman.pc" @ONLY) set(FLIB_SOURCES kernel/fobject.cpp kernel/fobject.h + kernel/frefcounted.cpp + kernel/frefcounted.h kernel/fsignal.h kernel/fstr.cpp kernel/fstr.h diff --git a/lib/libpacman/kernel/fobject.cpp b/lib/libpacman/kernel/fobject.cpp index a23ad7f..108afd3 100644 --- a/lib/libpacman/kernel/fobject.cpp +++ b/lib/libpacman/kernel/fobject.cpp @@ -1,5 +1,5 @@ /* - * object.c + * fobject.c * * Copyright (c) 2014 by Michel Hermier * @@ -40,25 +40,10 @@ void *FObject::operator new(std::size_t size) } FObject::FObject() - : m_reference_counter(1) { } FObject::~FObject() -{ -} - -void FObject::acquire() const -{ - ++m_reference_counter; -} - -void FObject::release() const -{ - if(--m_reference_counter == 0) { - aboutToDestroy(const_cast(this)); - delete this; - } -} +{ } int FObject::get(unsigned val, unsigned long *data) const { diff --git a/lib/libpacman/kernel/fobject.h b/lib/libpacman/kernel/fobject.h index 2cef01b..d2f19e0 100644 --- a/lib/libpacman/kernel/fobject.h +++ b/lib/libpacman/kernel/fobject.h @@ -1,5 +1,5 @@ /* - * object.h + * fobject.h * * Copyright (c) 2014 by Michel Hermier * @@ -21,7 +21,7 @@ #ifndef FOBJECT_H #define FOBJECT_H -#include "kernel/fsignal.h" +#include "kernel/frefcounted.h" #include @@ -29,34 +29,20 @@ namespace flib { class FObject + : public flib::refcounted { public: void operator delete(void *ptr); void *operator new(std::size_t size); public: - flib::FSignal aboutToDestroy; - -public: FObject(); protected: virtual ~FObject(); public: - void acquire() const; - void release() const; - virtual int get(unsigned val, unsigned long *data) const; virtual int set(unsigned val, unsigned long data); - -private: - void operator delete[](void *ptr); - void *operator new[](std::size_t size); - - FObject(const flib::FObject &other); - flib::FObject &operator =(const flib::FObject &other); - - mutable unsigned m_reference_counter; }; static inline void fAcquire(flib::FObject *object) diff --git a/lib/libpacman/kernel/frefcounted.cpp b/lib/libpacman/kernel/frefcounted.cpp new file mode 100644 index 000..6789ef5 --- /dev/null +++ b/lib/libpacman/kernel/frefcounted.cpp @@ -0,0 +1,53 @@ +/* + * frefcounted.c + * + * Copyright (c) 2014 by Michel Hermier + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + * USA. + */ + +#include "config.h" + +#include "kernel/frefcounted.h" + +#include "util.h" + +#include + +using namespace flib; + +refcounted::refcounted() + : m_reference_counter(1) +{ } + +refcounted::~refcounted() +{ +} + +void refcounted::acquire() const +{ + ++m_reference_counter; +} + +void refcounted::release() const +{ + if(--m_reference_counter == 0) { + aboutToDestroy(const_cast(this)); + delete this; + } +} + +/* vim: set ts=2 sw=2 noet: */ diff --git a/lib/libpacman/kernel/frefcounted.h b/lib/libpacman/kernel/frefcounted.h new file mode 100644 index 000..9e32621 --- /dev/null +++ b/lib/libpacman/kernel/frefcounted.h @@ -0,0 +1,70 @@ +/* + * frefcounted.h + * + * Copyright (c) 2014 by Michel Hermier + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Pu
[Frugalware-git] pacman-g2: libpacman: Remove now unused code.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=ed49029539c11b42f8eb60986e20d75a2205d9f4 commit ed49029539c11b42f8eb60986e20d75a2205d9f4 Author: Michel Hermier Date: Wed Oct 8 12:37:36 2014 +0200 libpacman: Remove now unused code. diff --git a/lib/libpacman/fmath.h b/lib/libpacman/fmath.h deleted file mode 100644 index 30305a3..000 --- a/lib/libpacman/fmath.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * fmath.h - * - * Copyright (c) 2013 by Michel Hermier - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, - * USA. - */ -#ifndef _F_MATH_H -#define _F_MATH_H - -#include - -#define __f_intcmp(v, z) ((v) == (z) ? 0 : (v) < (z) ? -1 : 1) - -static inline -int f_signp(intptr_t p) -{ - return __f_intcmp(p, 0); -} - -#endif /* _F_MATH_H */ - -/* vim: set ts=2 sw=2 noet: */ diff --git a/lib/libpacman/fstdlib.h b/lib/libpacman/fstdlib.h index e9c2156..7d3df62 100644 --- a/lib/libpacman/fstdlib.h +++ b/lib/libpacman/fstdlib.h @@ -25,7 +25,6 @@ #include #include "util/log.h" -#include "fmath.h" #include "util.h" static inline @@ -48,18 +47,6 @@ void *f_zalloc(size_t size) return ptr; } -static inline -intptr_t f_diffptr(const void *ptr1, const void *ptr2) -{ - return (intptr_t)ptr1 - (intptr_t)ptr2; -} - -static inline -int f_ptrcmp(const void *ptr1, const void *ptr2) -{ - return f_signp(f_diffptr(ptr1, ptr2)); -} - #define F_PATH_NOCHECK (1<<0) #define F_PATH_RELATIVE (1<<1) ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Fix typo.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=8331b445a67605ba23664c9a7317f8e9f8815cb1 commit 8331b445a67605ba23664c9a7317f8e9f8815cb1 Author: Michel Hermier Date: Fri Oct 17 11:32:32 2014 +0200 libpacman: Fix typo. diff --git a/lib/libpacman/handle.cpp b/lib/libpacman/handle.cpp index b00e20b..bd52f31 100644 --- a/lib/libpacman/handle.cpp +++ b/lib/libpacman/handle.cpp @@ -114,7 +114,7 @@ int Handle::lock() char lckpath[PATH_MAX]; snprintf(lckpath, PATH_MAX, "%s/%s", root, PM_LOCK); - return (filelock = f_filelock_aquire(lckpath, F_FILELOCK_CREATE_HOLD_DIR | F_FILELOCK_EXCLUSIVE | F_FILELOCK_UNLINK_ON_CLOSE)) != NULL ? 0: -1; + return (filelock = f_filelock_acquire(lckpath, F_FILELOCK_CREATE_HOLD_DIR | F_FILELOCK_EXCLUSIVE | F_FILELOCK_UNLINK_ON_CLOSE)) != NULL ? 0: -1; } int Handle::unlock() diff --git a/lib/libpacman/io/ffilelock.c b/lib/libpacman/io/ffilelock.c index 79809c8..d6a5db8 100644 --- a/lib/libpacman/io/ffilelock.c +++ b/lib/libpacman/io/ffilelock.c @@ -39,7 +39,7 @@ struct FFileLock { char pathname[PATH_MAX]; }; -FFileLock *f_filelock_aquire(const char *pathname, int flags) +FFileLock *f_filelock_acquire(const char *pathname, int flags) { FFileLock *filelock; diff --git a/lib/libpacman/io/ffilelock.h b/lib/libpacman/io/ffilelock.h index 557c3c9..8253e74 100644 --- a/lib/libpacman/io/ffilelock.h +++ b/lib/libpacman/io/ffilelock.h @@ -31,7 +31,7 @@ typedef struct FFileLock FFileLock; #define F_FILELOCK_EXCLUSIVE (1<<1) #define F_FILELOCK_UNLINK_ON_CLOSE (1<<2) -FFileLock *f_filelock_aquire(const char *pathname, int flags); +FFileLock *f_filelock_acquire(const char *pathname, int flags); int f_filelock_release(FFileLock *filelock); #ifdef __cplusplus ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Add a basic graphing class (still unused) to store relations with package names with the *providers* of the said names.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=004d9639e75bfce9ba5f8afb6a8a5b5bb6a57c4a commit 004d9639e75bfce9ba5f8afb6a8a5b5bb6a57c4a Author: Michel Hermier Date: Thu Oct 16 10:37:38 2014 +0200 libpacman: Add a basic graphing class (still unused) to store relations with package names with the *providers* of the said names. diff --git a/lib/libpacman/handle.h b/lib/libpacman/handle.h index 3e12e61..ed504fd 100644 --- a/lib/libpacman/handle.h +++ b/lib/libpacman/handle.h @@ -28,6 +28,7 @@ #include "pacman.h" #include "io/ffilelock.h" +#include "package.h" #include "trans.h" #include "kernel/fobject.h" @@ -93,6 +94,8 @@ public: int *dlremain; int *dlhowmany; int sysupgrade; + + libpacman::package_graph m_package_graph; }; } diff --git a/lib/libpacman/package.cpp b/lib/libpacman/package.cpp index 77c812d..58661ec 100644 --- a/lib/libpacman/package.cpp +++ b/lib/libpacman/package.cpp @@ -404,4 +404,34 @@ bool PackageMatcher::match(const Package *package, int mask = ~0) const return _pacman_strmatcher_match(m_strmatcher, package, m_flags & mask); } +package_node::package_node(const char *name) + : m_name(strdup(name)) +{ } + +package_node::package_node(package_node &&o) + : m_name(o.m_name), m_packages(std::move(o.m_packages)) +{ + o.m_name = NULL; +} + +package_node::~package_node() +{ + free(m_name); +} + +bool package_node::operator < (const package_node &o) const +{ + return strcmp(m_name, o.m_name) < 0; +} + +const char *package_node::name() const +{ + return m_name; +} + +bool package_node_less::operator () (const package_node *p1, const package_node *p2) +{ + return strcmp(p1->name(), p2->name()) < 0; +} + /* vim: set ts=2 sw=2 noet: */ diff --git a/lib/libpacman/package.h b/lib/libpacman/package.h index 29e492f..01e2c8d 100644 --- a/lib/libpacman/package.h +++ b/lib/libpacman/package.h @@ -34,12 +34,14 @@ #include "kernel/fobject.h" #include "kernel/fstr.h" #include "util/fset.h" +#include "util/fstringlist.h" typedef struct __pmdepend_t pmdepend_t; namespace libpacman { class Database; + class package_node; } @@ -140,6 +142,7 @@ public: libpacman::Database *m_database; unsigned int flags; + package_node *m_node; char m_name[PKG_NAME_LEN]; char m_version[PKG_VERSION_LEN]; char m_description[PKG_DESC_LEN]; @@ -201,6 +204,32 @@ private: FStrMatcher m_strmatcher_internal; }; + class package_node + { + public: + package_node(const char *name); + package_node(package_node &&o); + ~package_node(); + bool operator < (const package_node &o) const; + + const char *name() const; + + private: + char *m_name/*[PKG_NAME_LEN]*/; + flib::set m_packages; + }; + + struct package_node_less + { + bool operator () (const package_node *p1, const package_node *p2); + }; + + class package_graph + : flib::set + { + public: + using set::set; + }; } // namespace libpacman int _pacman_pkg_delete(libpacman::Package *self); diff --git a/lib/libpacman/packages_transaction.cpp b/lib/libpacman/packages_transaction.cpp index 1c9bcb8..b0f220f 100644 --- a/lib/libpacman/packages_transaction.cpp +++ b/lib/libpacman/packages_transaction.cpp @@ -25,6 +25,8 @@ #include "packages_transaction.h" +#include "handle.h" + #include "util.h" #include "fstring.h" diff --git a/lib/libpacman/trans.h b/lib/libpacman/trans.h index 0088f51..3a90fb0 100644 --- a/lib/libpacman/trans.h +++ b/lib/libpacman/trans.h @@ -26,8 +26,6 @@ typedef struct __pmtrans_t pmtrans_t; -#include "handle.h" - #include "kernel/fobject.h" #include "util/fstringlist.h" diff --git a/lib/libpacman/util/flist.h b/lib/libpacman/util/flist.h index edaab92..608fffb 100644 --- a/lib/libpacman/util/flist.h +++ b/lib/libpacman/util/flist.h @@ -41,29 +41,6 @@ namespace flib struct uncompared { }; - template - struct mapped_traits - { - typedef T mapped_type; - typedef T key_type; - typedef T value_type; - - static const key_type &key_of(const mapped_type &o) - { - return o; - } - - static value_type &value_of(mapped_type &o) - { - return o; - } - - static const value_type &value_of(const mapped_type &o) - { - return o; - } - }; - template struct iterable_traits { @@ -658,7 +635,7 @@ namespace flib { }; } -template > +template class FList : protected FCListItem {
[Frugalware-git] pacman-g2: libpacman: Move events firing for dependency resolution to trans_t::resolvedeps method.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=13fb50900d9bb2b909924000b16e60cdfded8d24 commit 13fb50900d9bb2b909924000b16e60cdfded8d24 Author: Michel Hermier Date: Fri Oct 17 08:57:48 2014 +0200 libpacman: Move events firing for dependency resolution to trans_t::resolvedeps method. diff --git a/lib/libpacman/deps.cpp b/lib/libpacman/deps.cpp index d19ea11..d86d3f1 100644 --- a/lib/libpacman/deps.cpp +++ b/lib/libpacman/deps.cpp @@ -436,6 +436,13 @@ int pmtrans_t::resolvedeps(FPtrList **data) return(-1); } + if(flags & PM_TRANS_FLAG_NODEPS) { + return 0; + } + + EVENT(this, PM_TRANS_EVT_RESOLVEDEPS_START, NULL, NULL); + _pacman_log(PM_LOG_FLOW1, _("resolving targets dependencies")); + bool again; do { again = false; @@ -528,6 +535,8 @@ int pmtrans_t::resolvedeps(FPtrList **data) } } } while (again); + + EVENT(this, PM_TRANS_EVT_RESOLVEDEPS_DONE, NULL, NULL); return 0; error: diff --git a/lib/libpacman/trans.cpp b/lib/libpacman/trans.cpp index 9e3dae1..a3fab40 100644 --- a/lib/libpacman/trans.cpp +++ b/lib/libpacman/trans.cpp @@ -479,8 +479,6 @@ int __pmtrans_t::prepare(FPtrList **data) if(!(flags & PM_TRANS_FLAG_NODEPS)) { /* Resolve targets dependencies */ - EVENT(this, PM_TRANS_EVT_RESOLVEDEPS_START, NULL, NULL); - _pacman_log(PM_LOG_FLOW1, _("resolving targets dependencies")); if(resolvedeps(data) == -1) { /* pm_errno is set by resolvedeps */ ret = -1; @@ -502,8 +500,6 @@ int __pmtrans_t::prepare(FPtrList **data) /* re-order w.r.t. dependencies */ sortbydeps(); - EVENT(this, PM_TRANS_EVT_RESOLVEDEPS_DONE, NULL, NULL); - _pacman_log(PM_LOG_FLOW1, _("looking for unresolvable dependencies")); deps = checkdeps(PM_TRANS_TYPE_UPGRADE); if(!deps.empty()) { ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Make fset a little bit more correct using 'using' keyword.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=9edeadc88812ed3aa3ada3a77139a9f1da002068 commit 9edeadc88812ed3aa3ada3a77139a9f1da002068 Author: Michel Hermier Date: Wed Oct 15 09:30:25 2014 +0200 libpacman: Make fset a little bit more correct using 'using' keyword. diff --git a/lib/libpacman/util/fset.h b/lib/libpacman/util/fset.h index 59a9c3e..9452143 100644 --- a/lib/libpacman/util/fset.h +++ b/lib/libpacman/util/fset.h @@ -33,29 +33,31 @@ namespace flib : public FList { public: - typedef FList super_type; + using typename FList::iterable; + using typename FList::iterator; + using typename FList::value_type; using FList::FList; - typename super_type::iterator add(const typename super_type::value_type &data) + iterator add(const value_type &data) { - typename super_type::iterator end = this->end(); + iterator end = this->end(); /* Find insertion point. */ - typename super_type::iterator next = find_insertion_point(data); + iterator next = find_insertion_point(data); // ensure we don't have an egality if(next == end || m_less(data, *next)) { - typename super_type::iterable add = new FListItem(data); + iterable add = new FListItem(data); add->insert_after(next.previous()); - return typename super_type::iterator(add); + return iterator(add); } return end; } - typename super_type::iterator find(const typename super_type::value_type &data) + iterator find(const value_type &data) { - typename super_type::iterator end = this->end(); - typename super_type::iterator it = find_insertion_point(data); + iterator end = this->end(); + iterator it = find_insertion_point(data); // ensure we have an egality if(it == end || !m_less(data, *it)) { @@ -66,7 +68,7 @@ namespace flib private: /* Return the first iterator where value does not satisfy Compare */ - typename super_type::iterator find_insertion_point(const typename super_type::value_type &data) + iterator find_insertion_point(const value_type &data) { return FList::find_if_not([&] (const T &o) -> bool { return m_less(o, data); }); } ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: More package/package_node initialisation rework.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=67d1992f2d0cea2350e2e4e9f9a810e335c33d64 commit 67d1992f2d0cea2350e2e4e9f9a810e335c33d64 Author: Michel Hermier Date: Fri Oct 17 08:56:22 2014 +0200 libpacman: More package/package_node initialisation rework. diff --git a/lib/libpacman/package.cpp b/lib/libpacman/package.cpp index 38bc458..8e42895 100644 --- a/lib/libpacman/package.cpp +++ b/lib/libpacman/package.cpp @@ -48,13 +48,19 @@ using namespace libpacman; -Package::Package(Database *database) - : m_database(database), m_reason(PM_PKG_REASON_EXPLICIT) +Package::Package(Database *database = 0) + : m_database(database) + , m_reason(PM_PKG_REASON_EXPLICIT) +{ } + +Package::Package(package_node *package_node) + : Package() { + m_package_node = package_node; } Package::Package(const char *name, const char *version) - : m_reason(PM_PKG_REASON_EXPLICIT) + : Package() { if(!_pacman_strempty(name)) { flags |= PM_PACKAGE_FLAG_NAME; @@ -399,19 +405,12 @@ bool PackageMatcher::match(const Package *package, int mask = ~0) const } package_node::package_node(const char *name) - : m_name(strdup(name)) -{ } - -package_node::package_node(package_node &&o) - : m_name(o.m_name), m_packages(std::move(o.m_packages)) { - o.m_name = NULL; + STRNCPY(m_name, name, PKG_NAME_LEN); } package_node::~package_node() -{ - free(m_name); -} +{ } bool package_node::operator < (const package_node &o) const { diff --git a/lib/libpacman/package.h b/lib/libpacman/package.h index a68a6e7..8c24f35 100644 --- a/lib/libpacman/package.h +++ b/lib/libpacman/package.h @@ -105,6 +105,7 @@ public: \ public: Package(libpacman::Database *database = 0); + Package(libpacman::package_node *package_node); Package(const char *name, const char *version); protected: virtual ~Package(); @@ -142,7 +143,7 @@ public: libpacman::Database *m_database; unsigned int flags; - package_node *m_node; + package_node *m_package_node; char m_name[PKG_NAME_LEN]; char m_version[PKG_VERSION_LEN]; char m_description[PKG_DESC_LEN]; @@ -208,14 +209,13 @@ private: { public: package_node(const char *name); - package_node(package_node &&o); ~package_node(); bool operator < (const package_node &o) const; const char *name() const; private: - char *m_name/*[PKG_NAME_LEN]*/; + char m_name[PKG_NAME_LEN]; flib::set m_packages; }; ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Move acquire/release static version of refcounting helper inside of the class (to avoid namespace polution).
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=9b6e8fd01aff0f8c33ad12019c01828069b29bfe commit 9b6e8fd01aff0f8c33ad12019c01828069b29bfe Author: Michel Hermier Date: Fri Oct 17 09:04:13 2014 +0200 libpacman: Move acquire/release static version of refcounting helper inside of the class (to avoid namespace polution). diff --git a/lib/libpacman/kernel/frefcounted.h b/lib/libpacman/kernel/frefcounted.h index 9e32621..51c26fc 100644 --- a/lib/libpacman/kernel/frefcounted.h +++ b/lib/libpacman/kernel/frefcounted.h @@ -38,7 +38,20 @@ namespace flib public: void acquire() const; + static inline void acquire(flib::refcounted *refcounted) + { + if(refcounted != nullptr) { + refcounted->acquire(); + } + } + void release() const; + static inline void release(flib::refcounted *refcounted) + { + if(refcounted != nullptr) { + refcounted->release(); + } + } private: void operator delete[](void *ptr); @@ -49,20 +62,6 @@ namespace flib mutable unsigned m_reference_counter; }; - - static inline void acquire(flib::refcounted *refcounted) - { - if(refcounted != nullptr) { - refcounted->acquire(); - } - } - - static inline void release(flib::refcounted *refcounted) - { - if(refcounted != nullptr) { - refcounted->release(); - } - } } #endif /* FREFCOUNTED_H */ ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Drop _pacman_pkg_delete.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=613c43183e5678ac921a186c9da21ce92871f47e commit 613c43183e5678ac921a186c9da21ce92871f47e Author: Michel Hermier Date: Thu Oct 16 14:03:59 2014 +0200 libpacman: Drop _pacman_pkg_delete. diff --git a/lib/libpacman/database_cache.cpp b/lib/libpacman/database_cache.cpp index 1c7cb94..5983b53 100644 --- a/lib/libpacman/database_cache.cpp +++ b/lib/libpacman/database_cache.cpp @@ -86,7 +86,7 @@ void Database::free_pkgcache() _pacman_log(PM_LOG_DEBUG, _("freeing package cache for repository '%s'"), treename()); - pkgcache.clear(/*_pacman_pkg_delete*/); + pkgcache.clear(flib::fRelease); _pacman_db_clear_grpcache(this); } diff --git a/lib/libpacman/package.cpp b/lib/libpacman/package.cpp index 58661ec..38bc458 100644 --- a/lib/libpacman/package.cpp +++ b/lib/libpacman/package.cpp @@ -85,12 +85,6 @@ bool Package::set_filename(const char *filename, int witharch) return false; } -int _pacman_pkg_delete(Package *self) -{ - self->release(); - return 0; -} - /* Helper function for comparing packages */ int _pacman_pkg_cmp(const Package *p1, const Package *p2) diff --git a/lib/libpacman/package.h b/lib/libpacman/package.h index 01e2c8d..a68a6e7 100644 --- a/lib/libpacman/package.h +++ b/lib/libpacman/package.h @@ -232,8 +232,6 @@ private: }; } // namespace libpacman -int _pacman_pkg_delete(libpacman::Package *self); - int _pacman_pkg_cmp(const libpacman::Package *p1, const libpacman::Package *p2); const libpacman::Package *_pacman_pkg_isin(const char *needle, const FList &haystack); ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Make _pacman_db_get_grpfromcache a method of Database (as find_group).
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=d89141fad4729ec5ba2f6a677ecb4f2e92aef96f commit d89141fad4729ec5ba2f6a677ecb4f2e92aef96f Author: Michel Hermier Date: Wed Oct 8 10:03:56 2014 +0200 libpacman: Make _pacman_db_get_grpfromcache a method of Database (as find_group). diff --git a/lib/libpacman/cache.h b/lib/libpacman/cache.h index 71c5a74..295244f 100644 --- a/lib/libpacman/cache.h +++ b/lib/libpacman/cache.h @@ -25,9 +25,6 @@ #include "group.h" #include "db.h" -/* groups */ -libpacman::Group *_pacman_db_get_grpfromcache(libpacman::Database *db, const char *target); - #endif /* _PACMAN_CACHE_H */ /* vim: set ts=2 sw=2 noet: */ diff --git a/lib/libpacman/database_cache.cpp b/lib/libpacman/database_cache.cpp index 35f7b5b..c799c55 100644 --- a/lib/libpacman/database_cache.cpp +++ b/lib/libpacman/database_cache.cpp @@ -207,11 +207,9 @@ libpacman::group_set &Database::get_groups() return grpcache; } -Group *_pacman_db_get_grpfromcache(Database *db, const char *target) +Group *Database::find_group(const char *target) { - ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, NULL)); - - return _pacman_db_get_grpfromlist(db->get_groups(), target); + return _pacman_db_get_grpfromlist(get_groups(), target); } /* vim: set ts=2 sw=2 noet: */ diff --git a/lib/libpacman/db.h b/lib/libpacman/db.h index a786f70..a7cfc12 100644 --- a/lib/libpacman/db.h +++ b/lib/libpacman/db.h @@ -84,6 +84,7 @@ public: libpacman::Package *find(const char *target, int packagestrmatcher_flags = PM_PACKAGE_FLAG_NAME, int strmatcher_flags = FStrMatcher::EQUAL); + libpacman::Group *find_group(const char *target); libpacman::package_set &get_packages(); libpacman::group_set &get_groups(); FList whatPackagesProvide(const char *target); diff --git a/lib/libpacman/pacman.cpp b/lib/libpacman/pacman.cpp index db73799..eaa9adb 100644 --- a/lib/libpacman/pacman.cpp +++ b/lib/libpacman/pacman.cpp @@ -598,7 +598,7 @@ pmgrp_t *pacman_db_readgrp(pmdb_t *_db, char *name) ASSERT(db != NULL, return(NULL)); ASSERT(!_pacman_strempty(name), return(NULL)); - return c_cast(_pacman_db_get_grpfromcache(db, name)); + return c_cast(db->find_group(name)); } /** Get the group cache of a package database ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Add iterable_traits.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=143d3c8a00e66e574c9262d03ee11eb16c213cc7 commit 143d3c8a00e66e574c9262d03ee11eb16c213cc7 Author: Michel Hermier Date: Thu Oct 2 07:51:18 2014 +0200 libpacman: Add iterable_traits. diff --git a/lib/libpacman/util/flist.h b/lib/libpacman/util/flist.h index 3741f46..1b1062a 100644 --- a/lib/libpacman/util/flist.h +++ b/lib/libpacman/util/flist.h @@ -26,6 +26,8 @@ #include "util.h" +#include + /* Sort comparison callback function declaration */ typedef int (*_pacman_fn_cmp)(const void *, const void *); @@ -43,7 +45,7 @@ namespace flib struct iterable_traits { typedef Iterable iterable; -// typedef typename iterable::difference_type difference_type; + typedef typename iterable::difference_type difference_type; typedef typename iterable::pointer pointer; typedef typename iterable::reference reference; typedef typename iterable::size_type size_type; @@ -79,11 +81,47 @@ namespace flib struct iterable_traits { typedef Iterable *iterable; -// typedef typename Iterable::difference_type difference_type; - typedef typename Iterable::pointer pointer; - typedef typename Iterable::reference reference; - typedef typename Iterable::size_type size_type; - typedef typename Iterable::value_type value_type; + typedef ptrdiff_t difference_type; + typedef Iterable *pointer; + typedef Iterable &reference; + typedef size_t size_type; + typedef Iterable value_type; + + static iterable next(const iterable &i) + { + return i->next(); + } + + static iterable previous(const iterable &i) + { + return i->previous(); + } + + static reference reference_of(iterable i) + { + return i->operator * (); + } + + static pointer pointer_of(iterable i) + { + return i->operator -> (); + } + + static value_type value_of(const iterable i) + { + return i->operator * (); + } + }; + + template + struct iterable_traits + { + typedef Iterable *iterable; + typedef ptrdiff_t difference_type; + typedef const Iterable *pointer; + typedef const Iterable &reference; + typedef size_t size_type; + typedef Iterable value_type; static iterable next(const iterable &i) { ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Make _pacman_db_free_pkgcache an method of Database.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=3e29b90a270109a5e8f7ebee11f65d1d5348d649 commit 3e29b90a270109a5e8f7ebee11f65d1d5348d649 Author: Michel Hermier Date: Wed Oct 8 09:48:37 2014 +0200 libpacman: Make _pacman_db_free_pkgcache an method of Database. diff --git a/lib/libpacman/cache.h b/lib/libpacman/cache.h index 431da7d..622ae92 100644 --- a/lib/libpacman/cache.h +++ b/lib/libpacman/cache.h @@ -26,7 +26,6 @@ #include "db.h" /* packages */ -void _pacman_db_free_pkgcache(libpacman::Database *db); int _pacman_db_add_pkgincache(libpacman::Database *db, libpacman::Package *pkg); int _pacman_db_remove_pkgfromcache(libpacman::Database *db, libpacman::Package *pkg); /* groups */ diff --git a/lib/libpacman/database_cache.cpp b/lib/libpacman/database_cache.cpp index 7e6e7db..20a7df2 100644 --- a/lib/libpacman/database_cache.cpp +++ b/lib/libpacman/database_cache.cpp @@ -62,7 +62,7 @@ int _pacman_db_load_pkgcache(Database *db) ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1)); - _pacman_db_free_pkgcache(db); + db->free_pkgcache(); unsigned int inforeq = 0; if (db != db->m_handle->db_local) @@ -79,19 +79,18 @@ int _pacman_db_load_pkgcache(Database *db) return(0); } -void _pacman_db_free_pkgcache(Database *db) +void Database::free_pkgcache() { - ASSERT(db != NULL, pm_errno = PM_ERR_DB_NULL; return); - if(db->pkgcache.empty()) { + if(pkgcache.empty()) { return; } _pacman_log(PM_LOG_DEBUG, _("freeing package cache for repository '%s'"), - db->treename()); + treename()); - db->pkgcache.clear(/*_pacman_pkg_delete*/); + pkgcache.clear(/*_pacman_pkg_delete*/); - _pacman_db_clear_grpcache(db); + _pacman_db_clear_grpcache(this); } libpacman::package_set &Database::get_packages() diff --git a/lib/libpacman/db.h b/lib/libpacman/db.h index 883f587..c01be5b 100644 --- a/lib/libpacman/db.h +++ b/lib/libpacman/db.h @@ -71,6 +71,8 @@ public: virtual int write(libpacman::Package *info, unsigned int inforeq); /* Cache operations */ + void free_pkgcache(); + FList filter(const libpacman::PackageMatcher &packagematcher); FList filter(const FStrMatcher *strmatcher, int packagestrmatcher_flags); FList filter(const FStringList &needles, int packagestrmatcher_flags, int strmatcher_flags = FStrMatcher::EQUAL); diff --git a/lib/libpacman/db/syncdb.cpp b/lib/libpacman/db/syncdb.cpp index 44a91c0..b18247f 100644 --- a/lib/libpacman/db/syncdb.cpp +++ b/lib/libpacman/db/syncdb.cpp @@ -189,7 +189,7 @@ int _pacman_syncdb_update(Database *db, int force) _pacman_rmrf(dirpath); /* Cache needs to be rebuild */ - _pacman_db_free_pkgcache(db); + db->free_pkgcache(); if(updated) { db->settimestamp(&newmtime); diff --git a/lib/libpacman/pacman.cpp b/lib/libpacman/pacman.cpp index 0e7a041..db73799 100644 --- a/lib/libpacman/pacman.cpp +++ b/lib/libpacman/pacman.cpp @@ -439,11 +439,6 @@ int pacman_db_unregister(pmdb_t *_db) RET_ERR(PM_ERR_DB_NOT_FOUND, -1); } - _pacman_log(PM_LOG_FLOW1, _("unregistering database '%s'"), db->treename()); - - /* Cleanup */ - _pacman_db_free_pkgcache(db); - _pacman_log(PM_LOG_DEBUG, _("closing database '%s'"), db->treename()); db->close(); diff --git a/lib/libpacman/trans.cpp b/lib/libpacman/trans.cpp index 9067492..adb2dbc 100644 --- a/lib/libpacman/trans.cpp +++ b/lib/libpacman/trans.cpp @@ -69,7 +69,7 @@ int check_oldcache(Database *db) } if(timestamp - db->cache_timestamp != 0) { _pacman_log(PM_LOG_DEBUG, _("cache for '%s' repo is too old"), db->treename()); - _pacman_db_free_pkgcache(db); + db->free_pkgcache(); } else { _pacman_log(PM_LOG_DEBUG, _("cache for '%s' repo is up to date"), db->treename()); } ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Make _pacman_db_remove_pkgfromcache a method of Database.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=112d7c1d286433acd77d8e7e1ab58365280a0805 commit 112d7c1d286433acd77d8e7e1ab58365280a0805 Author: Michel Hermier Date: Wed Oct 8 09:58:55 2014 +0200 libpacman: Make _pacman_db_remove_pkgfromcache a method of Database. diff --git a/lib/libpacman/cache.h b/lib/libpacman/cache.h index 5bdff4e..71c5a74 100644 --- a/lib/libpacman/cache.h +++ b/lib/libpacman/cache.h @@ -25,8 +25,6 @@ #include "group.h" #include "db.h" -/* packages */ -int _pacman_db_remove_pkgfromcache(libpacman::Database *db, libpacman::Package *pkg); /* groups */ libpacman::Group *_pacman_db_get_grpfromcache(libpacman::Database *db, const char *target); diff --git a/lib/libpacman/database_cache.cpp b/lib/libpacman/database_cache.cpp index f93dfdd..35f7b5b 100644 --- a/lib/libpacman/database_cache.cpp +++ b/lib/libpacman/database_cache.cpp @@ -116,24 +116,23 @@ int Database::add_pkgincache(Package *pkg) return(0); } -int _pacman_db_remove_pkgfromcache(Database *db, Package *pkg) +int Database::remove_pkgfromcache(Package *pkg) { Package *data; - ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1)); if(pkg == NULL) { return(-1); } - if(!db->pkgcache.remove(pkg, f_ptrcmp, &data)) { + if(!pkgcache.remove(pkg, f_ptrcmp, &data)) { /* package not found */ return(-1); } - _pacman_log(PM_LOG_DEBUG, _("removing entry '%s' from '%s' cache"), pkg->name(), db->treename()); + _pacman_log(PM_LOG_DEBUG, _("removing entry '%s' from '%s' cache"), pkg->name(), treename()); data->release(); // FIXME: Should not be necessary, but required during migration to refcounted object - _pacman_db_clear_grpcache(db); + _pacman_db_clear_grpcache(this); return(0); } diff --git a/lib/libpacman/db.h b/lib/libpacman/db.h index 404a8e4..a786f70 100644 --- a/lib/libpacman/db.h +++ b/lib/libpacman/db.h @@ -72,6 +72,7 @@ public: /* Cache operations */ int add_pkgincache(libpacman::Package *pkg); + int remove_pkgfromcache(libpacman::Package *pkg); void free_pkgcache(); FList filter(const libpacman::PackageMatcher &packagematcher); diff --git a/lib/libpacman/trans.cpp b/lib/libpacman/trans.cpp index 8d3687b..6e8849f 100644 --- a/lib/libpacman/trans.cpp +++ b/lib/libpacman/trans.cpp @@ -1658,7 +1658,7 @@ int __pmtrans_t::commit(FPtrList **data) if(pkg_local->remove() == -1) { _pacman_log(PM_LOG_ERROR, _("could not remove database entry %s-%s"), pkg_local->name(), pkg_local->version()); } - if(_pacman_db_remove_pkgfromcache(db_local, pkg_local) == -1) { + if(db_local->remove_pkgfromcache(pkg_local) == -1) { _pacman_log(PM_LOG_ERROR, _("could not remove entry '%s' from cache"), pkg_local->name()); } ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Drop cache.h.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=ad6cf0ad47c2e51a60ad98d001f4f4813810b039 commit ad6cf0ad47c2e51a60ad98d001f4f4813810b039 Author: Michel Hermier Date: Wed Oct 8 10:13:43 2014 +0200 libpacman: Drop cache.h. diff --git a/lib/libpacman/cache.h b/lib/libpacman/cache.h deleted file mode 100644 index 295244f..000 --- a/lib/libpacman/cache.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * cache.h - * - * Copyright (c) 2002-2006 by Judd Vinet - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, - * USA. - */ -#ifndef _PACMAN_CACHE_H -#define _PACMAN_CACHE_H - -#include "package.h" -#include "group.h" -#include "db.h" - -#endif /* _PACMAN_CACHE_H */ - -/* vim: set ts=2 sw=2 noet: */ diff --git a/lib/libpacman/config_parser.cpp b/lib/libpacman/config_parser.cpp index a236c6b..201bf3b 100644 --- a/lib/libpacman/config_parser.cpp +++ b/lib/libpacman/config_parser.cpp @@ -52,7 +52,6 @@ #include "group.h" #include "util.h" #include "db.h" -#include "cache.h" #include "conflict.h" #include "handle.h" #include "server.h" diff --git a/lib/libpacman/conflict.cpp b/lib/libpacman/conflict.cpp index 32ff8b6..f413e23 100644 --- a/lib/libpacman/conflict.cpp +++ b/lib/libpacman/conflict.cpp @@ -31,7 +31,6 @@ #include "db/localdb_files.h" #include "util.h" #include "error.h" -#include "cache.h" #include "deps.h" #include "util/falgorithm.h" diff --git a/lib/libpacman/database_cache.cpp b/lib/libpacman/database_cache.cpp index c799c55..a88c49d 100644 --- a/lib/libpacman/database_cache.cpp +++ b/lib/libpacman/database_cache.cpp @@ -1,5 +1,5 @@ /* - * cache.c + * database_cache.cpp * * Copyright (c) 2002-2006 by Judd Vinet * Copyright (c) 2007 by Miklos Vajna @@ -31,8 +31,6 @@ #include /* pacman-g2 */ -#include "cache.h" - #include "db/localdb_files.h" #include "util/log.h" #include "fstring.h" diff --git a/lib/libpacman/db.cpp b/lib/libpacman/db.cpp index 848edab..3d14123 100644 --- a/lib/libpacman/db.cpp +++ b/lib/libpacman/db.cpp @@ -32,7 +32,6 @@ #include "error.h" #include "server.h" #include "handle.h" -#include "cache.h" #include "pacman_p.h" #include "db/localdb.h" diff --git a/lib/libpacman/db/localdb.cpp b/lib/libpacman/db/localdb.cpp index 9ef93ae..93a972b 100644 --- a/lib/libpacman/db/localdb.cpp +++ b/lib/libpacman/db/localdb.cpp @@ -27,7 +27,6 @@ #include "db/localdb_files.h" #include "util.h" -#include "cache.h" #include "db.h" #include "package.h" #include "pacman.h" diff --git a/lib/libpacman/db/syncdb.cpp b/lib/libpacman/db/syncdb.cpp index b18247f..b572497 100644 --- a/lib/libpacman/db/syncdb.cpp +++ b/lib/libpacman/db/syncdb.cpp @@ -40,7 +40,6 @@ #include "util/time.h" #include "fstring.h" #include "util.h" -#include "cache.h" #include "db.h" #include "package.h" #include "pacman.h" diff --git a/lib/libpacman/deps.cpp b/lib/libpacman/deps.cpp index c97f75c..d19ea11 100644 --- a/lib/libpacman/deps.cpp +++ b/lib/libpacman/deps.cpp @@ -39,7 +39,6 @@ #include "package.h" #include "pacman_p.h" #include "db.h" -#include "cache.h" #include "versioncmp.h" #include "handle.h" diff --git a/lib/libpacman/package.cpp b/lib/libpacman/package.cpp index f41dd68..77c812d 100644 --- a/lib/libpacman/package.cpp +++ b/lib/libpacman/package.cpp @@ -33,7 +33,6 @@ #include "db.h" #include "deps.h" #include "handle.h" -#include "cache.h" #include "pacman.h" #include "versioncmp.h" diff --git a/lib/libpacman/package/fpmpackage.cpp b/lib/libpacman/package/fpmpackage.cpp index d600819..b61bb5e 100644 --- a/lib/libpacman/package/fpmpackage.cpp +++ b/lib/libpacman/package/fpmpackage.cpp @@ -31,7 +31,6 @@ #include "error.h" #include "db.h" #include "handle.h" -#include "cache.h" #include "pacman.h" #include "io/archive.h" diff --gi
[Frugalware-git] pacman-g2: libpacman: Make _pacman_db_load_pkgcache static.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=c8ca89479f7b629b115b4e9c833bb837fff155ed commit c8ca89479f7b629b115b4e9c833bb837fff155ed Author: Michel Hermier Date: Wed Oct 8 09:36:18 2014 +0200 libpacman: Make _pacman_db_load_pkgcache static. diff --git a/lib/libpacman/cache.h b/lib/libpacman/cache.h index f2d4627..431da7d 100644 --- a/lib/libpacman/cache.h +++ b/lib/libpacman/cache.h @@ -26,7 +26,6 @@ #include "db.h" /* packages */ -int _pacman_db_load_pkgcache(libpacman::Database *db); void _pacman_db_free_pkgcache(libpacman::Database *db); int _pacman_db_add_pkgincache(libpacman::Database *db, libpacman::Package *pkg); int _pacman_db_remove_pkgfromcache(libpacman::Database *db, libpacman::Package *pkg); diff --git a/lib/libpacman/database_cache.cpp b/lib/libpacman/database_cache.cpp index 661b674..7e6e7db 100644 --- a/lib/libpacman/database_cache.cpp +++ b/lib/libpacman/database_cache.cpp @@ -55,6 +55,7 @@ int _pacman_db_load_grpcache(Database *db); /* Returns a new package cache from db. * It frees the cache if it already exists. */ +static int _pacman_db_load_pkgcache(Database *db) { Package *info; ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Make package and groups accessors, member functions of Database.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=c3035b9aa9f5eca9827fa3adefb49a94b5d76103 commit c3035b9aa9f5eca9827fa3adefb49a94b5d76103 Author: Michel Hermier Date: Mon Oct 6 11:42:39 2014 +0200 libpacman: Make package and groups accessors, member functions of Database. diff --git a/lib/libpacman/cache.h b/lib/libpacman/cache.h index 11cdd88..f2d4627 100644 --- a/lib/libpacman/cache.h +++ b/lib/libpacman/cache.h @@ -30,9 +30,7 @@ int _pacman_db_load_pkgcache(libpacman::Database *db); void _pacman_db_free_pkgcache(libpacman::Database *db); int _pacman_db_add_pkgincache(libpacman::Database *db, libpacman::Package *pkg); int _pacman_db_remove_pkgfromcache(libpacman::Database *db, libpacman::Package *pkg); -libpacman::package_set &_pacman_db_get_pkgcache(libpacman::Database *db); /* groups */ -libpacman::group_set &_pacman_db_get_grpcache(libpacman::Database *db); libpacman::Group *_pacman_db_get_grpfromcache(libpacman::Database *db, const char *target); #endif /* _PACMAN_CACHE_H */ diff --git a/lib/libpacman/conflict.cpp b/lib/libpacman/conflict.cpp index b7e9daf..32ff8b6 100644 --- a/lib/libpacman/conflict.cpp +++ b/lib/libpacman/conflict.cpp @@ -87,7 +87,7 @@ FPtrList pmtrans_t::checkconflicts() } /* CHECK 1: check targets against database */ _pacman_log(PM_LOG_DEBUG, _("checkconflicts: targ '%s' vs db"), tp->name()); - auto &cache = _pacman_db_get_pkgcache(db_local); + auto &cache = db_local->get_packages(); for(auto k = cache.begin(), k_end = cache.end(); k != k_end; ++k) { Package *dp = *k; if(!strcmp(dp->name(), tp->name())) { @@ -144,7 +144,7 @@ FPtrList pmtrans_t::checkconflicts() } /* CHECK 3: check database against targets */ _pacman_log(PM_LOG_DEBUG, _("checkconflicts: db vs targ '%s'"), tp->name()); - auto &cache = _pacman_db_get_pkgcache(db_local); + auto &cache = db_local->get_packages(); for(auto k = cache.begin(), k_end = cache.end(); k != k_end; ++k) { FStringList *conflicts; int usenewconflicts = 0; diff --git a/lib/libpacman/database_cache.cpp b/lib/libpacman/database_cache.cpp index 16d19c2..661b674 100644 --- a/lib/libpacman/database_cache.cpp +++ b/lib/libpacman/database_cache.cpp @@ -93,12 +93,12 @@ void _pacman_db_free_pkgcache(Database *db) _pacman_db_clear_grpcache(db); } -libpacman::package_set &_pacman_db_get_pkgcache(Database *db) +libpacman::package_set &Database::get_packages() { - if(db->pkgcache.empty()) { - _pacman_db_load_pkgcache(db); + if(pkgcache.empty()) { + _pacman_db_load_pkgcache(this); } - return db->pkgcache; + return pkgcache; } int _pacman_db_add_pkgincache(Database *db, Package *pkg) @@ -163,7 +163,7 @@ int _pacman_db_load_grpcache(Database *db) { ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1)); - auto &cache = _pacman_db_get_pkgcache(db); + auto &cache = db->get_packages(); _pacman_log(PM_LOG_DEBUG, _("loading group cache for repository '%s'"), db->treename()); @@ -201,19 +201,19 @@ int _pacman_db_clear_grpcache(Database *db) return 0; } -libpacman::group_set &_pacman_db_get_grpcache(Database *db) +libpacman::group_set &Database::get_groups() { - if(db->grpcache.empty()) { - _pacman_db_load_grpcache(db); + if(grpcache.empty()) { + _pacman_db_load_grpcache(this); } - return db->grpcache; + return grpcache; } Group *_pacman_db_get_grpfromcache(Database *db, const char *target) { ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, NULL)); - return _pacman_db_get_grpfromlist(_pacman_db_get_grpcache(db), target); + return _pacman_db_get_grpfromlist(db->get_groups(), target); } /* vim: set ts=2 sw=2 noet: */ diff --git a/lib/libpacman/db.cpp b/lib/libpacman/db.cpp index bbd288b..848edab 100644 --- a/lib/libpacman/db.cpp +++ b/lib/libpacman/db.cpp @@ -97,7 +97,7 @@ FList Database::filter(const PackageMatcher &packagematcher) { FList ret; - auto &cache = _pacman_db_get_pkgcache(this); + auto &cache = get_packages(); for(auto it = cache.begin(), end = cache.end(); it != end; ++it) { Package *pkg = (Package *)*it; @@ -127,7 +127,7 @@ FList Database::filter(const FStringList &needles, int packagestrmatc PackageMatcher packagematcher(pattern, packagestrmatcher_flags, strmatcher_flags); - auto &cache = _pacman_db_get_pkgcache(this); + auto &cache = get_packages(); for(auto j = cache.begin(), j_end = cache.end(); j != j_end; ++j) { Package *pkg = (Package *)*j; @@ -151,7 +151,7 @@ Package *Database::find(const PackageMatcher &packagematcher) { Package *ret = NULL; - auto &cache = _pacman_db_get_pkgcache(this); + auto &cache = get_packages(); for(auto i = cache.begin(), end = cache.end(
[Frugalware-git] pacman-g2: libpacman: Drop util/falgorithms.h.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=ef7bf952560e983f01c6dd310c3d02f9ef3d3190 commit ef7bf952560e983f01c6dd310c3d02f9ef3d3190 Author: Michel Hermier Date: Thu Oct 2 09:49:33 2014 +0200 libpacman: Drop util/falgorithms.h. diff --git a/lib/libpacman/kernel/fsignal.h b/lib/libpacman/kernel/fsignal.h index a1ac2e9..af82569 100644 --- a/lib/libpacman/kernel/fsignal.h +++ b/lib/libpacman/kernel/fsignal.h @@ -21,7 +21,6 @@ #ifndef FSIGNAL_H #define FSIGNAL_H -#include "util/falgorithms.h" #include "util/ffunctional.h" #include // For std::vector @@ -31,6 +30,12 @@ namespace flib { +template +T default_constructor() +{ + return T(); +} + template class FSignal; @@ -47,7 +52,7 @@ public: template typename std::enable_if::value, Accumulator>::type operator()(Args... args) const { - Accumulator accumulator = flib::fdefault_constructor(); + Accumulator accumulator = flib::default_constructor(); for(const_reference connection : m_connections) { accumulator += connection(args...); diff --git a/lib/libpacman/util/falgorithms.h b/lib/libpacman/util/falgorithms.h deleted file mode 100644 index 4e28e4a..000 --- a/lib/libpacman/util/falgorithms.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * falgorithms.h - * - * Copyright (c) 2014 by Michel Hermier - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, - * USA. - */ -#ifndef FALGORITHMS_H -#define FALGORITHMS_H - -namespace flib -{ - -template -T fdefault_constructor() -{ - return T(); -} - -template -struct FAccumulator -{ - T value; - - FAccumulator() - : value(fdefault_constructor()) - { } - - template - const T &operator += (const Any &any) - { - return value += any; - } -}; - -template <> -struct FAccumulator -{ - template - void operator += (const Any &any) - { } -}; - -} - -#endif /* FALGORITHMS_H */ - -/* vim: set ts=2 sw=2 noet: */ ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Make _pacman_db_add_pkgincache a method of Database.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=4ce469d3a4c281caa523f96c3759d8b2337c9c67 commit 4ce469d3a4c281caa523f96c3759d8b2337c9c67 Author: Michel Hermier Date: Wed Oct 8 09:53:51 2014 +0200 libpacman: Make _pacman_db_add_pkgincache a method of Database. diff --git a/lib/libpacman/cache.h b/lib/libpacman/cache.h index 622ae92..5bdff4e 100644 --- a/lib/libpacman/cache.h +++ b/lib/libpacman/cache.h @@ -26,7 +26,6 @@ #include "db.h" /* packages */ -int _pacman_db_add_pkgincache(libpacman::Database *db, libpacman::Package *pkg); int _pacman_db_remove_pkgfromcache(libpacman::Database *db, libpacman::Package *pkg); /* groups */ libpacman::Group *_pacman_db_get_grpfromcache(libpacman::Database *db, const char *target); diff --git a/lib/libpacman/database_cache.cpp b/lib/libpacman/database_cache.cpp index 20a7df2..f93dfdd 100644 --- a/lib/libpacman/database_cache.cpp +++ b/lib/libpacman/database_cache.cpp @@ -101,18 +101,17 @@ libpacman::package_set &Database::get_packages() return pkgcache; } -int _pacman_db_add_pkgincache(Database *db, Package *pkg) +int Database::add_pkgincache(Package *pkg) { - ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, -1)); if(pkg == NULL) { return(-1); } 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(pkg); + _pacman_log(PM_LOG_DEBUG, _("adding entry '%s' in '%s' cache"), pkg->name(), treename()); + pkgcache.add(pkg); - _pacman_db_clear_grpcache(db); + _pacman_db_clear_grpcache(this); return(0); } diff --git a/lib/libpacman/db.h b/lib/libpacman/db.h index c01be5b..404a8e4 100644 --- a/lib/libpacman/db.h +++ b/lib/libpacman/db.h @@ -71,6 +71,7 @@ public: virtual int write(libpacman::Package *info, unsigned int inforeq); /* Cache operations */ + int add_pkgincache(libpacman::Package *pkg); void free_pkgcache(); FList filter(const libpacman::PackageMatcher &packagematcher); diff --git a/lib/libpacman/trans.cpp b/lib/libpacman/trans.cpp index adb2dbc..8d3687b 100644 --- a/lib/libpacman/trans.cpp +++ b/lib/libpacman/trans.cpp @@ -1756,7 +1756,7 @@ int __pmtrans_t::commit(FPtrList **data) pkg_new->name(), pkg_new->version()); RET_ERR(PM_ERR_DB_WRITE, -1); } - if(_pacman_db_add_pkgincache(db_local, pkg_new) == -1) { + if(db_local->add_pkgincache(pkg_new) == -1) { _pacman_log(PM_LOG_ERROR, _("could not add entry '%s' in cache"), pkg_new->name()); } ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: pacman-g2: Move list.c to list.cpp (to ease coding).
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=b20aab013fd522d6ef727a2d08218d7f6caaad84 commit b20aab013fd522d6ef727a2d08218d7f6caaad84 Author: Michel Hermier Date: Mon Oct 6 11:17:03 2014 +0200 pacman-g2: Move list.c to list.cpp (to ease coding). diff --git a/lib/libpacman/CMakeLists.txt b/lib/libpacman/CMakeLists.txt index 9e1887e..6433523 100644 --- a/lib/libpacman/CMakeLists.txt +++ b/lib/libpacman/CMakeLists.txt @@ -22,7 +22,7 @@ set(FLIB_SOURCES io/ftp.c util/fabstractlogger.cpp util/fabstractlogger.h - util/falgorithms.h + util/falgorithm.h util/fdispatchlogger.cpp util/fdispatchlogger.h util/flist.h diff --git a/src/pacman-g2/CMakeLists.txt b/src/pacman-g2/CMakeLists.txt index 1a3d33e..734a577 100644 --- a/src/pacman-g2/CMakeLists.txt +++ b/src/pacman-g2/CMakeLists.txt @@ -2,7 +2,7 @@ set(PACMAN_SOURCES conf.c deptest.c download.c - list.c + list.cpp log.c package.c pacman-g2.c diff --git a/src/pacman-g2/list.c b/src/pacman-g2/list.cpp similarity index 86% rename from src/pacman-g2/list.c rename to src/pacman-g2/list.cpp index 50a6692..1c7909b 100644 --- a/src/pacman-g2/list.c +++ b/src/pacman-g2/list.cpp @@ -24,6 +24,7 @@ #include #include #include + /* pacman-g2 */ #include "util.h" #include "list.h" @@ -34,15 +35,15 @@ extern int maxcols; */ void list_display(const char *title, const FStringList *list) { - const FStringListIterator *lp, *end; + FStringList::const_iterator lp, end; int cols, len; len = strlen(title); printf("%s ", title); if(list) { - for(lp = f_ptrlist_first_const(list), end = f_ptrlist_end_const(list), cols = len; lp != end; lp = f_ptrlistitem_next(lp)) { - int s = strlen((char *)list_data(lp))+1; + for(lp = list->begin(), end = list->end(), cols = len; lp != end; ++lp) { + int s = strlen(*lp)+1; if(s+cols >= maxcols) { int i; cols = len; @@ -51,7 +52,7 @@ void list_display(const char *title, const FStringList *list) printf(" "); } } - printf("%s ", (char *)list_data(lp)); + printf("%s ", *lp); cols += s; } printf("\n"); @@ -68,9 +69,9 @@ void list_display(const char *title, const FStringList *list) * This function takes a PM_LIST* and returns a list_t* * */ -list_t *PM_LIST_remove_dupes(PM_LIST *list) +FStringList *PM_LIST_remove_dupes(PM_LIST *list) { - list_t *newlist = NULL; + FStringList *newlist = NULL; for(pmlist_iterator_t *i = pacman_list_begin(list), *end = pacman_list_end(list); i != end; i = pacman_list_next(i)) { char *data = pacman_list_getdata(i); diff --git a/src/pacman-g2/list.h b/src/pacman-g2/list.h index 279bfb9..53525e9 100644 --- a/src/pacman-g2/list.h +++ b/src/pacman-g2/list.h @@ -26,13 +26,21 @@ #include #include +#ifdef __cplusplus +extern "C" { +#endif + typedef FPtrList list_t; #define list_data f_ptrlistitem_data void list_display(const char *title, const FStringList *list); #define PM_LIST_display(title, list) list_display(title, (const FStringList *)list) -list_t *PM_LIST_remove_dupes(PM_LIST *list); +FStringList *PM_LIST_remove_dupes(PM_LIST *list); + +#ifdef __cplusplus +} +#endif #endif /* _PM_LIST_H */ ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Add flib::mapped_traits (to implement key/value in a single structure).
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=a05b2d00b449e86c3d47b17e2c2b6a7b6a83e894 commit a05b2d00b449e86c3d47b17e2c2b6a7b6a83e894 Author: Michel Hermier Date: Mon Oct 6 08:05:49 2014 +0200 libpacman: Add flib::mapped_traits (to implement key/value in a single structure). diff --git a/lib/libpacman/util/flist.h b/lib/libpacman/util/flist.h index 1b1062a..edaab92 100644 --- a/lib/libpacman/util/flist.h +++ b/lib/libpacman/util/flist.h @@ -41,6 +41,29 @@ namespace flib struct uncompared { }; + template + struct mapped_traits + { + typedef T mapped_type; + typedef T key_type; + typedef T value_type; + + static const key_type &key_of(const mapped_type &o) + { + return o; + } + + static value_type &value_of(mapped_type &o) + { + return o; + } + + static const value_type &value_of(const mapped_type &o) + { + return o; + } + }; + template struct iterable_traits { @@ -635,7 +658,7 @@ namespace flib { }; } -template +template > class FList : protected FCListItem { @@ -935,7 +958,7 @@ protected: template iterator find_insertion_point(typename std::enable_if::value, const Data &>::type data) { - return end(); + return last(); } template ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Use libpacman::package_set and group_set on getters.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=2d9006766a1e5c7bd484ef11cf07b171bac2475c commit 2d9006766a1e5c7bd484ef11cf07b171bac2475c Author: Michel Hermier Date: Thu Oct 2 09:51:08 2014 +0200 libpacman: Use libpacman::package_set and group_set on getters. diff --git a/lib/libpacman/cache.cpp b/lib/libpacman/cache.cpp index 4fc8b7d..16d19c2 100644 --- a/lib/libpacman/cache.cpp +++ b/lib/libpacman/cache.cpp @@ -93,7 +93,7 @@ void _pacman_db_free_pkgcache(Database *db) _pacman_db_clear_grpcache(db); } -FList &_pacman_db_get_pkgcache(Database *db) +libpacman::package_set &_pacman_db_get_pkgcache(Database *db) { if(db->pkgcache.empty()) { _pacman_db_load_pkgcache(db); @@ -201,7 +201,7 @@ int _pacman_db_clear_grpcache(Database *db) return 0; } -FList &_pacman_db_get_grpcache(Database *db) +libpacman::group_set &_pacman_db_get_grpcache(Database *db) { if(db->grpcache.empty()) { _pacman_db_load_grpcache(db); diff --git a/lib/libpacman/cache.h b/lib/libpacman/cache.h index cf7a2a7..11cdd88 100644 --- a/lib/libpacman/cache.h +++ b/lib/libpacman/cache.h @@ -30,9 +30,9 @@ int _pacman_db_load_pkgcache(libpacman::Database *db); void _pacman_db_free_pkgcache(libpacman::Database *db); int _pacman_db_add_pkgincache(libpacman::Database *db, libpacman::Package *pkg); int _pacman_db_remove_pkgfromcache(libpacman::Database *db, libpacman::Package *pkg); -FList &_pacman_db_get_pkgcache(libpacman::Database *db); +libpacman::package_set &_pacman_db_get_pkgcache(libpacman::Database *db); /* groups */ -FList &_pacman_db_get_grpcache(libpacman::Database *db); +libpacman::group_set &_pacman_db_get_grpcache(libpacman::Database *db); libpacman::Group *_pacman_db_get_grpfromcache(libpacman::Database *db, const char *target); #endif /* _PACMAN_CACHE_H */ ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Remove unused f_stringlistitem_to_str.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=5cd68e96af40467056eef2a09a6edc5e3fc6d515 commit 5cd68e96af40467056eef2a09a6edc5e3fc6d515 Author: Michel Hermier Date: Mon Oct 6 08:11:59 2014 +0200 libpacman: Remove unused f_stringlistitem_to_str. diff --git a/lib/libpacman/util/fstringlist.cpp b/lib/libpacman/util/fstringlist.cpp index 70e2966..b93cc08 100644 --- a/lib/libpacman/util/fstringlist.cpp +++ b/lib/libpacman/util/fstringlist.cpp @@ -66,15 +66,6 @@ FStringList *_pacman_list_remove_dupes(FStringList *list) return newlist; } -const char *f_stringlistitem_to_str(const FStringListIterator *self) -{ -#ifndef F_NOCOMPAT - return (const char *)f_ptrlistitem_data(self); -#else - return self->to_str; -#endif -} - int f_stringlist_delete(FStringList *self) { delete self; diff --git a/lib/libpacman/util/fstringlist.h b/lib/libpacman/util/fstringlist.h index b6cb7c5..f8246e0 100644 --- a/lib/libpacman/util/fstringlist.h +++ b/lib/libpacman/util/fstringlist.h @@ -38,8 +38,6 @@ extern "C" { int _pacman_list_is_strin(const char *needle, FStringList *haystack); FStringList *_pacman_list_remove_dupes(FStringList *list); -const char *f_stringlistitem_to_str(const FStringListIterator *self); - int f_stringlist_delete(FStringList *self); FStringList *f_stringlist_add(FStringList *list, const char *s); ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git
[Frugalware-git] pacman-g2: libpacman: Rename cache.cpp to database_cache.cpp.
Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=79f42530cb1a7bea2720712239a9600390fb7805 commit 79f42530cb1a7bea2720712239a9600390fb7805 Author: Michel Hermier Date: Mon Oct 6 11:26:27 2014 +0200 libpacman: Rename cache.cpp to database_cache.cpp. diff --git a/lib/libpacman/CMakeLists.txt b/lib/libpacman/CMakeLists.txt index 6433523..caac641 100644 --- a/lib/libpacman/CMakeLists.txt +++ b/lib/libpacman/CMakeLists.txt @@ -49,10 +49,10 @@ set(LIBPACMAN_SOURCES db/syncdb.cpp package/fpmpackage.cpp package/packagecache.cpp - cache.cpp config_parser.cpp conflict.cpp db.cpp + database_cache.cpp deps.cpp error.cpp group.cpp diff --git a/lib/libpacman/cache.cpp b/lib/libpacman/database_cache.cpp similarity index 100% rename from lib/libpacman/cache.cpp rename to lib/libpacman/database_cache.cpp ___ Frugalware-git mailing list Frugalware-git@frugalware.org http://frugalware.org/mailman/listinfo/frugalware-git