Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=1377ff7b9ae5c3705fb0057e94fef52aaeb55dc5
commit 1377ff7b9ae5c3705fb0057e94fef52aaeb55dc5 Author: Michel Hermier <[email protected]> Date: Sat Apr 26 09:34:31 2014 +0200 libpacman: Add a basic C++ object hierarchy. diff --git a/lib/libpacman/db.cpp b/lib/libpacman/db.cpp index 157afd1..97d7ee4 100644 --- a/lib/libpacman/db.cpp +++ b/lib/libpacman/db.cpp @@ -53,6 +53,8 @@ #include <string.h> #include <unistd.h> +using namespace libpacman; + static int _pacman_db_getlastupdate(pmdb_t *db, char *ts); static int _pacman_db_setlastupdate(pmdb_t *db, const char *ts); @@ -348,4 +350,9 @@ pmdb_t *_pacman_db_register(const char *treename, pacman_cb_db_register callback } return(db); } + +Database::~Database() +{ +} + /* vim: set ts=2 sw=2 noet: */ diff --git a/lib/libpacman/db.h b/lib/libpacman/db.h index b78d187..9cdb9d6 100644 --- a/lib/libpacman/db.h +++ b/lib/libpacman/db.h @@ -27,6 +27,7 @@ #include <time.h> #include "handle.h" +#include "object.h" /* Database entries */ #define INFRQ_NONE 0x00 @@ -86,6 +87,18 @@ int _pacman_db_write(pmdb_t *db, pmpkg_t *info, unsigned int inforeq); int _pacman_db_remove(pmdb_t *db, pmpkg_t *info); pmdb_t *_pacman_db_register(const char *treename, pacman_cb_db_register callback); +namespace libpacman +{ + +class Database + : public libpacman::Object +{ +public: + virtual ~Database(); +}; + +} + #endif /* _PACMAN_DB_H */ /* vim: set ts=2 sw=2 noet: */ diff --git a/lib/libpacman/db/localdb.cpp b/lib/libpacman/db/localdb.cpp index 31f4c1b..d860280 100644 --- a/lib/libpacman/db/localdb.cpp +++ b/lib/libpacman/db/localdb.cpp @@ -45,6 +45,8 @@ #include <stdlib.h> #include <unistd.h> +using namespace libpacman; + static int _pacman_localdb_write(pmdb_t *db, pmpkg_t *info, unsigned int inforeq); @@ -517,4 +519,12 @@ const pmdb_ops_t _pacman_localdb_ops = { .remove = _pacman_localdb_remove, }; +LocalDatabase::~LocalDatabase() +{ +} + +LocalPackage::~LocalPackage() +{ +} + /* vim: set ts=2 sw=2 noet: */ diff --git a/lib/libpacman/db/localdb.h b/lib/libpacman/db/localdb.h index 282b2dd..65a6c58 100644 --- a/lib/libpacman/db/localdb.h +++ b/lib/libpacman/db/localdb.h @@ -22,10 +22,30 @@ #define _PACMAN_LOCALDB_H #include "db.h" +#include "package.h" extern const pmdb_ops_t _pacman_localdb_ops; +namespace libpacman +{ + +class LocalDatabase + : public libpacman::Database +{ +public: + virtual ~LocalDatabase(); +}; + +class LocalPackage + : public libpacman::Package +{ +public: + virtual ~LocalPackage(); +}; + +} + #endif /* _PACMAN_LOCALDB_H */ /* vim: set ts=2 sw=2 noet: */ diff --git a/lib/libpacman/db/syncdb.cpp b/lib/libpacman/db/syncdb.cpp index 5cc6c64..72aaa39 100644 --- a/lib/libpacman/db/syncdb.cpp +++ b/lib/libpacman/db/syncdb.cpp @@ -49,6 +49,8 @@ #include "handle.h" #include "server.h" +using namespace libpacman; + static int suffixcmp(const char *str, const char *suffix) { @@ -364,4 +366,12 @@ const pmdb_ops_t _pacman_syncdb_ops = { .remove = NULL, }; +SyncDatabase::~SyncDatabase() +{ +} + +SyncPackage::~SyncPackage() +{ +} + /* vim: set ts=2 sw=2 noet: */ diff --git a/lib/libpacman/db/syncdb.h b/lib/libpacman/db/syncdb.h index c39367e..db23d90 100644 --- a/lib/libpacman/db/syncdb.h +++ b/lib/libpacman/db/syncdb.h @@ -22,12 +22,32 @@ #define _PACMAN_SYNCDB_H #include "db.h" +#include "package.h" extern const pmdb_ops_t _pacman_syncdb_ops; int _pacman_syncdb_update(pmdb_t *db, int force); +namespace libpacman +{ + +class SyncDatabase + : public libpacman::Database +{ +public: + virtual ~SyncDatabase(); +}; + +class SyncPackage + : public libpacman::Package +{ +public: + virtual ~SyncPackage(); +}; + +} + #endif /* _PACMAN_SYNCDB_H */ /* vim: set ts=2 sw=2 noet: */ diff --git a/lib/libpacman/group.cpp b/lib/libpacman/group.cpp index e3d56b2..d3d68e2 100644 --- a/lib/libpacman/group.cpp +++ b/lib/libpacman/group.cpp @@ -30,6 +30,8 @@ #include <string.h> +using namespace libpacman; + pmgrp_t *_pacman_grp_new() { pmgrp_t* grp = _pacman_zalloc(sizeof(pmgrp_t)); @@ -61,4 +63,8 @@ int _pacman_grp_cmp(const void *g1, const void *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 8fd0568..bed0322 100644 --- a/lib/libpacman/group.h +++ b/lib/libpacman/group.h @@ -23,6 +23,8 @@ #include "pacman.h" +#include "object.h" + #define GRP_NAME_LEN 256 /* Groups structure */ @@ -35,6 +37,18 @@ 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: + virtual ~Group(); +}; + +} + #endif /* _PACMAN_GROUP_H */ /* vim: set ts=2 sw=2 noet: */ diff --git a/lib/libpacman/handle.h b/lib/libpacman/handle.h index 2dd4a95..b5b8271 100644 --- a/lib/libpacman/handle.h +++ b/lib/libpacman/handle.h @@ -31,6 +31,7 @@ typedef struct __pmhandle_t pmhandle_t; #include "io/ffilelock.h" #include "db.h" +#include "object.h" #include "trans.h" typedef enum __pmaccess_t { diff --git a/lib/libpacman/object.h b/lib/libpacman/object.h index a24c6dc..ac2974f 100644 --- a/lib/libpacman/object.h +++ b/lib/libpacman/object.h @@ -23,6 +23,20 @@ #include <stddef.h> +namespace libpacman +{ + +class Object +{ +public: + virtual ~Object() { } + + virtual int get(unsigned val, unsigned long *data) const = 0; + virtual int set(unsigned val, unsigned long data) = 0; +}; + +} + struct __pmobject_t; struct __pmobject_private_t; diff --git a/lib/libpacman/package.cpp b/lib/libpacman/package.cpp index 9d254da..160601b 100644 --- a/lib/libpacman/package.cpp +++ b/lib/libpacman/package.cpp @@ -46,6 +46,22 @@ #include <limits.h> #include <stdio.h> +using namespace libpacman; + +Package::~Package() +{ +} + +int Package::write(pmpkg_t *pkg, unsigned int flags) +{ + return -1; +} + +int Package::remove(pmpkg_t *pkg) +{ + return -1; +} + /* static unsigned int _pacman_pkg_parm_to_flag(unsigned char parm) diff --git a/lib/libpacman/package.h b/lib/libpacman/package.h index 7eeeae8..ae864a4 100644 --- a/lib/libpacman/package.h +++ b/lib/libpacman/package.h @@ -167,6 +167,24 @@ int _pacman_packagestrmatcher_fini(FMatcher *matcher); int _pacman_packagestrmatcher_set_flags(FMatcher *matcher, int flags); +namespace libpacman +{ + +class Package + : public libpacman::Object +{ +public: + ~Package(); + + virtual int read(pmpkg_t *pkg, unsigned int flags) = 0; + virtual int write(pmpkg_t *pkg, unsigned int flags); /* Optional */ + virtual int remove(pmpkg_t *pkg); /* Optional */ + + struct __pmpkg_t *d; +}; + +} + #endif /* _PACMAN_PACKAGE_H */ /* vim: set ts=2 sw=2 noet: */ _______________________________________________ Frugalware-git mailing list [email protected] http://frugalware.org/mailman/listinfo/frugalware-git
