Coda Distributed File System
ds_list.private.h
Go to the documentation of this file.
1/*
2** ds_list.private.h: Implementation details of ds_list_t, ds_list_elt_t
3*/
4
5#ifndef _DS_LIST_PRIVATE_H_
6#define _DS_LIST_PRIVATE_H_
7
8#include <odytypes.h>
9
10#include "ds_list.h" /* public parts */
11
12/* magic numbers for structures */
13extern const magic_t ds_list_magic;
14extern const magic_t ds_list_elt_magic;
15extern const magic_t ds_list_iter_magic;
16
17/* the structures themselves. */
18
19/*
20 * An element has a magic number, a next and prev link, and the contents.
21 * The contents themselves are untyped.
22 */
23
24typedef struct ds_list_elt_t {
28 void *contents;
30
31/*
32 * A list has a magic number, a comparison function,
33 * safety and duplicate information, a count of elements, and a pointer
34 * to the head and tail elements.
35 * The list is doubly-linked: the head and tail elements each point to
36 * null "off the end" of the list.
37 * There is also a "list" of active (i.e.: not-destroyed) iterators
38 * for this list. Naturally, the iterator "list" cannot be a ds_list_t.
39 */
40
41struct ds_list_t {
44 bool is_safe;
46 int count;
50};
51
57};
58
59#define DS_LIST_VALID(lp) ((lp) && ((lp)->magic == ds_list_magic))
60#define DS_LIST_ELT_VALID(ep) ((ep) && ((ep)->magic == ds_list_elt_magic))
61#define DS_LIST_ITER_VALID(ip) ((ip) && ((ip)->magic == ds_list_iter_magic))
62
63#endif /* _DS_LIST_PRIVATE_H_ */
const magic_t ds_list_elt_magic
Definition: ds_list.c:15
const magic_t ds_list_iter_magic
Definition: ds_list.c:16
struct ds_list_elt_t ds_list_elt_t
const magic_t ds_list_magic
Definition: ds_list.c:14
unsigned long magic_t
Definition: odytypes.h:44
typdef int(* COMPFN)()
Definition: odytypes.h:54
Definition: ds_list.private.h:24
void * contents
Definition: ds_list.private.h:28
struct ds_list_elt_t * p
Definition: ds_list.private.h:27
struct ds_list_elt_t * n
Definition: ds_list.private.h:26
magic_t magic
Definition: ds_list.private.h:25
Definition: ds_list.private.h:52
ds_list_elt_t * next_elt
Definition: ds_list.private.h:55
magic_t magic
Definition: ds_list.private.h:53
ds_list_t * list
Definition: ds_list.private.h:54
struct ds_list_iter_t * next_iter
Definition: ds_list.private.h:56
Definition: ds_list.private.h:41
struct ds_list_elt_t * tail
Definition: ds_list.private.h:48
magic_t magic
Definition: ds_list.private.h:42
bool is_safe
Definition: ds_list.private.h:44
struct ds_list_elt_t * head
Definition: ds_list.private.h:47
struct ds_list_iter_t * iter_list
Definition: ds_list.private.h:49
int count
Definition: ds_list.private.h:46
COMPFN cmpfn
Definition: ds_list.private.h:43
bool has_dups
Definition: ds_list.private.h:45