traverse.h revision 1.1.1.1 1 1.1 darran /*
2 1.1 darran * CDDL HEADER START
3 1.1 darran *
4 1.1 darran * The contents of this file are subject to the terms of the
5 1.1 darran * Common Development and Distribution License, Version 1.0 only
6 1.1 darran * (the "License"). You may not use this file except in compliance
7 1.1 darran * with the License.
8 1.1 darran *
9 1.1 darran * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 1.1 darran * or http://www.opensolaris.org/os/licensing.
11 1.1 darran * See the License for the specific language governing permissions
12 1.1 darran * and limitations under the License.
13 1.1 darran *
14 1.1 darran * When distributing Covered Code, include this CDDL HEADER in each
15 1.1 darran * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 1.1 darran * If applicable, add the following below this CDDL HEADER, with the
17 1.1 darran * fields enclosed by brackets "[]" replaced with your own identifying
18 1.1 darran * information: Portions Copyright [yyyy] [name of copyright owner]
19 1.1 darran *
20 1.1 darran * CDDL HEADER END
21 1.1 darran */
22 1.1 darran /*
23 1.1 darran * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
24 1.1 darran * Use is subject to license terms.
25 1.1 darran */
26 1.1 darran
27 1.1 darran #ifndef _TRAVERSE_H
28 1.1 darran #define _TRAVERSE_H
29 1.1 darran
30 1.1 darran #pragma ident "%Z%%M% %I% %E% SMI"
31 1.1 darran
32 1.1 darran /*
33 1.1 darran * Routines used to traverse tdesc trees, invoking user-supplied callbacks
34 1.1 darran * as the tree is traversed.
35 1.1 darran */
36 1.1 darran
37 1.1 darran #ifdef __cplusplus
38 1.1 darran extern "C" {
39 1.1 darran #endif
40 1.1 darran
41 1.1 darran #include "ctftools.h"
42 1.1 darran
43 1.1 darran typedef int (*tdtrav_cb_f)(tdesc_t *, tdesc_t **, void *);
44 1.1 darran
45 1.1 darran typedef struct tdtrav_data {
46 1.1 darran int vgen;
47 1.1 darran
48 1.1 darran tdtrav_cb_f *firstops;
49 1.1 darran tdtrav_cb_f *preops;
50 1.1 darran tdtrav_cb_f *postops;
51 1.1 darran
52 1.1 darran void *private;
53 1.1 darran } tdtrav_data_t;
54 1.1 darran
55 1.1 darran void tdtrav_init(tdtrav_data_t *, int *, tdtrav_cb_f *, tdtrav_cb_f *,
56 1.1 darran tdtrav_cb_f *, void *);
57 1.1 darran int tdtraverse(tdesc_t *, tdesc_t **, tdtrav_data_t *);
58 1.1 darran
59 1.1 darran int iitraverse(iidesc_t *, int *, tdtrav_cb_f *, tdtrav_cb_f *, tdtrav_cb_f *,
60 1.1 darran void *);
61 1.1 darran int iitraverse_hash(hash_t *, int *, tdtrav_cb_f *, tdtrav_cb_f *,
62 1.1 darran tdtrav_cb_f *, void *);
63 1.1 darran int iitraverse_td(iidesc_t *ii, tdtrav_data_t *);
64 1.1 darran
65 1.1 darran int tdtrav_assert(tdesc_t *, tdesc_t **, void *);
66 1.1 darran
67 1.1 darran #ifdef __cplusplus
68 1.1 darran }
69 1.1 darran #endif
70 1.1 darran
71 1.1 darran #endif /* _TRAVERSE_H */
72