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