Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=660b6227894368b273e2451e5bfaf181ea66136e
commit 660b6227894368b273e2451e5bfaf181ea66136e Author: Michel Hermier <[email protected]> Date: Sat Apr 26 11:21:39 2014 +0200 libpacman: s/struct __pmgrp_t/libpacman::Group/ diff --git a/lib/libpacman/cache.cpp b/lib/libpacman/cache.cpp index e4a489c..0281797 100644 --- a/lib/libpacman/cache.cpp +++ b/lib/libpacman/cache.cpp @@ -45,6 +45,8 @@ #include "handle.h" #include "error.h" +using namespace libpacman; + static int _pacman_db_clear_grpcache(pmdb_t *db); @@ -200,7 +202,7 @@ int _pacman_db_load_grpcache(pmdb_t *db) for(i = pkg->groups; i; i = i->next) { if(!_pacman_list_is_strin(i->data, db->grpcache)) { - pmgrp_t *grp = _pacman_grp_new(); + Group *grp = new Group(); STRNCPY(grp->name, (char *)i->data, GRP_NAME_LEN); grp->packages = _pacman_list_add_sorted(grp->packages, pkg->name, _pacman_grp_cmp); @@ -209,7 +211,7 @@ int _pacman_db_load_grpcache(pmdb_t *db) pmlist_t *j; for(j = db->grpcache; j; j = j->next) { - pmgrp_t *grp = j->data; + Group *grp = j->data; if(strcmp(grp->name, i->data) == 0) { if(!_pacman_list_is_strin(pkg->name, grp->packages)) { @@ -249,7 +251,7 @@ pmlist_t *_pacman_db_get_grpcache(pmdb_t *db) return(db->grpcache); } -pmgrp_t *_pacman_db_get_grpfromcache(pmdb_t *db, const char *target) +Group *_pacman_db_get_grpfromcache(pmdb_t *db, const char *target) { pmlist_t *i; @@ -259,7 +261,7 @@ pmgrp_t *_pacman_db_get_grpfromcache(pmdb_t *db, const char *target) } for(i = _pacman_db_get_grpcache(db); i; i = i->next) { - pmgrp_t *info = i->data; + Group *info = i->data; if(strcmp(info->name, target) == 0) { return(info); diff --git a/lib/libpacman/cache.h b/lib/libpacman/cache.h index 82d2c20..bad42bb 100644 --- a/lib/libpacman/cache.h +++ b/lib/libpacman/cache.h @@ -35,7 +35,7 @@ pmpkg_t *_pacman_db_get_pkgfromcache(pmdb_t *db, const char *target); pmlist_t *_pacman_db_whatprovides(pmdb_t *db, char *package); /* groups */ pmlist_t *_pacman_db_get_grpcache(pmdb_t *db); -pmgrp_t *_pacman_db_get_grpfromcache(pmdb_t *db, const char *target); +libpacman::Group *_pacman_db_get_grpfromcache(pmdb_t *db, const char *target); #endif /* _PACMAN_CACHE_H */ diff --git a/lib/libpacman/group.cpp b/lib/libpacman/group.cpp index d3d68e2..b449b28 100644 --- a/lib/libpacman/group.cpp +++ b/lib/libpacman/group.cpp @@ -32,39 +32,30 @@ using namespace libpacman; -pmgrp_t *_pacman_grp_new() +Group::Group() + : packages(NULL) { - pmgrp_t* grp = _pacman_zalloc(sizeof(pmgrp_t)); - - if(grp == NULL) { - return(NULL); - } - - return(grp); + memset(name, 0, sizeof(name)); } -void _pacman_grp_delete(pmgrp_t *grp) +Group::~Group() { - if(grp == NULL) { - return; - } + f_ptrlist_delete(packages, NULL); +} - f_ptrlist_delete(grp->packages, NULL); - free(grp); +void _pacman_grp_delete(Group *grp) +{ + delete (grp); } /* Helper function for sorting groups */ int _pacman_grp_cmp(const void *g1, const void *g2) { - pmgrp_t *grp1 = (pmgrp_t *)g1; - pmgrp_t *grp2 = (pmgrp_t *)g2; + const Group *grp1 = (const Group *)g1; + const Group *grp2 = (const Group *)g2; return(strcmp(grp1->name, grp2->name)); } -Group::~Group() -{ -} - /* vim: set ts=2 sw=2 noet: */ diff --git a/lib/libpacman/group.h b/lib/libpacman/group.h index bed0322..6df2ae2 100644 --- a/lib/libpacman/group.h +++ b/lib/libpacman/group.h @@ -27,28 +27,25 @@ #define GRP_NAME_LEN 256 -/* Groups structure */ -struct __pmgrp_t { - char name[GRP_NAME_LEN]; - pmlist_t *packages; /* List of unowned strings */ -}; - -pmgrp_t *_pacman_grp_new(void); -void _pacman_grp_delete(pmgrp_t *group); -int _pacman_grp_cmp(const void *g1, const void *g2); - namespace libpacman { class Group - : public libpacman::Object +// : public libpacman::Object // FIXME: Enable when C list search is removed. { public: - virtual ~Group(); + Group(); + ~Group(); + + char name[GRP_NAME_LEN]; + pmlist_t *packages; /* List of unowned strings */ }; } +void _pacman_grp_delete(libpacman::Group *group); +int _pacman_grp_cmp(const void *g1, const void *g2); + #endif /* _PACMAN_GROUP_H */ /* vim: set ts=2 sw=2 noet: */ diff --git a/lib/libpacman/pacman.cpp b/lib/libpacman/pacman.cpp index 78b8ecb..48bf949 100644 --- a/lib/libpacman/pacman.cpp +++ b/lib/libpacman/pacman.cpp @@ -61,6 +61,17 @@ #include <stdlib.h> #include <unistd.h> +using namespace libpacman; + +#define DEFINE_CAST(c_type, cxx_type) \ +static c_type *c_cast(cxx_type *obj) \ +{ return (c_type *)obj; } \ + \ +static cxx_type *cxx_cast(c_type *obj) \ +{ return (cxx_type *)obj; } + +DEFINE_CAST(struct __pmgrp_t, Group) + /* Globals */ pmhandle_t *handle = NULL; enum __pmerrno_t pm_errno; @@ -391,7 +402,7 @@ pmgrp_t *pacman_db_readgrp(pmdb_t *db, char *name) ASSERT(db != NULL, return(NULL)); ASSERT(!_pacman_strempty(name), return(NULL)); - return(_pacman_db_get_grpfromcache(db, name)); + return c_cast(_pacman_db_get_grpfromcache(db, name)); } /** Get the group cache of a package database @@ -659,13 +670,14 @@ int pacman_pkg_vercmp(const char *ver1, const char *ver2) void *pacman_grp_getinfo(pmgrp_t *grp, unsigned char parm) { void *data = NULL; + Group *group = cxx_cast(grp); /* Sanity checks */ - ASSERT(grp != NULL, return(NULL)); + ASSERT(group != NULL, return(NULL)); switch(parm) { - case PM_GRP_NAME: data = grp->name; break; - case PM_GRP_PKGNAMES: data = grp->packages; break; + case PM_GRP_NAME: data = group->name; break; + case PM_GRP_PKGNAMES: data = group->packages; break; default: data = NULL; break; _______________________________________________ Frugalware-git mailing list [email protected] http://frugalware.org/mailman/listinfo/frugalware-git
