1.1 --- a/pdf_prim.c Thu Mar 13 03:39:38 2003 +0000 1.2 +++ b/pdf_prim.c Thu Mar 13 06:56:57 2003 +0000 1.3 @@ -4,7 +4,7 @@ 1.4 * will be compressed using ITU-T T.6 (G4) fax encoding. 1.5 * 1.6 * PDF routines 1.7 - * $Id: pdf_prim.c,v 1.9 2003/03/11 23:43:56 eric Exp $ 1.8 + * $Id: pdf_prim.c,v 1.10 2003/03/12 22:56:57 eric Exp $ 1.9 * Copyright 2001, 2002, 2003 Eric Smith <eric@brouhaha.com> 1.10 * 1.11 * This program is free software; you can redistribute it and/or modify 1.12 @@ -192,6 +192,32 @@ 1.13 } 1.14 1.15 1.16 +void pdf_add_array_elem_unique (struct pdf_obj *array_obj, struct pdf_obj *val) 1.17 +{ 1.18 + struct pdf_array_elem *elem; 1.19 + 1.20 + if (array_obj->type == PT_IND_REF) 1.21 + array_obj = pdf_deref_ind_obj (array_obj); 1.22 + 1.23 + pdf_assert (array_obj->type == PT_ARRAY); 1.24 + 1.25 + for (elem = array_obj->val.array.first; elem; elem = elem->next) 1.26 + if (pdf_compare_obj (val, elem->val) == 0) 1.27 + return; 1.28 + 1.29 + elem = pdf_calloc (1, sizeof (struct pdf_array_elem)); 1.30 + 1.31 + elem->val = ref (val); 1.32 + 1.33 + if (! array_obj->val.array.first) 1.34 + array_obj->val.array.first = elem; 1.35 + else 1.36 + array_obj->val.array.last->next = elem; 1.37 + 1.38 + array_obj->val.array.last = elem; 1.39 +} 1.40 + 1.41 + 1.42 struct pdf_obj *pdf_new_obj (pdf_obj_type type) 1.43 { 1.44 struct pdf_obj *obj = pdf_calloc (1, sizeof (struct pdf_obj)); 1.45 @@ -374,6 +400,8 @@ 1.46 return (0); 1.47 case PT_STRING: 1.48 return (strcmp (o1->val.string, o2->val.string)); 1.49 + case PT_NAME: 1.50 + return (strcmp (o1->val.name, o2->val.name)); 1.51 default: 1.52 pdf_fatal ("invalid object type for comparison\n"); 1.53 }