Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=8197ec10f7a09ce62596dfba2027629fbefe7a56
commit 8197ec10f7a09ce62596dfba2027629fbefe7a56 Author: Michel Hermier <[email protected]> Date: Sun Aug 24 09:08:27 2014 +0200 libpacman: Additionnal list reordering. diff --git a/lib/libpacman/util/fptrlist.cpp b/lib/libpacman/util/fptrlist.cpp index 6d8458a..071fb01 100644 --- a/lib/libpacman/util/fptrlist.cpp +++ b/lib/libpacman/util/fptrlist.cpp @@ -222,9 +222,10 @@ int f_ptrlist_fini(FPtrList *self, FVisitor *visitor) return f_ptrlist_clear(self, visitor); } -#ifndef F_NOCOMPAT +// FIXME: Change return value to bool FPtrList *f_ptrlist_append(FPtrList *list, void *data) { +#ifndef F_NOCOMPAT FPtrList *ptr, *lp; ptr = list; @@ -250,12 +251,12 @@ FPtrList *f_ptrlist_append(FPtrList *list, void *data) lp->m_data = data; return(ptr); -} #else -int f_ptrlist_append(FPtrList *self, void *data) -{ -} + list->add(data); + + return list; #endif +} int f_ptrlist_clear(FPtrList *list, FVisitor *visitor) { diff --git a/lib/libpacman/util/fptrlist.h b/lib/libpacman/util/fptrlist.h index 2933b42..e4b6e9d 100644 --- a/lib/libpacman/util/fptrlist.h +++ b/lib/libpacman/util/fptrlist.h @@ -316,16 +316,26 @@ public: return m_previous; } - void *&operator * () + reference operator * () { return m_data; } - const void *operator * () const + const value_type operator * () const { return m_data; } + pointer operator -> () + { + return &m_data; + } + + const pointer operator -> () const + { + return &m_data; + } + #ifndef F_NOCOMPAT // Migration code typedef FCListItem *iterator; @@ -414,34 +424,20 @@ class FCList public: /* std::list compatibility */ typedef FCListItem *iterable; - typedef flib::const_iterator<FCListItem *> const_iterator; - typedef flib::iterator<FCListItem *> iterator; + typedef flib::const_iterator<iterable> const_iterator; + typedef flib::iterator<iterable> iterator; typedef size_t size_type; FCList() : FCListItem(this, this) { } - ~FCList() + virtual ~FCList() override { clear(); } - void clear() - { } - - size_type size() const - { - size_type size = 0; - for(auto dummy: *this) ++size; - return size; - } - - bool empty() const - { - return next() == this; - } - + /* Iterators */ iterator begin() { return first(); @@ -472,8 +468,28 @@ public: return const_iterator(const_cast<FCList *>(this)); } + /* Capacity */ + bool empty() const + { + return next() == this; + } + + size_type size() const + { + size_type size = 0; + for(auto dummy: *this) ++size; + return size; + } + + /* Element access */ + + /* Modifiers */ + void clear() + { } + public: - /* extensions */ + /* Extensions */ + /* Element access */ iterator first() { return iterator(FCListItem::next()); @@ -494,8 +510,8 @@ public: return const_iterator(FCListItem::previous()); } -protected: - virtual bool add(FCListItem *item); + /* Modifiers */ + virtual bool add(const reference val); protected: FCList(const FCList &o); @@ -540,11 +556,7 @@ int f_ptrlist_init(FPtrList *self); int f_ptrlist_fini(FPtrList *self, FVisitor *visitor); #define f_ptrlist_add f_ptrlist_append -#ifndef F_NOCOMPAT FPtrList *f_ptrlist_append(FPtrList *list, void *data); -#else -int f_ptrlist_append(FPtrList *list, void *data); -#endif int f_ptrlist_clear(FPtrList *list, FVisitor *visitor); bool f_ptrlist_contains(const FPtrList *list, FPtrListItemComparatorFunc comparator, const void *comparator_data); bool f_ptrlist_contains_ptr(const FPtrList *list, const void *ptr); _______________________________________________ Frugalware-git mailing list [email protected] http://frugalware.org/mailman/listinfo/frugalware-git
