Changeset View
Changeset View
Standalone View
Standalone View
cddl/contrib/opensolaris/tools/ctf/cvt/traverse.c
Show All 32 Lines | |||||
#include <stdio.h> | #include <stdio.h> | ||||
#include <assert.h> | #include <assert.h> | ||||
#include "ctftools.h" | #include "ctftools.h" | ||||
#include "traverse.h" | #include "traverse.h" | ||||
#include "memory.h" | #include "memory.h" | ||||
static int (*tddescenders[])(tdesc_t *, tdtrav_data_t *); | static int (*tddescenders[])(tdesc_t *, tdtrav_data_t *); | ||||
static tdtrav_cb_f tdnops[]; | static tdtrav_cb_f tdnops[STABTYPE_LAST]; | ||||
void | void | ||||
tdtrav_init(tdtrav_data_t *tdtd, int *vgenp, tdtrav_cb_f *firstops, | tdtrav_init(tdtrav_data_t *tdtd, int *vgenp, tdtrav_cb_f *firstops, | ||||
tdtrav_cb_f *preops, tdtrav_cb_f *postops, void *private) | tdtrav_cb_f *preops, tdtrav_cb_f *postops, void *private) | ||||
{ | { | ||||
tdtd->vgen = ++(*vgenp); | tdtd->vgen = ++(*vgenp); | ||||
tdtd->firstops = firstops ? firstops : tdnops; | tdtd->firstops = firstops ? firstops : tdnops; | ||||
tdtd->preops = preops ? preops : tdnops; | tdtd->preops = preops ? preops : tdnops; | ||||
▲ Show 20 Lines • Show All 56 Lines • ▼ Show 20 Lines | |||||
int | int | ||||
tdtrav_assert(tdesc_t *node __unused, tdesc_t **nodep __unused, void *private __unused) | tdtrav_assert(tdesc_t *node __unused, tdesc_t **nodep __unused, void *private __unused) | ||||
{ | { | ||||
assert(1 == 0); | assert(1 == 0); | ||||
return (-1); | return (-1); | ||||
} | } | ||||
static tdtrav_cb_f tdnops[] = { | static int (*tddescenders[STABTYPE_LAST])(tdesc_t *, tdtrav_data_t *) = { | ||||
NULL, | [POINTER] = tdtrav_plain, | ||||
NULL, /* intrinsic */ | [ARRAY] = tdtrav_array, | ||||
NULL, /* pointer */ | [FUNCTION] = tdtrav_func, | ||||
NULL, /* array */ | [STRUCT] = tdtrav_su, | ||||
NULL, /* function */ | [UNION] = tdtrav_su, | ||||
NULL, /* struct */ | [TYPEDEF] = tdtrav_plain, | ||||
NULL, /* union */ | [VOLATILE] = tdtrav_plain, | ||||
NULL, /* enum */ | [CONST] = tdtrav_plain, | ||||
NULL, /* forward */ | [RESTRICT] = tdtrav_plain, | ||||
NULL, /* typedef */ | [CONSTVAL] = tdtrav_plain, | ||||
NULL, /* typedef_unres */ | |||||
NULL, /* volatile */ | |||||
NULL, /* const */ | |||||
NULL /* restrict */ | |||||
}; | |||||
static int (*tddescenders[])(tdesc_t *, tdtrav_data_t *) = { | |||||
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 | ||||
tdtraverse(tdesc_t *this, tdesc_t **thisp, tdtrav_data_t *tdtd) | tdtraverse(tdesc_t *this, tdesc_t **thisp, tdtrav_data_t *tdtd) | ||||
{ | { | ||||
tdtrav_cb_f travcb; | tdtrav_cb_f travcb; | ||||
int (*descender)(tdesc_t *, tdtrav_data_t *); | int (*descender)(tdesc_t *, tdtrav_data_t *); | ||||
int descend = 1; | int descend = 1; | ||||
▲ Show 20 Lines • Show All 73 Lines • Show Last 20 Lines |