[poppler] Branch 'xpdf303merge' - goo/GooList.cc goo/GooList.h

Albert Astals Cid aacid at kemper.freedesktop.org
Tue Aug 30 11:47:34 PDT 2011


 goo/GooList.cc |   22 ++++++++++++++++++++++
 goo/GooList.h  |   10 ++++++++++
 2 files changed, 32 insertions(+)

New commits:
commit e7e8082901e108130d5c98cc7648f143978c9562
Author: Albert Astals Cid <aacid at kde.org>
Date:   Tue Aug 30 20:50:17 2011 +0200

    xpdf303: GooList::copy, GooList::reverse and GooList::put

diff --git a/goo/GooList.cc b/goo/GooList.cc
index a7243ea..6ce4952 100644
--- a/goo/GooList.cc
+++ b/goo/GooList.cc
@@ -39,6 +39,16 @@ GooList::~GooList() {
   gfree(data);
 }
 
+GooList *GooList::copy() {
+  GooList *ret;
+
+  ret = new GooList(length);
+  ret->length = length;
+  memcpy(ret->data, data, length * sizeof(void *));
+  ret->inc = inc;
+  return ret;
+}
+
 void GooList::append(void *p) {
   if (length >= size) {
     expand();
@@ -89,6 +99,18 @@ void GooList::sort(int (*cmp)(const void *obj1, const void *obj2)) {
   qsort(data, length, sizeof(void *), cmp);
 }
 
+void GooList::reverse() {
+  void *t;
+  int n, i;
+
+  n = length / 2;
+  for (i = 0; i < n; ++i) {
+    t = data[i];
+    data[i] = data[length - 1 - i];
+    data[length - 1 - i] = t;
+  }
+}
+
 void GooList::expand() {
   size += (inc > 0) ? inc : size;
   data = (void **)greallocn(data, size, sizeof(void*));
diff --git a/goo/GooList.h b/goo/GooList.h
index 576f3e8..964568a 100644
--- a/goo/GooList.h
+++ b/goo/GooList.h
@@ -36,12 +36,19 @@ public:
   // Get the number of elements.
   int getLength() { return length; }
 
+  // Returns a (shallow) copy of this list.
+  GooList *copy();
+
   //----- ordered list support
 
   // Return the <i>th element.
   // Assumes 0 <= i < length.
   void *get(int i) { return data[i]; }
 
+  // Replace the <i>th element.
+  // Assumes 0 <= i < length.
+  void put(int i, void *p) { data[i] = p; }
+
   // Append an element to the end of the list.
   void append(void *p);
 
@@ -61,6 +68,9 @@ public:
   // be double-dereferenced.
   void sort(int (*cmp)(const void *ptr1, const void *ptr2));
 
+  // Reverse the list.
+  void reverse();
+
   //----- control
 
   // Set allocation increment to <inc>.  If inc > 0, that many


More information about the poppler mailing list