pdf-devel
[Top][All Lists]
Advanced

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

[pdf-devel] Patch for FS#93 stack based iterators


From: gerel
Subject: [pdf-devel] Patch for FS#93 stack based iterators
Date: Tue, 27 Jan 2009 08:37:08 -0800 (PST)

Hi hackers,

I attach a patch for stack based iterators, in list and hash modules.

BTW, the current gnulib iterators are 28 bytes long, correct me if I'm wrong. 
I gave 48 bytes to iterators, though this remains open to discussion.

##
# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: address@hidden
# target_branch: file:///home/gerel/PROJECTS/libgnupdf/trunk/
# testament_sha1: 80a8528867587b4d8e409d318e9816c9a497c33b
# timestamp: 2009-01-27 13:24:13 -0300
# base_revision_id: address@hidden
# 
# Begin patch
=== modified file 'ChangeLog'
--- ChangeLog   2009-01-26 22:13:35 +0000
+++ ChangeLog   2009-01-27 14:38:27 +0000
@@ -1,3 +1,14 @@
+2009-01-27  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.
+
 2009-01-26  Jose E. Marchesi  <address@hidden>
 
        * doc/gnupdf.texi (Implementation Limits): New chapter.

=== modified file 'doc/gnupdf.texi'
--- doc/gnupdf.texi     2009-01-26 22:13:35 +0000
+++ doc/gnupdf.texi     2009-01-27 14:38:27 +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-27 16:24:10 +0000
@@ -1,4 +1,4 @@
-/* -*- mode: C -*- Time-stamp: "08/12/27 23:44:37 jemarch"
+/* -*- mode: C -*- Time-stamp: "2009-01-27 13:23:54 gerel"
  *
  *       File:         pdf-hash.h
  *       Date:         Sat Apr  12 12:22:05 2008
@@ -45,6 +45,8 @@
 
 /* BEGIN PUBLIC */
 
+#define PDF_HASH_ITERATOR_SIZE 48
+
 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;
+  char 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-27 16:24:10 +0000
@@ -1,4 +1,4 @@
-/* -*- mode: C -*- Time-stamp: "08/09/13 20:26:25 jemarch"
+/* -*- mode: C -*- Time-stamp: "2009-01-27 13:23:28 gerel"
  *
  *       File:         pdf-list.h
  *       Date:         Sat Mar 1 02:14:35 2008
@@ -42,15 +42,17 @@
 
 /* Data types */
 
+#define PDF_LIST_ITERATOR_SIZE 48
+
 struct pdf_list_s
 {
   void *gl_list;
   pdf_bool_t allow_duplicates;
 };
- 
+
 struct pdf_list_iterator_s
 {
-  void *gl_iterator;
+  char 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;
 }
 

# Begin bundle
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

###

cheers,

-gerel




reply via email to

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