[Top][All Lists]
[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