Deleted Added
full compact
traverse.c (178529) traverse.c (178546)
1/*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE

--- 23 unchanged lines hidden (view full) ---

32
33#include <stdio.h>
34#include <assert.h>
35
36#include "ctftools.h"
37#include "traverse.h"
38#include "memory.h"
39
1/*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE

--- 23 unchanged lines hidden (view full) ---

32
33#include <stdio.h>
34#include <assert.h>
35
36#include "ctftools.h"
37#include "traverse.h"
38#include "memory.h"
39
40int (*tddescenders[])();
41int (*tdnops[])();
40int (*tddescenders[])(tdesc_t *, tdtrav_data_t *);
41tdtrav_cb_f tdnops[];
42
42
43int tdtraverse(tdesc_t *, tdesc_t **, tdtrav_data_t *);
44
45void
46tdtrav_init(tdtrav_data_t *tdtd, int *vgenp, tdtrav_cb_f *firstops,
47 tdtrav_cb_f *preops, tdtrav_cb_f *postops, void *private)
48{
49 tdtd->vgen = ++(*vgenp);
50 tdtd->firstops = firstops ? firstops : tdnops;
51 tdtd->preops = preops ? preops : tdnops;
52 tdtd->postops = postops ? postops : tdnops;

--- 10 unchanged lines hidden (view full) ---

63tdtrav_func(tdesc_t *this, tdtrav_data_t *tdtd)
64{
65 fndef_t *fn = this->t_fndef;
66 int i, rc;
67
68 if ((rc = tdtraverse(fn->fn_ret, &fn->fn_ret, tdtd)) < 0)
69 return (rc);
70
43void
44tdtrav_init(tdtrav_data_t *tdtd, int *vgenp, tdtrav_cb_f *firstops,
45 tdtrav_cb_f *preops, tdtrav_cb_f *postops, void *private)
46{
47 tdtd->vgen = ++(*vgenp);
48 tdtd->firstops = firstops ? firstops : tdnops;
49 tdtd->preops = preops ? preops : tdnops;
50 tdtd->postops = postops ? postops : tdnops;

--- 10 unchanged lines hidden (view full) ---

61tdtrav_func(tdesc_t *this, tdtrav_data_t *tdtd)
62{
63 fndef_t *fn = this->t_fndef;
64 int i, rc;
65
66 if ((rc = tdtraverse(fn->fn_ret, &fn->fn_ret, tdtd)) < 0)
67 return (rc);
68
71 for (i = 0; i < fn->fn_nargs; i++) {
69 for (i = 0; i < (int) fn->fn_nargs; i++) {
72 if ((rc = tdtraverse(fn->fn_args[i], &fn->fn_args[i],
73 tdtd)) < 0)
74 return (rc);
75 }
76
77 return (0);
78}
79

--- 21 unchanged lines hidden (view full) ---

101 return (rc);
102 }
103
104 return (rc);
105}
106
107/*ARGSUSED*/
108int
70 if ((rc = tdtraverse(fn->fn_args[i], &fn->fn_args[i],
71 tdtd)) < 0)
72 return (rc);
73 }
74
75 return (0);
76}
77

--- 21 unchanged lines hidden (view full) ---

99 return (rc);
100 }
101
102 return (rc);
103}
104
105/*ARGSUSED*/
106int
109tdtrav_assert(tdesc_t *node, tdesc_t **nodep, void *private)
107tdtrav_assert(tdesc_t *node __unused, tdesc_t **nodep __unused, void *private __unused)
110{
111 assert(1 == 0);
112
113 return (-1);
114}
115
116tdtrav_cb_f tdnops[] = {
117 NULL,

--- 28 unchanged lines hidden (view full) ---

146 tdtrav_plain, /* const */
147 tdtrav_plain /* restrict */
148};
149
150int
151tdtraverse(tdesc_t *this, tdesc_t **thisp, tdtrav_data_t *tdtd)
152{
153 tdtrav_cb_f travcb;
108{
109 assert(1 == 0);
110
111 return (-1);
112}
113
114tdtrav_cb_f tdnops[] = {
115 NULL,

--- 28 unchanged lines hidden (view full) ---

144 tdtrav_plain, /* const */
145 tdtrav_plain /* restrict */
146};
147
148int
149tdtraverse(tdesc_t *this, tdesc_t **thisp, tdtrav_data_t *tdtd)
150{
151 tdtrav_cb_f travcb;
154 int (*descender)();
152 int (*descender)(tdesc_t *, tdtrav_data_t *);
155 int descend = 1;
156 int rc;
157
158 if ((travcb = tdtd->firstops[this->t_type]) != NULL) {
159 if ((rc = travcb(this, thisp, tdtd->private)) < 0)
160 return (rc);
161 else if (rc == 0)
162 descend = 0;

--- 19 unchanged lines hidden (view full) ---

182 (rc = travcb(this, thisp, tdtd->private)) < 0)
183 return (rc);
184 }
185
186 return (1);
187}
188
189int
153 int descend = 1;
154 int rc;
155
156 if ((travcb = tdtd->firstops[this->t_type]) != NULL) {
157 if ((rc = travcb(this, thisp, tdtd->private)) < 0)
158 return (rc);
159 else if (rc == 0)
160 descend = 0;

--- 19 unchanged lines hidden (view full) ---

180 (rc = travcb(this, thisp, tdtd->private)) < 0)
181 return (rc);
182 }
183
184 return (1);
185}
186
187int
190iitraverse_td(iidesc_t *ii, tdtrav_data_t *tdtd)
188iitraverse_td(void *arg1, void *arg2)
191{
189{
190 iidesc_t *ii = arg1;
191 tdtrav_data_t *tdtd = arg2;
192 int i, rc;
193
194 if ((rc = tdtraverse(ii->ii_dtype, &ii->ii_dtype, tdtd)) < 0)
195 return (rc);
196
197 for (i = 0; i < ii->ii_nargs; i++) {
198 if ((rc = tdtraverse(ii->ii_args[i], &ii->ii_args[i],
199 tdtd)) < 0)

--- 17 unchanged lines hidden (view full) ---

217int
218iitraverse_hash(hash_t *iihash, int *vgenp, tdtrav_cb_f *firstops,
219 tdtrav_cb_f *preops, tdtrav_cb_f *postops, void *private)
220{
221 tdtrav_data_t tdtd;
222
223 tdtrav_init(&tdtd, vgenp, firstops, preops, postops, private);
224
192 int i, rc;
193
194 if ((rc = tdtraverse(ii->ii_dtype, &ii->ii_dtype, tdtd)) < 0)
195 return (rc);
196
197 for (i = 0; i < ii->ii_nargs; i++) {
198 if ((rc = tdtraverse(ii->ii_args[i], &ii->ii_args[i],
199 tdtd)) < 0)

--- 17 unchanged lines hidden (view full) ---

217int
218iitraverse_hash(hash_t *iihash, int *vgenp, tdtrav_cb_f *firstops,
219 tdtrav_cb_f *preops, tdtrav_cb_f *postops, void *private)
220{
221 tdtrav_data_t tdtd;
222
223 tdtrav_init(&tdtd, vgenp, firstops, preops, postops, private);
224
225 return (hash_iter(iihash, (int (*)())iitraverse_td, &tdtd));
225 return (hash_iter(iihash, iitraverse_td, &tdtd));
226}
226}