pdf-devel
[Top][All Lists]
Advanced

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

[pdf-devel] List implementation patches


From: gerel
Subject: [pdf-devel] List implementation patches
Date: Thu, 06 Mar 2008 21:58:01 -0300

Voila! I managed to integrate the List module. All seems to work fine.

I needed to modify several files in order to get the adequate public API.
Here are the patches and the corresponding List module implementation.

##

Index: src/Makefile.am
===================================================================
RCS file: /sources/pdf/libgnupdf/src/Makefile.am,v
retrieving revision 1.37
diff -u -r1.37 Makefile.am
--- src/Makefile.am     5 Mar 2008 11:32:04 -0000       1.37
+++ src/Makefile.am     7 Mar 2008 00:51:35 -0000
@@ -23,6 +23,8 @@
 
 # Base Layer sources
 
+LIST_MODULE_SOURCES = base/pdf-list.c base/pdf-list.h
+
 ALLOC_MODULE_SOURCES = base/pdf-alloc.c base/pdf-alloc.h
 
 TYPES_MODULE_SOURCES = base/pdf-types.c base/pdf-types.h
@@ -47,7 +49,11 @@
                      $(ALLOC_MODULE_SOURCES) \
                      $(TYPES_MODULE_SOURCES) \
                      $(STM_MODULE_SOURCES) \
-                     $(ERROR_MODULE_SOURCES)
+                     $(ERROR_MODULE_SOURCES) \
+                    $(LIST_MODULE_SOURCES)
+
+
+
 # Library sources
 
 libgnupdf_la_SOURCES = pdf-global.c pdf-global.h
@@ -70,7 +76,9 @@
 
 PUBLIC_HDRS = pdf-global.h \
               base/pdf-types.h \
+              base/pdf-error.h \
               base/pdf-alloc.h \
+              base/pdf-list.h \
               base/pdf-stm-f-a85.h \
               base/pdf-stm-f-ahex.h \
               base/pdf-stm-f-fax.h \
@@ -79,8 +87,9 @@
               base/pdf-stm-f-pred.h \
               base/pdf-stm-f-rl.h \
               base/pdf-stm-file.h \
-              base/pdf-stm.h \
-              base/pdf-error.h
+              base/pdf-stm.h
+
+
 
 pdf.h : $(PUBLIC_HDRS)
        chmod +x $(top_srcdir)/src/extract-public-hdr


Index: src/base/pdf-stm.c
===================================================================
RCS file: /sources/pdf/libgnupdf/src/base/pdf-stm.c,v
retrieving revision 1.4
diff -u -r1.4 pdf-stm.c
--- src/base/pdf-stm.c  5 Mar 2008 11:32:05 -0000       1.4
+++ src/base/pdf-stm.c  7 Mar 2008 00:51:36 -0000
@@ -1,4 +1,4 @@
-/* -*- mode: C -*- Time-stamp: "08/03/05 12:30:03 jemarch"
+/* -*- mode: C -*- Time-stamp: "2008-03-06 21:33:01 gerel"
  *
  *       File:         pdf-stm.c
  *       Date:         Fri Jul  6 18:43:15 2007
@@ -42,7 +42,7 @@
                                    pdf_stm_dealloc_filter_fn_t dealloc_fn,
                                    void *conf);
 static void pdf_stm_filter_dealloc_list (const void *elt);
-static int pdf_stm_apply_filters (gl_list_t filter_list, pdf_char_t **buf, 
pdf_size_t *buf_size);
+static int pdf_stm_apply_filters (pdf_list_t filter_list, pdf_char_t **buf, 
pdf_size_t *buf_size);
                                    
 
 /*
@@ -633,17 +633,17 @@
   int count;
 
   for (count = 0; 
-       count < gl_list_size (stm->read_filter_list); 
+       count < pdf_list_size (stm->read_filter_list); 
        count++)
     {
-      gl_list_remove_at (stm->read_filter_list, 0);
+      pdf_list_remove_at (stm->read_filter_list, 0);
     }
 
   for (count = 0; 
-       count < gl_list_size (stm->write_filter_list); 
+       count < pdf_list_size (stm->write_filter_list); 
        count++)
     {
-      gl_list_remove_at (stm->write_filter_list, 0);
+      pdf_list_remove_at (stm->write_filter_list, 0);
     }
 
   return PDF_OK;
@@ -659,17 +659,13 @@
 
   stm = (pdf_stm_t) pdf_alloc (sizeof (struct pdf_stm_s));
   stm->read_filter_list =
-    gl_list_create_empty (GL_ARRAY_LIST,
-                          NULL,      /* compare_fn */
-                          NULL,      /* hashcode_fn */
-                          pdf_stm_filter_dealloc_list,
-                          PDF_TRUE); /* allow duplicates */
+    pdf_list_create (NULL,      /* compare_fn */
+                     pdf_stm_filter_dealloc_list,
+                     PDF_TRUE); /* allow duplicates */
   stm->write_filter_list =
-    gl_list_create_empty (GL_ARRAY_LIST,
-                          NULL,      /* compare_fn */
-                          NULL,      /* hashcode_fn */
-                          pdf_stm_filter_dealloc_list,
-                          PDF_TRUE); /* allow duplicates */
+    pdf_list_create (NULL,      /* compare_fn */
+                     pdf_stm_filter_dealloc_list,
+                     PDF_TRUE); /* allow duplicates */
 
   return stm;
 }
@@ -677,8 +673,8 @@
 static void
 pdf_stm_dealloc (pdf_stm_t stm)
 {
-  gl_list_free (stm->read_filter_list);
-  gl_list_free (stm->write_filter_list);
+  pdf_list_destroy (stm->read_filter_list);
+  pdf_list_destroy (stm->write_filter_list);
   pdf_dealloc (stm);
 }
 
@@ -713,13 +709,13 @@
     {
     case PDF_STM_FILTER_READ:
       {
-        gl_list_add_last (stm->read_filter_list, 
+        pdf_list_add_last (stm->read_filter_list, 
                           (const void *) filter);
         break;
       }
     case PDF_STM_FILTER_WRITE:
       {
-        gl_list_add_last (stm->write_filter_list, 
+        pdf_list_add_last (stm->write_filter_list, 
                           (const void *) filter);
         break;
       }
@@ -745,23 +741,23 @@
 }
 
 static int
-pdf_stm_apply_filters (gl_list_t filter_list,
+pdf_stm_apply_filters (pdf_list_t filter_list,
                        pdf_char_t **buf,
                        pdf_size_t *buf_size)
 {
   pdf_stm_filter_t filter;
-  gl_list_iterator_t iter;
-  gl_list_node_t node;
+  pdf_list_iterator_t iter;
+  pdf_list_node_t node;
   pdf_char_t *filtered_data;
   pdf_stm_pos_t filtered_size;
 
-  if (gl_list_size (filter_list) == 0)
+  if (pdf_list_size (filter_list) == 0)
     {
       return PDF_TRUE;
     }
   
-  iter = gl_list_iterator (filter_list);
-  while (gl_list_iterator_next (&iter, (const void **) &filter, &node))
+  iter = pdf_list_iterator (filter_list);
+  while (pdf_list_iterator_next (&iter, (const void **) &filter, &node))
     {
       if (filter->funcs.apply (filter->data, 
                                *buf, *buf_size,
@@ -774,7 +770,7 @@
           *buf_size = filtered_size;
         }
     }
-  gl_list_iterator_free (&iter);
+  pdf_list_iterator_free (&iter);
 
   return PDF_OK;
 }


Index: src/base/pdf-stm.h
===================================================================
RCS file: /sources/pdf/libgnupdf/src/base/pdf-stm.h,v
retrieving revision 1.3
diff -u -r1.3 pdf-stm.h
--- src/base/pdf-stm.h  5 Mar 2008 11:32:05 -0000       1.3
+++ src/base/pdf-stm.h  7 Mar 2008 00:51:40 -0000
@@ -1,4 +1,4 @@
-/* -*- mode: C -*- Time-stamp: "08/03/05 12:31:09 jemarch"
+/* -*- mode: C -*- Time-stamp: "2008-03-06 21:23:34 gerel"
  *
  *       File:         pdf-stm.h
  *       Date:         Fri Jul  6 18:37:57 2007
@@ -49,9 +49,8 @@
 #include <config.h>
 
 #include <stdio.h>
-/* BEGIN PUBLIC */
-#include <gl_array_list.h>
-/* END PUBLIC */
+
+#include <pdf-list.h>
 #include <pdf-types.h>
 #include <pdf-stm-f-null.h>
 #ifdef HAVE_LIBZ
@@ -264,8 +263,8 @@
 {
   struct pdf_stm_be_s backend;
   
-  gl_list_t read_filter_list;
-  gl_list_t write_filter_list;
+  pdf_list_t read_filter_list;
+  pdf_list_t write_filter_list;
 };
 
 typedef struct pdf_stm_s *pdf_stm_t;


Index: src/base/pdf-types.h
===================================================================
RCS file: /sources/pdf/libgnupdf/src/base/pdf-types.h,v
retrieving revision 1.4
diff -u -r1.4 pdf-types.h
--- src/base/pdf-types.h        5 Mar 2008 11:32:05 -0000       1.4
+++ src/base/pdf-types.h        7 Mar 2008 00:51:40 -0000
@@ -1,4 +1,4 @@
-/* -*- mode: C -*- Time-stamp: "08/03/05 12:18:52 jemarch"
+/* -*- mode: C -*- Time-stamp: "2008-03-06 00:07:40 gerel"
  *
  *       File:         pdf-types.h
  *       Date:         Sun Feb 10 21:30:00 2008
@@ -55,6 +55,8 @@
 /* Memory indexes (size_t) */
 typedef size_t pdf_size_t;
 
+typedef unsigned char pdf_bool_t;
+
 /* PDF manages bytes with values in the range 0-255 */
 
 typedef unsigned char pdf_char_t;


Index: src/object/pdf-obj.c
===================================================================
RCS file: /sources/pdf/libgnupdf/src/object/pdf-obj.c,v
retrieving revision 1.2
diff -u -r1.2 pdf-obj.c
--- src/object/pdf-obj.c        11 Feb 2008 00:11:28 -0000      1.2
+++ src/object/pdf-obj.c        7 Mar 2008 00:51:41 -0000
@@ -1,4 +1,4 @@
-/* -*- mode: C -*- Time-stamp: "08/02/11 01:05:57 jemarch"
+/* -*- mode: C -*- Time-stamp: "2008-03-06 20:11:28 gerel"
  *
  *       File:         pdf-obj.c
  *       Date:         Sat Jul  7 03:04:30 2007
@@ -152,11 +152,9 @@
   new_array = pdf_alloc_obj ();
   new_array->type = PDF_ARRAY_OBJ;
   new_array->value.array.objs = 
-    gl_list_create_empty (GL_ARRAY_LIST,
-                          pdf_compare_obj_list_elt,
-                          NULL,      /* hashcode_fn */
-                          pdf_dealloc_obj_list_elt,
-                          PDF_TRUE); /* allow duplicates */
+    pdf_list_create (pdf_compare_obj_list_elt,
+                     pdf_dealloc_obj_list_elt,
+                     PDF_TRUE); /* allow duplicates */
 
   return new_array;
 }
@@ -169,11 +167,9 @@
   new_dict = pdf_alloc_obj ();
   new_dict->type = PDF_DICT_OBJ;
   new_dict->value.dict.entries = 
-    gl_list_create_empty (GL_ARRAY_LIST,
-                          pdf_compare_dict_entry_list_elt,
-                          NULL,      /* hashcode_fn */
-                          pdf_dealloc_dict_entry_list_elt,
-                          PDF_FALSE); /* disallow duplicates. */
+    pdf_list_create (pdf_compare_dict_entry_list_elt,
+                     pdf_dealloc_dict_entry_list_elt,
+                     PDF_FALSE); /* disallow duplicates. */
 
   return new_dict;
 }
@@ -295,13 +291,13 @@
 inline int
 pdf_get_array_size (pdf_obj_t obj)
 {
-  return gl_list_size (obj->value.array.objs);
+  return pdf_list_size (obj->value.array.objs);
 }
 
 inline int
 pdf_get_dict_size (pdf_obj_t obj)
 {
-  return gl_list_size (obj->value.dict.entries);
+  return pdf_list_size (obj->value.dict.entries);
 }
 
 int
@@ -313,7 +309,7 @@
 
   if ((obj->type != PDF_DICT_OBJ) ||
       (key->type != PDF_NAME_OBJ) ||
-      (gl_list_size (obj->value.dict.entries) == 0))
+      (pdf_list_size (obj->value.dict.entries) == 0))
     {
       return PDF_FALSE;
     }
@@ -322,7 +318,7 @@
   entry->key = pdf_obj_dup (key);
   entry->value = pdf_create_null ();
 
-  if (gl_list_search (obj->value.dict.entries,
+  if (pdf_list_search (obj->value.dict.entries,
                       (const void *) entry) != NULL)
     {
       entry_p = PDF_TRUE;
@@ -342,11 +338,11 @@
 {
   pdf_dict_entry_t entry;
   pdf_dict_entry_t result_entry;
-  gl_list_node_t list_node;
+  pdf_list_node_t list_node;
 
   if ((obj->type != PDF_DICT_OBJ) ||
       (key->type != PDF_NAME_OBJ) ||
-      (gl_list_size (obj->value.dict.entries) == 0))
+      (pdf_list_size (obj->value.dict.entries) == 0))
     {
       return NULL;
     }
@@ -355,7 +351,7 @@
   entry->key = pdf_obj_dup (key);
   entry->value = pdf_create_null ();
   
-  list_node = gl_list_search (obj->value.dict.entries,
+  list_node = pdf_list_search (obj->value.dict.entries,
                               entry);
   pdf_dealloc_dict_entry (entry);
 
@@ -366,7 +362,7 @@
   else
     {
       result_entry = (pdf_dict_entry_t) 
-        gl_list_node_value (obj->value.dict.entries, list_node);
+        pdf_list_node_value (obj->value.dict.entries, list_node);
       
       return result_entry->value;
     }
@@ -390,7 +386,7 @@
   entry->key = pdf_obj_dup (key);
   entry->value = pdf_create_null ();
 
-  if (gl_list_remove (obj->value.dict.entries,
+  if (pdf_list_remove (obj->value.dict.entries,
                       entry))
     {
       status = PDF_OK;
@@ -423,7 +419,7 @@
   entry = pdf_alloc_dict_entry ();
   entry->key = key;
   entry->value = value;
-  if (gl_list_add_last (obj->value.dict.entries,
+  if (pdf_list_add_last (obj->value.dict.entries,
                         entry) == NULL)
     {
       pdf_dealloc_dict_entry (entry);
@@ -620,12 +616,12 @@
 {
   if ((obj->type != PDF_ARRAY_OBJ) ||
       (index < 0) ||
-      (index >= gl_list_size (obj->value.array.objs)))
+      (index >= pdf_list_size (obj->value.array.objs)))
     {
       return PDF_ERROR;
     }
 
-  gl_list_remove_at (obj->value.array.objs, index);
+  pdf_list_remove_at (obj->value.array.objs, index);
   return PDF_OK;
 }
 
@@ -635,12 +631,12 @@
 {
   if ((obj->type != PDF_ARRAY_OBJ) ||
       (index < 0) ||
-      (index >= gl_list_size (obj->value.array.objs)))
+      (index >= pdf_list_size (obj->value.array.objs)))
     {
       return NULL;
     }
 
-  return (pdf_obj_t) gl_list_get_at (obj->value.array.objs, index);
+  return (pdf_obj_t) pdf_list_get_at (obj->value.array.objs, index);
 }
 
 int
@@ -650,12 +646,12 @@
 {
   if ((obj->type != PDF_ARRAY_OBJ) ||
       (index < 0) ||
-      (index >= gl_list_size (obj->value.array.objs)))
+      (index >= pdf_list_size (obj->value.array.objs)))
     {
       return PDF_ERROR;
     }
 
-  gl_list_set_at (obj->value.array.objs,
+  pdf_list_set_at (obj->value.array.objs,
                   index,
                   elt);
   return PDF_OK;
@@ -668,12 +664,12 @@
 {
   if ((obj->type != PDF_ARRAY_OBJ) ||
       (index < 0) ||
-      (index > gl_list_size (obj->value.array.objs)))
+      (index > pdf_list_size (obj->value.array.objs)))
     {
       return PDF_ERROR;
     }
 
-  gl_list_add_at (obj->value.array.objs,
+  pdf_list_add_at (obj->value.array.objs,
                   index,
                   elt);
 
@@ -717,12 +713,12 @@
       }
     case PDF_ARRAY_OBJ:
       {
-        gl_list_free (obj->value.array.objs);
+        pdf_list_destroy (obj->value.array.objs);
         break;
       }
     case PDF_DICT_OBJ:
       {
-        gl_list_free (obj->value.dict.entries);
+        pdf_list_destroy (obj->value.dict.entries);
         break;
       }
     default:
@@ -816,29 +812,29 @@
   int equal_p;
   pdf_obj_t obj_elt1;
   pdf_obj_t obj_elt2;
-  gl_list_node_t list_node1;
-  gl_list_node_t list_node2;
-  gl_list_iterator_t iter1;
-  gl_list_iterator_t iter2;
+  pdf_list_node_t list_node1;
+  pdf_list_node_t list_node2;
+  pdf_list_iterator_t iter1;
+  pdf_list_iterator_t iter2;
 
-  if ((gl_list_size (obj1->value.array.objs) !=
-       gl_list_size (obj2->value.array.objs)))
+  if ((pdf_list_size (obj1->value.array.objs) !=
+       pdf_list_size (obj2->value.array.objs)))
     {
       return PDF_FALSE;
     }
 
-  if (gl_list_size (obj1->value.array.objs) == 0)
+  if (pdf_list_size (obj1->value.array.objs) == 0)
     {
       return PDF_TRUE;
     }
 
   equal_p = PDF_TRUE;
 
-  iter1 = gl_list_iterator (obj1->value.array.objs);
-  iter2 = gl_list_iterator (obj2->value.array.objs);
+  iter1 = pdf_list_iterator (obj1->value.array.objs);
+  iter2 = pdf_list_iterator (obj2->value.array.objs);
   
-  while (gl_list_iterator_next (&iter1, (const void **) &obj_elt1, 
&list_node1) &&
-         gl_list_iterator_next (&iter2, (const void **) &obj_elt2, 
&list_node2))
+  while (pdf_list_iterator_next (&iter1, (const void **) &obj_elt1, 
&list_node1) &&
+         pdf_list_iterator_next (&iter2, (const void **) &obj_elt2, 
&list_node2))
     {
       /* Note the indirect recursion there => avoid loops!!! */
       if (!pdf_obj_equal_p (obj_elt1, obj_elt2))
@@ -848,8 +844,8 @@
         }
     }
   
-  gl_list_iterator_free (&iter1);
-  gl_list_iterator_free (&iter2);
+  pdf_list_iterator_free (&iter1);
+  pdf_list_iterator_free (&iter2);
 
   return equal_p;
 }
@@ -862,20 +858,20 @@
                   pdf_obj_t obj2)
 {
   int equal_p;
-  gl_list_t int_list;
-  gl_list_node_t list_node1;
-  gl_list_node_t list_node2;
+  pdf_list_t int_list;
+  pdf_list_node_t list_node1;
+  pdf_list_node_t list_node2;
   pdf_dict_entry_t entry_elt1;
   pdf_dict_entry_t entry_elt2;
-  gl_list_iterator_t iter;
+  pdf_list_iterator_t iter;
   
-  if ((gl_list_size (obj1->value.dict.entries) !=
-       gl_list_size (obj2->value.dict.entries)))
+  if ((pdf_list_size (obj1->value.dict.entries) !=
+       pdf_list_size (obj2->value.dict.entries)))
     {
       return PDF_FALSE;
     }
   
-  if (gl_list_size (obj1->value.dict.entries) == 0)
+  if (pdf_list_size (obj1->value.dict.entries) == 0)
     {
       return PDF_TRUE;
     }
@@ -885,39 +881,37 @@
 
   /* Create the int_list intersection list */
   int_list =
-    gl_list_create_empty (GL_ARRAY_LIST,
-                          pdf_compare_dict_entry_list_elt,
-                          NULL,       /* hashcode_fn */
-                          pdf_dealloc_dict_entry_list_elt,
-                          PDF_FALSE); /* disallow duplicates */
-  iter = gl_list_iterator (obj1->value.dict.entries);
-  while (gl_list_iterator_next (&iter, (const void**) &entry_elt1, 
&list_node1))
+    pdf_list_create (pdf_compare_dict_entry_list_elt,
+                           pdf_dealloc_dict_entry_list_elt,
+                           PDF_FALSE); /* disallow duplicates */
+  iter = pdf_list_iterator (obj1->value.dict.entries);
+  while (pdf_list_iterator_next (&iter, (const void**) &entry_elt1, 
&list_node1))
     {
       entry_elt2 = (pdf_dict_entry_t) xmalloc (sizeof(struct 
pdf_dict_entry_s));
       entry_elt2->key = pdf_obj_dup (entry_elt1->key);
       entry_elt2->value = pdf_obj_dup (entry_elt1->value);
      
-      gl_list_add_last (int_list, entry_elt2);
+      pdf_list_add_last (int_list, entry_elt2);
     }
-  gl_list_iterator_free (&iter);
+  pdf_list_iterator_free (&iter);
 
   /* Calculate the equal-intersection between the dictionaries */
-  iter = gl_list_iterator (obj2->value.dict.entries);
-  while (gl_list_iterator_next (&iter, (const void**) &entry_elt1, 
&list_node1))
+  iter = pdf_list_iterator (obj2->value.dict.entries);
+  while (pdf_list_iterator_next (&iter, (const void**) &entry_elt1, 
&list_node1))
     {
-      list_node2 = gl_list_search (int_list, (const void *) entry_elt1);
+      list_node2 = pdf_list_search (int_list, (const void *) entry_elt1);
       if (list_node2 != NULL)
         {
-          gl_list_remove_node (int_list, list_node2);
+          pdf_list_remove_node (int_list, list_node2);
         } 
     }
-  gl_list_iterator_free (&iter);
+  pdf_list_iterator_free (&iter);
 
   /* Is the intersection empty? */
-  equal_p = (gl_list_size (int_list) == 0);
+  equal_p = (pdf_list_size (int_list) == 0);
 
   /* Clean the kitchen */
-  gl_list_free (int_list);
+  pdf_list_destroy (int_list);
 
   /* Bye bye */
   return equal_p;
@@ -940,19 +934,19 @@
 {
   pdf_obj_t new_array;
   pdf_obj_t obj_elt;
-  gl_list_iterator_t iter;
-  gl_list_node_t list_node;
+  pdf_list_iterator_t iter;
+  pdf_list_node_t list_node;
   
 
   new_array = pdf_create_array ();
 
-  iter = gl_list_iterator (obj->value.array.objs);
-  while (gl_list_iterator_next (&iter, (const void**) &obj_elt, &list_node))
+  iter = pdf_list_iterator (obj->value.array.objs);
+  while (pdf_list_iterator_next (&iter, (const void**) &obj_elt, &list_node))
     {
-      gl_list_add_last (new_array->value.array.objs, 
+      pdf_list_add_last (new_array->value.array.objs, 
                         pdf_obj_dup (obj_elt));
     }
-  gl_list_iterator_free (&iter);
+  pdf_list_iterator_free (&iter);
 
   return new_array;
 }
@@ -963,22 +957,22 @@
   pdf_obj_t new_dict;
   pdf_dict_entry_t entry_elt;
   pdf_dict_entry_t new_entry_elt;
-  gl_list_iterator_t iter;
-  gl_list_node_t list_node;
+  pdf_list_iterator_t iter;
+  pdf_list_node_t list_node;
   
   new_dict = pdf_create_dict ();
 
-  iter = gl_list_iterator (obj->value.dict.entries);
-  while (gl_list_iterator_next (&iter, (const void**) &entry_elt, &list_node))
+  iter = pdf_list_iterator (obj->value.dict.entries);
+  while (pdf_list_iterator_next (&iter, (const void**) &entry_elt, &list_node))
     {
       new_entry_elt = pdf_alloc_dict_entry ();
       new_entry_elt->key = pdf_obj_dup (entry_elt->key);
       new_entry_elt->value = pdf_obj_dup (entry_elt->value);
 
-      gl_list_add_last (new_dict->value.dict.entries, 
+      pdf_list_add_last (new_dict->value.dict.entries, 
                         new_entry_elt);
     }
-  gl_list_iterator_free (&iter);
+  pdf_list_iterator_free (&iter);
 
   return new_dict;
 }


Index: src/object/pdf-obj.h
===================================================================
RCS file: /sources/pdf/libgnupdf/src/object/pdf-obj.h,v
retrieving revision 1.2
diff -u -r1.2 pdf-obj.h
--- src/object/pdf-obj.h        11 Feb 2008 00:11:28 -0000      1.2
+++ src/object/pdf-obj.h        7 Mar 2008 00:51:41 -0000
@@ -1,4 +1,4 @@
-/* -*- mode: C -*- Time-stamp: "08/02/11 01:06:02 jemarch"
+/* -*- mode: C -*- Time-stamp: "2008-03-06 20:09:02 gerel"
  *
  *       File:         pdf-obj.h
  *       Date:         Sat Jul  7 01:10:11 2007
@@ -44,7 +44,7 @@
 #define PDF_OBJ_H
 
 #include <config.h>
-#include <gl_array_list.h>
+#include <pdf-list.h>
 #include <pdf-base.h>
 #include <pdf-stm.h>
 
@@ -111,7 +111,7 @@
 
 struct pdf_array_s
 {
-  gl_list_t objs;
+  pdf_list_t objs;
 };
 
 typedef struct pdf_array_s *pdf_array_t;
@@ -135,7 +135,7 @@
 
 struct pdf_dict_s
 {
-  gl_list_t entries;
+  pdf_list_t entries;
 };
 
 typedef struct pdf_dict_s *pdf_dict_t;


--- pdf-list.h ---
/* -*- mode: C -*- Time-stamp: "2008-03-06 21:35:03 gerel"
 *
 *       File:         pdf-list.h
 *       Date:         Sat Mar 1 02:14:35 2008
 *
 *       GNU PDF Library - Header file for the List module
 *
 */

/* Copyright (C) 2008 Free Software Foundation, Inc. */

/* This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#ifndef PDF_LIST_H
#define PDF_LIST_H

#include <pdf-types.h>
#include <pdf-error.h>


/* BEGIN PUBLIC */

#include <gl_array_list.h>

/* List module API implementation */

/* Data types */

typedef gl_list_t pdf_list_t;
typedef gl_list_node_t pdf_list_node_t;
typedef gl_list_iterator_t pdf_list_iterator_t;
typedef gl_listelement_equals_fn pdf_list_element_equals_fn_t;
typedef gl_listelement_dispose_fn pdf_list_element_dispose_fn_t;

/* Creation and destruction functions */

pdf_list_t pdf_list_create (pdf_list_element_equals_fn_t
                            equals_fn, pdf_list_element_dispose_fn_t dispose_fn,
                            pdf_bool_t allow_duplicates);
pdf_status_t pdf_list_destroy (pdf_list_t list);

/* Property management functions */

pdf_size_t pdf_list_size (pdf_list_t list);

/* Element searching functions */

pdf_list_node_t pdf_list_search (pdf_list_t list, const void* element);
pdf_list_node_t pdf_list_search_from (pdf_list_t list, pdf_size_t start_index,
                                      const void* element);
pdf_list_node_t pdf_list_search_from_to (pdf_list_t list,
                                         pdf_size_t start_index,
                                         pdf_size_t end_index,
                                         const void* element);
pdf_list_node_t pdf_list_next_node (pdf_list_t list, pdf_list_node_t node);
pdf_list_node_t pdf_list_previous_node (pdf_list_t list, pdf_list_node_t node);
pdf_size_t pdf_list_indexof (pdf_list_t list, const void*element);
pdf_size_t pdf_list_indexof_from (pdf_list_t list, pdf_size_t start_index,
                                  const void* element);
pdf_size_t pdf_list_indexof_from_to (pdf_list_t list, pdf_size_t start_index,
                                     pdf_size_t end_index, const void* element);

/* Element setting and getting functions */

const void * pdf_list_node_value (pdf_list_t list, pdf_list_node_t node);
const void * pdf_list_get_at (pdf_list_t list, pdf_size_t position);
pdf_list_node_t pdf_list_set_at (pdf_list_t list, pdf_size_t position,
                                 const void* element);

/* Element addition and removal functions */

pdf_list_node_t pdf_list_add_first (pdf_list_t list, const void* element);
pdf_list_node_t pdf_list_add_last (pdf_list_t list, const void* element);
pdf_list_node_t pdf_list_add_at (pdf_list_t list, pdf_size_t position,
                                 const void* element);
pdf_status_t pdf_list_remove_node (pdf_list_t list, pdf_list_node_t node);
pdf_status_t pdf_list_remove_at (pdf_list_t list, pdf_size_t position);
pdf_status_t pdf_list_remove (pdf_list_t list, const void * element);

/* Element iterator functions */

pdf_list_iterator_t pdf_list_iterator (pdf_list_t list);
pdf_list_iterator_t pdf_list_iterator_from_to (pdf_list_t list,
                                               pdf_size_t start_index,
                                               pdf_size_t end_index);
pdf_status_t pdf_list_iterator_next (pdf_list_iterator_t *iterator,
                                     const void **element_pointer,
                                     pdf_list_node_t *node_pointer);
pdf_status_t pdf_list_iterator_free (pdf_list_iterator_t *iterator);


/* END PUBLIC */

#endif /* PDF_LIST_H */

/* End of pdf-list.h */
--- EOF pdf-list.h ---


--- pdf-list.c ---
/* -*- mode: C -*- Time-stamp: "2008-03-06 00:16:38 gerel"
 *
 *       File:         pdf-list.c
 *       Date:         Sat Mar 1 02:14:35 2008
 *
 *       GNU PDF Library - Implementation of the List module
 *
 */

/* Copyright (C) 2008 Free Software Foundation, Inc. */

/* This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */


#include <pdf-list.h>


/* Creation and destruction functions */

inline pdf_list_t
pdf_list_create (pdf_list_element_equals_fn_t equals_fn,
                 pdf_list_element_dispose_fn_t dispose_fn,
                 pdf_bool_t allow_duplicates)
{
  return ((pdf_list_t) gl_list_create_empty(GL_ARRAY_LIST, equals_fn, NULL,
                                            dispose_fn, allow_duplicates));
}

inline pdf_status_t
pdf_list_destroy (pdf_list_t list)
{
  gl_list_free (list);
  return PDF_OK;
}

/* Property management functions */

inline pdf_size_t
pdf_list_size (pdf_list_t list)
{
  return ((pdf_size_t) gl_list_size(list));
}

/* Element searching functions */

inline pdf_list_node_t
pdf_list_search (pdf_list_t list, const void* element)
{
  return ((pdf_list_node_t) gl_list_search (list, element));
}

inline pdf_list_node_t
pdf_list_search_from (pdf_list_t list, pdf_size_t start_index,
                      const void* element)
{
  return ((pdf_list_node_t) gl_list_search_from(list, start_index, element));
}

inline pdf_list_node_t
pdf_list_search_from_to (pdf_list_t list, pdf_size_t start_index,
                         pdf_size_t end_index, const void* element)
{
  return ((pdf_list_node_t) gl_list_search_from_to (list, start_index,
                                                    end_index, element));
}

inline pdf_list_node_t
pdf_list_next_node (pdf_list_t list, pdf_list_node_t node)
{
  return ((pdf_list_node_t) gl_list_next_node (list, node));
}



inline pdf_list_node_t
pdf_list_previous_node (pdf_list_t list, pdf_list_node_t node)
{
  return ((pdf_list_node_t) gl_list_previous_node (list, node));
}

inline pdf_size_t
pdf_list_indexof (pdf_list_t list, const void*element)
{
  return ((pdf_size_t) gl_list_indexof (list, element));
}


inline pdf_size_t
pdf_list_indexof_from (pdf_list_t list, pdf_size_t start_index,
                       const void* element)
{
  return ((pdf_size_t) gl_list_indexof_from (list, start_index, element));
}


inline pdf_size_t
pdf_list_indexof_from_to (pdf_list_t list, pdf_size_t start_index,
                          pdf_size_t end_index, const void* element)
{
  return ((pdf_size_t) gl_list_indexof_from_to (list, start_index, end_index,
                                                element));
}


/* Element setting and getting functions */

inline const void *
pdf_list_node_value (pdf_list_t list, pdf_list_node_t node)
{
  return (gl_list_node_value (list, node));
}


inline const void *
pdf_list_get_at (pdf_list_t list, pdf_size_t position)
{
  return (gl_list_get_at (list, position));
}


inline pdf_list_node_t
pdf_list_set_at (pdf_list_t list, pdf_size_t position, const void* element)
{
  return ((pdf_list_node_t) gl_list_set_at (list, position, element));
}


/* Element addition and removal functions */


inline pdf_list_node_t
pdf_list_add_first (pdf_list_t list, const void* element)
{
  return ((pdf_list_node_t) gl_list_add_first (list, element));
}


inline pdf_list_node_t
pdf_list_add_last (pdf_list_t list, const void* element)
{
  return ((pdf_list_node_t) gl_list_add_last (list, element));
}


inline pdf_list_node_t
pdf_list_add_at (pdf_list_t list, pdf_size_t position, const void* element)
{
  return ((pdf_list_node_t) gl_list_add_at (list, position, element));
}


inline pdf_status_t
pdf_list_remove_node (pdf_list_t list, pdf_list_node_t node)
{
  gl_list_remove_node (list, node);
  return PDF_OK;
}


inline pdf_status_t
pdf_list_remove_at (pdf_list_t list, pdf_size_t position)
{
  pdf_status_t st;

  st = PDF_OK;

  if (position >= 0 && position < pdf_list_size (list))
    gl_list_remove_at (list, position);
  else
    st = PDF_EINVRANGE;

  return st;
}


inline pdf_status_t
pdf_list_remove (pdf_list_t list, const void * element)
{
  pdf_status_t st;
  
  st = PDF_OK;

  if (!gl_list_remove (list, element))
    st = PDF_ENONODE;

  return st;
}



/* Element iterator functions */

inline pdf_list_iterator_t
pdf_list_iterator (pdf_list_t list)
{
  return ((pdf_list_iterator_t) gl_list_iterator (list));
}


inline pdf_list_iterator_t
pdf_list_iterator_from_to (pdf_list_t list, pdf_size_t start_index,
                           pdf_size_t end_index)
{
  return ((pdf_list_iterator_t) gl_list_iterator_from_to (list, start_index,
                                                          end_index));
}

inline pdf_status_t
pdf_list_iterator_next (pdf_list_iterator_t *iterator,
                        const void **element_pointer,
                        pdf_list_node_t *node_pointer)
{
  pdf_status_t st;

  st = PDF_OK;

  if (!gl_list_iterator_next (iterator, element_pointer, node_pointer))
    st = PDF_ENONODE;

  return st;
}

inline pdf_status_t
pdf_list_iterator_free (pdf_list_iterator_t *iterator)
{
  gl_list_iterator_free (iterator);
  return PDF_OK;
}

/* End of pdf-list.c */
--- EOF pdf-list.c ---

###


cheers.

-gerel




reply via email to

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