/[public]/psiconv/trunk/lib/psiconv/list.h
ViewVC logotype

Diff of /psiconv/trunk/lib/psiconv/list.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 78 Revision 79
21 be of the same size (solve it with pointers, if needed) */ 21 be of the same size (solve it with pointers, if needed) */
22 22
23#ifndef PSICONV_LIST_H 23#ifndef PSICONV_LIST_H
24#define PSICONV_LIST_H 24#define PSICONV_LIST_H
25 25
26#include <psiconv/general.h>
26#include <stddef.h> 27#include <stddef.h>
27#include <stdio.h> 28#include <stdio.h>
28 29
29#ifdef __cplusplus 30#ifdef __cplusplus
30extern "C" { 31extern "C" {
38 as its argument. Always compute it with a sizeof() expression, just to be 39 as its argument. Always compute it with a sizeof() expression, just to be
39 safe. The returned list is empty. 40 safe. The returned list is empty.
40 If there is not enough memory available, NULL is returned. You should 41 If there is not enough memory available, NULL is returned. You should
41 always test for this explicitely, because the other functions do not 42 always test for this explicitely, because the other functions do not
42 like a psiconv_list argument that is equal to NULL */ 43 like a psiconv_list argument that is equal to NULL */
43extern psiconv_list psiconv_list_new(int element_size); 44extern psiconv_list psiconv_list_new(size_t element_size);
44 45
45/* This frees the list. If elements contain pointers that need to be freed 46/* This frees the list. If elements contain pointers that need to be freed
46 separately, call list_free_el below. */ 47 separately, call list_free_el below. */
47extern void psiconv_list_free(psiconv_list l); 48extern void psiconv_list_free(psiconv_list l);
48 49
50 Note that you should *not* do 'free(el)' at any time; that is taken care of 51 Note that you should *not* do 'free(el)' at any time; that is taken care of
51 automatically. */ 52 automatically. */
52extern void psiconv_list_free_el(psiconv_list l, void free_el(void *el)); 53extern void psiconv_list_free_el(psiconv_list l, void free_el(void *el));
53 54
54/* Return the number of allocated elements */ 55/* Return the number of allocated elements */
55extern int psiconv_list_length(const psiconv_list l); 56extern psiconv_u32 psiconv_list_length(const psiconv_list l);
56 57
57/* Return 1 if the list is empty, 0 if not */ 58/* Return 1 if the list is empty, 0 if not */
58extern int psiconv_list_is_empty(const psiconv_list l); 59extern int psiconv_list_is_empty(const psiconv_list l);
59 60
60/* Get an element from the list, and return a pointer to it. Note: you can 61/* Get an element from the list, and return a pointer to it. Note: you can
61 directly modify this element, but be careful not to write beyond the 62 directly modify this element, but be careful not to write beyond the
62 element memory space. 63 element memory space.
63 If indx is out of range, NULL is returned. */ 64 If indx is out of range, NULL is returned. */
64extern void * psiconv_list_get(const psiconv_list l, unsigned int indx); 65extern void * psiconv_list_get(const psiconv_list l, psiconv_u32 indx);
65 66
66/* Add an element at the end of the list. The element is copied from the 67/* Add an element at the end of the list. The element is copied from the
67 supplied element. Of course, this does not help if the element contains 68 supplied element. Of course, this does not help if the element contains
68 pointers. 69 pointers.
69 As the lists extends itself, it may be necessary to allocate new 70 As the lists extends itself, it may be necessary to allocate new

Legend:
Removed from v.78  
changed lines
  Added in v.79

frodo@frodo.looijaard.name
ViewVC Help
Powered by ViewVC 1.1.26