pdf-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[pdf-devel] New patch for stack based iterators


From: gerel
Subject: [pdf-devel] New patch for stack based iterators
Date: Wed, 28 Jan 2009 04:15:34 -0800 (PST)

After Michael's suggestions here is a patch for the task.

cheers,
-gerel

##
# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: address@hidden
# target_branch: file:///home/gerel/PROJECTS/libgnupdf/trunk/
# testament_sha1: 03ce67b1f2bc920a5b1cdee29a4d380ccf557230
# timestamp: 2009-01-28 08:59:04 -0300
# base_revision_id: address@hidden
# 
# Begin patch
=== modified file 'ChangeLog'
--- ChangeLog   2009-01-27 23:46:47 +0000
+++ ChangeLog   2009-01-28 11:58:58 +0000
@@ -1,3 +1,19 @@
+2009-01-28  Gerardo E. Gidoni  <address@hidden>
+
+       * doc/gnupdf.texi: removed PDF_ENOMEM status code for iterator
+       procedures.
+
+       * src/base/pdf-hash.c: implemented stack based iterators.
+
+       * src/base/pdf-hash.h: same.
+
+       * src/base/pdf-list.h: same.
+
+       * torture/unit/base/hash/pdf-hash-iterator-new.c: new iterator
+       size check.
+
+       * torture/unit/base/list/pdf-list-iterator.c: same.
+       
 2009-01-28  Jose E. Marchesi  <address@hidden>
 
        * doc/gnupdf-hg.texi (Opaque Pointers): Opaque pointers documented

=== modified file 'doc/gnupdf.texi'
--- doc/gnupdf.texi     2009-01-27 20:59:40 +0000
+++ doc/gnupdf.texi     2009-01-28 11:58:58 +0000
@@ -1977,8 +1977,6 @@
 @table @code
 @item PDF_OK
 The operation succeeded.
address@hidden PDF_ENOMEM
-Not enough memory.
 @item PDF_EBADDATA
 Either @var{iterator} is NULL or @var{table} is invalid.
 @end table
@@ -3962,8 +3960,6 @@
 @table @code
 @item PDF_OK
 @var{itr} contains a new iterator for @var{list}.
address@hidden PDF_ENOMEM
-There is no memory available for a new iterator.
 @item PDF_EBADDATA
 @var{itr} points to NULL.
 @end table
@@ -3999,8 +3995,6 @@
 @table @code
 @item PDF_OK
 @var{itr} contains a new iterator for @var{list} pointing to @var{start_index}.
address@hidden PDF_ENOMEM
-There is no memory available for a new iterator.
 @item PDF_EINVRANGE
 @var{start_index} or @var{end_index} is greater than the list size or less 
than 0.
 @item PDF_EBADDATA

=== modified file 'src/base/pdf-hash.c'
--- src/base/pdf-hash.c 2008-12-27 23:38:51 +0000
+++ src/base/pdf-hash.c 2009-01-27 14:38:27 +0000
@@ -1,4 +1,4 @@
-/* -*- mode: C -*- Time-stamp: "08/12/27 23:45:02 jemarch"
+/* -*- mode: C -*- Time-stamp: "2009-01-27 11:34:52 gerel"
  *
  *       File:         pdf-hash.c
  *       Date:         Sat Apr  12 12:22:05 2008
@@ -302,16 +302,8 @@
 
   if (iterator != NULL)
     {
-      iterator->gl_itr = pdf_alloc (sizeof(gl_list_iterator_t));
-      if (iterator->gl_itr != NULL)
-        {
-          *((gl_list_iterator_t*)iterator->gl_itr) =
-            gl_list_iterator ((gl_list_t)table.keys);
-        }
-      else
-        {
-          st = PDF_ENOMEM;
-        }
+      *((gl_list_iterator_t*)iterator->gl_itr) =
+        gl_list_iterator ((gl_list_t)table.keys);
     }
   else
     {
@@ -354,7 +346,6 @@
   if (iterator.gl_itr != NULL)
     {
       gl_list_iterator_free ((gl_list_iterator_t*)iterator.gl_itr);
-      pdf_dealloc (iterator.gl_itr);
     }
 
   return PDF_OK;

=== modified file 'src/base/pdf-hash.h'
--- src/base/pdf-hash.h 2008-12-27 23:38:51 +0000
+++ src/base/pdf-hash.h 2009-01-28 11:58:58 +0000
@@ -1,4 +1,4 @@
-/* -*- mode: C -*- Time-stamp: "08/12/27 23:44:37 jemarch"
+/* -*- mode: C -*- Time-stamp: "2009-01-28 08:33:27 gerel"
  *
  *       File:         pdf-hash.h
  *       Date:         Sat Apr  12 12:22:05 2008
@@ -45,6 +45,8 @@
 
 /* BEGIN PUBLIC */
 
+#define PDF_HASH_ITERATOR_SIZE 12
+
 typedef void (*pdf_hash_key_dispose_fn_t) (const void *key);
 
 struct pdf_hash_s
@@ -55,7 +57,7 @@
 
 struct pdf_hash_iterator_s
 {
-  void *gl_itr;
+  void *gl_itr[PDF_HASH_ITERATOR_SIZE];
 };
 
 typedef struct pdf_hash_s pdf_hash_t;

=== modified file 'src/base/pdf-list.h'
--- src/base/pdf-list.h 2008-09-13 18:30:12 +0000
+++ src/base/pdf-list.h 2009-01-28 11:58:58 +0000
@@ -1,4 +1,4 @@
-/* -*- mode: C -*- Time-stamp: "08/09/13 20:26:25 jemarch"
+/* -*- mode: C -*- Time-stamp: "2009-01-28 08:33:52 gerel"
  *
  *       File:         pdf-list.h
  *       Date:         Sat Mar 1 02:14:35 2008
@@ -42,15 +42,17 @@
 
 /* Data types */
 
+#define PDF_LIST_ITERATOR_SIZE 12
+
 struct pdf_list_s
 {
   void *gl_list;
   pdf_bool_t allow_duplicates;
 };
- 
+
 struct pdf_list_iterator_s
 {
-  void *gl_iterator;
+  void*gl_iterator[PDF_LIST_ITERATOR_SIZE];
 };
 
 struct pdf_list_node_s
@@ -747,17 +749,8 @@
 
   if (itr != NULL)
     {
-      itr->gl_iterator = pdf_alloc (sizeof(gl_list_iterator_t));
-
-      if (itr->gl_iterator != NULL)
-        {
-          *((gl_list_iterator_t*)itr->gl_iterator) =
-            gl_list_iterator ((gl_list_t)list.gl_list);
-        }
-      else
-        {
-          st = PDF_ENOMEM;
-        }
+      *((gl_list_iterator_t*)itr->gl_iterator) =
+        gl_list_iterator ((gl_list_t)list.gl_list);
     }
   else
     {
@@ -784,18 +777,9 @@
           (end_index > 0 && end_index <= pdf_list_size (list)) &&
           (start_index < end_index))
         {
-          itr->gl_iterator = pdf_alloc (sizeof(gl_list_iterator_t));
-      
-          if (itr->gl_iterator != NULL)
-            {
-              *((gl_list_iterator_t*)itr->gl_iterator) =
-                gl_list_iterator_from_to ((gl_list_t)list.gl_list, start_index,
+          *((gl_list_iterator_t*)itr->gl_iterator) =
+            gl_list_iterator_from_to ((gl_list_t)list.gl_list, start_index,
                                           end_index);
-            }
-          else
-            {
-              st = PDF_ENOMEM;
-            }
         }
       else
         {
@@ -832,8 +816,6 @@
 {
   gl_list_iterator_free ((gl_list_iterator_t*)(iterator->gl_iterator));
 
-  pdf_dealloc (iterator->gl_iterator);
-
   return PDF_OK;
 }
 

=== modified file 'torture/unit/base/hash/pdf-hash-iterator-new.c'
--- torture/unit/base/hash/pdf-hash-iterator-new.c      2008-09-10 19:11:31 
+0000
+++ torture/unit/base/hash/pdf-hash-iterator-new.c      2009-01-28 11:58:58 
+0000
@@ -1,4 +1,4 @@
-/* -*- mode: C -*- Time-stamp: "08/09/10 20:49:54 jemarch"
+/* -*- mode: C -*- Time-stamp: "2009-01-28 08:47:58 gerel"
  *
  *       File:         pdf-hash-iterator.c
  *       Date:         Wed Mar  12 12:43:00 2008
@@ -29,6 +29,7 @@
 #include <stdio.h>
 #include <pdf.h>
 #include <check.h>
+#include <gl_list.h>
 
 /*
  * Test: pdf_hash_iterator_001
@@ -74,6 +75,20 @@
 
 
 /*
+ * Test: pdf_hash_iterator_003
+ * Description:
+ *   Iterator size check.
+ * Success condition:
+ *   The pdf hash iterator size is greater or equal than the gl list one.
+ */
+START_TEST (pdf_hash_iterator_003)
+{
+  fail_if (sizeof(pdf_hash_iterator_t) < sizeof(gl_list_iterator_t));
+}
+END_TEST
+
+
+/*
  * Test case creation function
  */
 TCase *
@@ -82,6 +97,7 @@
   TCase *tc = tcase_create("pdf_hash_iterator");
   tcase_add_test(tc, pdf_hash_iterator_001);
   tcase_add_test(tc, pdf_hash_iterator_002);
+  tcase_add_test(tc, pdf_hash_iterator_003);
   return tc;
 }
 

=== modified file 'torture/unit/base/list/pdf-list-iterator.c'
--- torture/unit/base/list/pdf-list-iterator.c  2008-09-08 21:04:39 +0000
+++ torture/unit/base/list/pdf-list-iterator.c  2009-01-28 11:58:58 +0000
@@ -1,4 +1,4 @@
-/* -*- mode: C -*- Time-stamp: "08/09/08 22:52:27 jemarch"
+/* -*- mode: C -*- Time-stamp: "2009-01-28 08:43:12 gerel"
  *
  *       File:         pdf-list-iterator.c
  *       Date:         Wed Mar  12 12:43:00 2008
@@ -27,6 +27,7 @@
 #include <stdio.h>
 #include <pdf.h>
 #include <check.h>
+#include <gl_list.h>
 
 /*
  * Test: pdf_list_iterator_001
@@ -77,6 +78,21 @@
 
 
 /*
+ * Test: pdf_list_iterator_003
+ * Description:
+ *   Iterator size check.
+ * Success condition:
+ *   The pdf list iterator size is greater or equal than the gl list one.
+ */
+START_TEST (pdf_list_iterator_003)
+{
+  fail_if (sizeof(pdf_list_iterator_t) < sizeof(gl_list_iterator_t));
+}
+END_TEST
+
+
+
+/*
  * Test case creation function
  */
 TCase *
@@ -85,6 +101,7 @@
   TCase *tc = tcase_create("pdf_list_iterator");
   tcase_add_test(tc, pdf_list_iterator_001);
   tcase_add_test(tc, pdf_list_iterator_002);
+  tcase_add_test(tc, pdf_list_iterator_003);
 
   return tc;
 }

# Begin bundle
IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWbnyCkQADm/fgFVwWXf//3/n
3Bq////6YBIcD0H16cuWmooOgArShoyAHWNlm6AAoDrk0SFW2hQA4BhGE0xDAIBkAMI0yZMIwENB
KQQNDSnp6o8kaaA0NBoNAAAAAA4BhGE0xDAIBkAMI0yZMIwENBIiBCg01GNGSmwp6RkHlAAADRp6
mmTQRSJoST9U9NNqaAm0maaamI0MI0AGgAaaAqUQBMQBAQAp4U9EyaT1D1M1NABoY1LXExGphyv+
h9VAj5iNhspulz0U1cWQMQwXS6PFvcpMzQpUNjfNBevo/Uk9bG11vgfSR1jocHHOuRzS9Zv1mMWO
0buf8MO0LnKYzgrhpsPG0LiBMJiEJgpBorau+4sOJ46yWdbdlCz9p5TMEZtIy3tKUQjPKAlgKiKp
NstxcRi+FdUrgFJvli8MIojK1sJ1mhKxVb5yHQIMhcwfM1raBQDVU+obu3GpunyLAevxqYVN4E63
WwQkoYxpJsQvTqDWCRXYw9ViLpJhDBUfPx3xfnKL5yQptoFiioPDyoLdcK1ZVg2EA5CAzZkUyvR7
ouyHo9HcGRaFRUrggMqyXhMy0rfBZLOILvTFJRpWFpTE0G3M3hbjaeghbkjxm0qdQzZcCoSd6R6V
TyUIXq5wZfpLlwYeZ8Tt1pKdzwUwZNz18+O4vX/0/l675jzdJDI1A0LS5mpQtCnwNuUlkxsbBkKq
PoONKB0vXYOERHlosCUaNRC8WpoXwz2Za8Va6rz8IaB1mRpGiDt2ge6QW8LQJuHGrgz8G3wPeOEq
QNvicRoYndHl63XedY8Mss88W0O8S2JDQle+MMM4UFE5BLwtDbYd89AyJREHAZMhI3GDREzjMDN5
S0IUgeYeg81HkFKHFHblKaQpUKcqF2eMH3bX5ggnkbG2hhUMztDrQVA3qBWFFySHrG4pHZLvTE1P
1Q98RZa8Z5TEv3wuavbEskvWmR6A0SOEjCM214U3h9TYzvOHFs507t9QMcRwqRtjYDQNZewETEuy
ZvPCm2CWGw3X+HRckpSJSkSlIaqqTO8Dggw7dGMS5mJdwVT2E83PyxwJI2jY0lk0lV1YecGBauMN
KAlC+Kt6opHMGZ/pdhWHvWpAzaD4RKFSQuxaPf+FkNImQqYQNEIKAUGqDQtpiEk+46QwgsYfcwrR
oq00wUzyLEUS4USjFkac8EwSFc7nMtSI0jBykMc2zOLlGS14r3hE67lIyfG8wbm5R8e+Jvs7TXjb
CVohjKVpJx2ECCGlAOjCjCthY8VbgF9DBmJOqDKOOOZg7u3a/CZ1hrlnc2Cqs7KNMqb7C9uKrI/i
oRKKB3XN/PW2t13Fbpc5Nt/VnGNug4xqrDfSm8zb1yzFbx2kODaItpI2aY3LUvYh+1xX3ImLXdum
2rVzZNG5g2/sviZS3FWY3vhXjjUyYM5fxkNxk8lGa9Ri6LlHVaPKiUmD9/oh04u6ItRdrEidatSn
NayeaSaIuSotwtoeUKxksCe/vkpQrCF8TWZL1GndxhZFere75upvZIYRL2yi1mYpnE4y80SwtX+T
c6sGusSnco6PFwib1py4UWuLOO9z2sdBVnEWBMFDRwcFrAuaVjiyxuDJTDCmjYtclxvWCWKuTozO
RzcF6xgsWt7BzcnxnA5p9QuiYOzpoUUWTktrYtsN9Ipbjw1uN0hSGSL5jWHBYrngvFW5esYy/lhn
0W5YTiwvXO1M2CaqsXNiNDgmtkYLXR2Xr86YrzdQvZKrKit8ZxLeDPtjbjpuvnlobnE2wHhEVcs+
kkWM8XS26vBZZswUvcl6+8ttpTKc3WJg4tHRexZOCjgq7xhmG1INKioqGGIKf5BCsfRcqcpgta58
hcHTIg/K6QwXqZJPV1ZxMW9wYs7ZmrGDRUt3SxVCMk+bYX5TbVOTkQ0t7xGw102DwBJ0+bXCUFHR
3N7GTbHRKbnVyWOmHQydNYmTkvm7GsU9GHNbcbMCrrEc4lWzg7OTgXqOLB9YlzkKHWGuGGS3w4bl
y05AO8zI5UFi8w1fWC23aJhF+Cl1kSrhezas29y4OajdNLW7rEpMWTfd0w0TNt0VdmGzk58FS4zl
kwWM2/Bi58GDhnpaGbIZhxWNiui9zYNVElirFrL1GSriwXr2zZKFp0iPGI9MTfFqD3sSDVtGvrpi
bU2NkEbKWoVjY5KCMuCh1M6hQosjREzduvs17M5nr3LVpuXOlt13c2Xt6tX0fSG7xcWRudzq134u
rzDlYt4EZr3ZuXlrgWrGjvcE/T0+6JdD5RMs9pypJrZ2sa21iLSwFEI8mTtZCOFVEoELWPYMWQzE
jrZ9XKUOjozuMoQRByEdYaFTUx0NB74lsSR2ZFzBi5RFFG5i5NtvNgXtFGZyb2ajRuc3uh7YiyJ6
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
fIKRAA==

###




reply via email to

[Prev in Thread] Current Thread [Next in Thread]