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

Reply via email to