Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=7608d8dc32ed0cccca4993e50c5ca2885821a901

commit 7608d8dc32ed0cccca4993e50c5ca2885821a901
Author: Michel Hermier <[email protected]>
Date:   Mon May 19 20:20:22 2014 +0200

libpacman: Move libpacman::Object to flib.

diff --git a/lib/libpacman/CMakeLists.txt b/lib/libpacman/CMakeLists.txt
index d121e20..25ca715 100644
--- a/lib/libpacman/CMakeLists.txt
+++ b/lib/libpacman/CMakeLists.txt
@@ -5,6 +5,8 @@ SET(includedir "\${prefix}/include")
CONFIGURE_FILE("pacman.pc.in" "pacman.pc" @ONLY)

set(FLIB_SOURCES
+       kernel/fobject.cpp
+       kernel/fobject.h
kernel/fsignal.h
fstdlib/canonicalize.c
fstring/basename.c
@@ -55,7 +57,6 @@ set(LIBPACMAN_SOURCES
error.cpp
group.cpp
handle.cpp
-       object.cpp
package.cpp
packages_transaction.cpp
pacman.cpp
diff --git a/lib/libpacman/db.h b/lib/libpacman/db.h
index 915de45..c7bf203 100644
--- a/lib/libpacman/db.h
+++ b/lib/libpacman/db.h
@@ -27,7 +27,8 @@
#include <time.h>

#include "handle.h"
-#include "object.h"
+
+#include "kernel/fobject.h"

namespace libpacman {

@@ -40,7 +41,7 @@ class Package;
namespace libpacman {

class Database
-       : public libpacman::Object
+       : public ::flib::FObject
{
public:
virtual ~Database();
diff --git a/lib/libpacman/group.h b/lib/libpacman/group.h
index 6df2ae2..206a02c 100644
--- a/lib/libpacman/group.h
+++ b/lib/libpacman/group.h
@@ -23,7 +23,7 @@

#include "pacman.h"

-#include "object.h"
+#include "kernel/fobject.h"

#define GRP_NAME_LEN 256

@@ -31,7 +31,7 @@ namespace libpacman
{

class Group
-//     : public libpacman::Object // FIXME: Enable when C list search is 
removed.
+//     : public ::flib::FObject // FIXME: Enable when C list search is removed.
{
public:
Group();
diff --git a/lib/libpacman/handle.h b/lib/libpacman/handle.h
index 437abdb..802f49c 100644
--- a/lib/libpacman/handle.h
+++ b/lib/libpacman/handle.h
@@ -29,9 +29,10 @@

#include "io/ffilelock.h"
#include "db.h"
-#include "object.h"
#include "trans.h"

+#include "kernel/fobject.h"
+
namespace libpacman {

class Database;
@@ -46,7 +47,7 @@ typedef enum __pmaccess_t {
namespace libpacman {

class Handle
-       : public libpacman::Object
+       : public ::flib::FObject
{
public:
Handle();
diff --git a/lib/libpacman/object.cpp b/lib/libpacman/kernel/fobject.cpp
similarity index 73%
rename from lib/libpacman/object.cpp
rename to lib/libpacman/kernel/fobject.cpp
index 511fb5c..a23ad7f 100644
--- a/lib/libpacman/object.cpp
+++ b/lib/libpacman/kernel/fobject.cpp
@@ -21,51 +21,51 @@

#include "config.h"

-#include "object.h"
+#include "kernel/fobject.h"

#include "util.h"

#include <fstdlib.h>

-using namespace libpacman;
+using namespace flib;

-void Object::operator delete(void *ptr)
+void FObject::operator delete(void *ptr)
{
free(ptr);
}

-void *Object::operator new(std::size_t size)
+void *FObject::operator new(std::size_t size)
{
return f_zalloc(size);
}

-Object::Object()
+FObject::FObject()
: m_reference_counter(1)
-{
-}
+{ }

-Object::~Object()
+FObject::~FObject()
{
}

-void Object::acquire() const
+void FObject::acquire() const
{
++m_reference_counter;
}

-void Object::release() const
+void FObject::release() const
{
if(--m_reference_counter == 0) {
+               aboutToDestroy(const_cast<FObject *>(this));
delete this;
}
}

-int Object::get(unsigned val, unsigned long *data) const
+int FObject::get(unsigned val, unsigned long *data) const
{
return -1;
}

-int Object::set(unsigned val, unsigned long data)
+int FObject::set(unsigned val, unsigned long data)
{
return -1;
}
diff --git a/lib/libpacman/object.h b/lib/libpacman/kernel/fobject.h
similarity index 70%
rename from lib/libpacman/object.h
rename to lib/libpacman/kernel/fobject.h
index 32038fd..3dcf1f7 100644
--- a/lib/libpacman/object.h
+++ b/lib/libpacman/kernel/fobject.h
@@ -18,25 +18,46 @@
*  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
*  USA.
*/
-#ifndef _PACMAN_OBJECT_H
-#define _PACMAN_OBJECT_H
+#ifndef FOBJECT_H
+#define FOBJECT_H
+
+#include "kernel/fsignal.h"

#include <cstddef>

-namespace libpacman
+namespace flib
{

-class Object
+class FObject
{
public:
+       static inline
+       void acquire(const flib::FObject *object)
+       {
+               if(object != 0) {
+                       object->acquire();
+               }
+       }
+
+       static inline
+       void release(const flib::FObject *object)
+       {
+               if(object != 0) {
+                       object->release();
+               }
+       }
+
+public:
void operator delete(void *ptr);
void *operator new(std::size_t size);

-       Object();
+       FObject();
protected:
-       virtual ~Object();
+       virtual ~FObject();

public:
+       flib::FSignal<void(FObject *)> aboutToDestroy;
+
void acquire() const;
void release() const;

@@ -47,14 +68,14 @@ private:
void operator delete[](void *ptr);
void *operator new[](std::size_t size);

-       Object(const libpacman::Object &other);
-       libpacman::Object &operator =(const libpacman::Object &other);
+       FObject(const flib::FObject &other);
+       flib::FObject &operator =(const flib::FObject &other);

mutable unsigned m_reference_counter;
};

}

-#endif /* _PACMAN__OBJECT_H */
+#endif /* FOBJECT_H */

/* vim: set ts=2 sw=2 noet: */
diff --git a/lib/libpacman/package.h b/lib/libpacman/package.h
index ef93a45..ade0ac6 100644
--- a/lib/libpacman/package.h
+++ b/lib/libpacman/package.h
@@ -31,9 +31,10 @@

#include "pacman.h"

-#include "object.h"
#include "trans.h"

+#include "kernel/fobject.h"
+
enum {
PKG_FROM_CACHE = 1,
PKG_FROM_FILE
@@ -82,7 +83,7 @@ namespace libpacman {

/* IMPROVEMENT: Add a dirty_flags to know what flags needs to be written */
class Package
-       : public libpacman::Object
+       : public ::flib::FObject
{
#define LIBPACMAN_PACKAGE_PROPERTY(type, name, flag)                           \
public:                                                                        \
diff --git a/lib/libpacman/sync.h b/lib/libpacman/sync.h
index 53ed320..49c0c78 100644
--- a/lib/libpacman/sync.h
+++ b/lib/libpacman/sync.h
@@ -28,7 +28,7 @@
#include "trans.h"

struct __pmsyncpkg_t
-       : public libpacman::Object
+       : public ::flib::FObject
{
__pmsyncpkg_t(int type, libpacman::Package *spkg, void *data);
~__pmsyncpkg_t();
diff --git a/lib/libpacman/trans.h b/lib/libpacman/trans.h
index fd3d104..1236fe5 100644
--- a/lib/libpacman/trans.h
+++ b/lib/libpacman/trans.h
@@ -28,6 +28,7 @@ typedef struct __pmtrans_t pmtrans_t;

#include "handle.h"

+#include "kernel/fobject.h"
#include "util/stringlist.h"

namespace libpacman {
@@ -55,7 +56,7 @@ typedef struct __pmtrans_cbs_t {
} pmtrans_cbs_t;

struct __pmtrans_t
-       : public libpacman::Object
+       : public ::flib::FObject
{
__pmtrans_t(pmtranstype_t type, unsigned int flags, pmtrans_cbs_t cbs);
~__pmtrans_t();
_______________________________________________
Frugalware-git mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to