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
