traverse.c revision 4d232658ec6831daceb12672726ce4cabe270c23
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#pragma ident "%Z%%M% %I% %E% SMI"
/*
* Routines used to traverse tdesc trees, invoking user-supplied callbacks
* as the tree is traversed.
*/
#include <stdio.h>
#include <assert.h>
#include "ctftools.h"
#include "traverse.h"
#include "memory.h"
int (*tddescenders[])();
int (*tdnops[])();
void
{
}
static int
{
}
static int
{
int i, rc;
return (rc);
tdtd)) < 0)
return (rc);
}
return (0);
}
static int
{
int rc;
tdtd)) < 0)
return (rc);
}
static int
{
int rc = 0;
return (rc);
}
return (rc);
}
/*ARGSUSED*/
int
{
assert(1 == 0);
return (-1);
}
tdtrav_cb_f tdnops[] = {
NULL,
NULL, /* intrinsic */
NULL, /* pointer */
NULL, /* array */
NULL, /* function */
NULL, /* struct */
NULL, /* union */
NULL, /* enum */
NULL, /* forward */
NULL, /* typedef */
NULL, /* typedef_unres */
NULL, /* volatile */
NULL, /* const */
NULL /* restrict */
};
NULL,
NULL, /* intrinsic */
tdtrav_plain, /* pointer */
tdtrav_array, /* array */
tdtrav_func, /* function */
tdtrav_su, /* struct */
tdtrav_su, /* union */
NULL, /* enum */
NULL, /* forward */
tdtrav_plain, /* typedef */
NULL, /* typedef_unres */
tdtrav_plain, /* volatile */
tdtrav_plain, /* const */
tdtrav_plain /* restrict */
};
int
{
int (*descender)();
int descend = 1;
int rc;
return (rc);
else if (rc == 0)
descend = 0;
}
return (1);
return (rc);
else if (rc == 0)
descend = 0;
}
if (descend) {
return (rc);
return (rc);
}
return (1);
}
int
{
int i, rc;
return (rc);
tdtd)) < 0)
return (rc);
}
return (1);
}
int
{
}
int
{
}