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

Reply via email to