Skip to content

Commit

Permalink
pkgdepdb_db_package_remove -> _p and _i variant split
Browse files Browse the repository at this point in the history
  • Loading branch information
Blub committed Nov 22, 2014
1 parent fed0669 commit 47596eb
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 5 deletions.
10 changes: 9 additions & 1 deletion capi_db.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,8 @@ pkgdepdb_bool pkgdepdb_db_package_delete_p(pkgdepdb_db *db_,
return db->DeletePackage(pkgiter) ? 1 : 0;
}

pkgdepdb_bool pkgdepdb_db_package_remove(pkgdepdb_db *db_, pkgdepdb_pkg *pkg_)
pkgdepdb_bool pkgdepdb_db_package_remove_p(pkgdepdb_db *db_,
pkgdepdb_pkg *pkg_)
{
auto db = reinterpret_cast<DB*>(db_);
auto pkg = reinterpret_cast<Package*>(pkg_);
Expand All @@ -186,6 +187,13 @@ pkgdepdb_bool pkgdepdb_db_package_delete_i(pkgdepdb_db *db_, size_t index) {
return db->DeletePackage(db->packages_.begin() + index) ? 1 : 0;
}

pkgdepdb_bool pkgdepdb_db_package_remove_i(pkgdepdb_db *db_, size_t index) {
auto db = reinterpret_cast<DB*>(db_);
if (index >= db->packages_.size())
return 0;
return db->DeletePackage(db->packages_.begin() + index, false) ? 1 : 0;
}

pkgdepdb_bool pkgdepdb_db_package_delete_s(pkgdepdb_db *db_, const char *name)
{
auto db = reinterpret_cast<DB*>(db_);
Expand Down
7 changes: 6 additions & 1 deletion pkgdepdb.h
Original file line number Diff line number Diff line change
Expand Up @@ -295,7 +295,12 @@ pkgdepdb_bool pkgdepdb_db_package_delete_i(pkgdepdb_db*, size_t);
* structure. Only a version taking a package reference is provided because
* you have to manually call pkgdepdb_pkg_delete() on it afterwards.
*/
pkgdepdb_bool pkgdepdb_db_package_remove(pkgdepdb_db*, pkgdepdb_pkg*);
pkgdepdb_bool pkgdepdb_db_package_remove_p(pkgdepdb_db*, pkgdepdb_pkg*);
/** Uninstall a package from the database by index without destroying the
* package structure. Only a version taking a package reference is provided
* because you have to manually call pkgdepdb_pkg_delete() on it afterwards.
*/
pkgdepdb_bool pkgdepdb_db_package_remove_i(pkgdepdb_db*, size_t);

/** Check whether an installed package has to be considered broken in the
* database.
Expand Down
8 changes: 6 additions & 2 deletions pypkgdepdb/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -289,8 +289,12 @@ def install(self, pkg):
pkg.linked = True

def uninstall_package(self, pkg):
if lib.db_package_remove(self._ptr, pkg._ptr) != 1:
raise PKGDepDBException('failed to remove package')
if isinstance(pkg, int):
if lib.db_package_remove_i(self._ptr, pkg) != 1:
raise PKGDepDBException('failed to remove package')
else:
if lib.db_package_remove_p(self._ptr, pkg._ptr) != 1:
raise PKGDepDBException('failed to remove package')
pkg.linked = False

def delete_package(self, pkg):
Expand Down
3 changes: 2 additions & 1 deletion pypkgdepdb/functions.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,8 @@ def load(rawlib, lib, funcs, allprefix):
('db_package_delete_p', c_size_t, [p_db, p_pkg]),
('db_package_delete_s', c_size_t, [p_db, c_char_p]),
('db_package_delete_i', c_size_t, [p_db, c_size_t]),
('db_package_remove', c_size_t, [p_db, p_pkg]),
('db_package_remove_p', c_size_t, [p_db, p_pkg]),
('db_package_remove_i', c_size_t, [p_db, p_pkg]),
('db_package_is_broken', c_int, [p_db, p_pkg]),
('db_object_count', c_size_t, [p_db]),
('db_object_get', c_size_t, [p_db, POINTER(p_elf), c_size_t, c_size_t]),
Expand Down

0 comments on commit 47596eb

Please sign in to comment.