2
This software may only be used by you under license from AT&T Corp.
3
("AT&T"). A copy of AT&T's Source Code Agreement is available at
4
AT&T's Internet website having the URL:
5
<http://www.research.att.com/sw/tools/graphviz/license/source.html>
6
If you received this software without first entering into a license
7
with AT&T, you have an infringing copy of this software and cannot use
8
it without violating AT&T's intellectual property rights.
16
/* Flatten a dictionary into a linked list.
17
** This may be used when many traversals are likely.
19
** Written by Kiem-Phong Vo (5/25/96).
23
Dtlink_t* dtflatten(Dt_t* dt)
25
Dtlink_t* dtflatten(dt)
29
reg Dtlink_t *t, *r, *list, *last, **s, **ends;
31
/* already flattened */
32
if(dt->data->type&DT_FLATTEN )
33
return dt->data->here;
35
list = last = NIL(Dtlink_t*);
36
if(dt->data->type&(DT_SET|DT_BAG))
37
{ for(ends = (s = dt->data->htab) + dt->data->ntab; s < ends; ++s)
48
else if(dt->data->type&(DT_LIST|DT_STACK|DT_QUEUE) )
49
list = dt->data->head;
50
else if((r = dt->data->here) ) /*if(dt->data->type&(DT_OSET|DT_OBAG))*/
51
{ while((t = r->left) )
53
for(list = last = r, r = r->right; r; last = r, r = r->right)
56
while((t = r->left) );
63
dt->data->here = list;
64
dt->data->type |= DT_FLATTEN;