[Top][All Lists]
[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==
###
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [pdf-devel] New patch for stack based iterators,
gerel <=