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