~ubuntu-branches/ubuntu/hardy/php5/hardy-updates

« back to all changes in this revision

Viewing changes to Zend/zend_llist.h

  • Committer: Bazaar Package Importer
  • Author(s): Adam Conrad
  • Date: 2005-10-09 03:14:32 UTC
  • Revision ID: james.westby@ubuntu.com-20051009031432-kspik3lobxstafv9
Tags: upstream-5.0.5
ImportĀ upstreamĀ versionĀ 5.0.5

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
   +----------------------------------------------------------------------+
 
3
   | Zend Engine                                                          |
 
4
   +----------------------------------------------------------------------+
 
5
   | Copyright (c) 1998-2004 Zend Technologies Ltd. (http://www.zend.com) |
 
6
   +----------------------------------------------------------------------+
 
7
   | This source file is subject to version 2.00 of the Zend license,     |
 
8
   | that is bundled with this package in the file LICENSE, and is        | 
 
9
   | available through the world-wide-web at the following url:           |
 
10
   | http://www.zend.com/license/2_00.txt.                                |
 
11
   | If you did not receive a copy of the Zend license and are unable to  |
 
12
   | obtain it through the world-wide-web, please send a note to          |
 
13
   | license@zend.com so we can mail you a copy immediately.              |
 
14
   +----------------------------------------------------------------------+
 
15
   | Authors: Andi Gutmans <andi@zend.com>                                |
 
16
   |          Zeev Suraski <zeev@zend.com>                                |
 
17
   +----------------------------------------------------------------------+
 
18
*/
 
19
 
 
20
/* $Id: zend_llist.h,v 1.32 2004/01/08 17:31:47 sniper Exp $ */
 
21
 
 
22
#ifndef ZEND_LLIST_H
 
23
#define ZEND_LLIST_H
 
24
 
 
25
typedef struct _zend_llist_element {
 
26
        struct _zend_llist_element *next;
 
27
        struct _zend_llist_element *prev;
 
28
        char data[1]; /* Needs to always be last in the struct */
 
29
} zend_llist_element;
 
30
 
 
31
typedef void (*llist_dtor_func_t)(void *);
 
32
typedef int (*llist_compare_func_t)(const zend_llist_element **, const zend_llist_element ** TSRMLS_DC);
 
33
typedef void (*llist_apply_with_args_func_t)(void *data, int num_args, va_list args TSRMLS_DC);
 
34
typedef void (*llist_apply_with_arg_func_t)(void *data, void *arg TSRMLS_DC);
 
35
typedef void (*llist_apply_func_t)(void * TSRMLS_DC);
 
36
 
 
37
typedef struct _zend_llist {
 
38
        zend_llist_element *head;
 
39
        zend_llist_element *tail;
 
40
        size_t count;
 
41
        size_t size;
 
42
        llist_dtor_func_t dtor;
 
43
        unsigned char persistent;
 
44
        zend_llist_element *traverse_ptr;
 
45
} zend_llist;
 
46
 
 
47
typedef zend_llist_element* zend_llist_position;
 
48
 
 
49
BEGIN_EXTERN_C()
 
50
ZEND_API void zend_llist_init(zend_llist *l, size_t size, llist_dtor_func_t dtor, unsigned char persistent);
 
51
ZEND_API void zend_llist_add_element(zend_llist *l, void *element);
 
52
ZEND_API void zend_llist_prepend_element(zend_llist *l, void *element);
 
53
ZEND_API void zend_llist_del_element(zend_llist *l, void *element, int (*compare)(void *element1, void *element2));
 
54
ZEND_API void zend_llist_destroy(zend_llist *l);
 
55
ZEND_API void zend_llist_clean(zend_llist *l);
 
56
ZEND_API void *zend_llist_remove_tail(zend_llist *l);
 
57
ZEND_API void zend_llist_copy(zend_llist *dst, zend_llist *src);
 
58
ZEND_API void zend_llist_apply(zend_llist *l, llist_apply_func_t func TSRMLS_DC);
 
59
ZEND_API void zend_llist_apply_with_del(zend_llist *l, int (*func)(void *data));
 
60
ZEND_API void zend_llist_apply_with_argument(zend_llist *l, llist_apply_with_arg_func_t func, void *arg TSRMLS_DC);
 
61
ZEND_API void zend_llist_apply_with_arguments(zend_llist *l, llist_apply_with_args_func_t func TSRMLS_DC, int num_args, ...);
 
62
ZEND_API int zend_llist_count(zend_llist *l);
 
63
ZEND_API void zend_llist_sort(zend_llist *l, llist_compare_func_t comp_func TSRMLS_DC);
 
64
 
 
65
/* traversal */
 
66
ZEND_API void *zend_llist_get_first_ex(zend_llist *l, zend_llist_position *pos);
 
67
ZEND_API void *zend_llist_get_last_ex(zend_llist *l, zend_llist_position *pos);
 
68
ZEND_API void *zend_llist_get_next_ex(zend_llist *l, zend_llist_position *pos);
 
69
ZEND_API void *zend_llist_get_prev_ex(zend_llist *l, zend_llist_position *pos);
 
70
 
 
71
#define zend_llist_get_first(l) zend_llist_get_first_ex(l, NULL)
 
72
#define zend_llist_get_last(l) zend_llist_get_last_ex(l, NULL)
 
73
#define zend_llist_get_next(l) zend_llist_get_next_ex(l, NULL)
 
74
#define zend_llist_get_prev(l) zend_llist_get_prev_ex(l, NULL)
 
75
 
 
76
END_EXTERN_C()
 
77
 
 
78
#endif /* ZEND_LLIST_H */
 
79
 
 
80
/*
 
81
 * Local variables:
 
82
 * tab-width: 4
 
83
 * c-basic-offset: 4
 
84
 * indent-tabs-mode: t
 
85
 * End:
 
86
 */