6 if type(elt
) == types
.TupleType
:
7 elts
= elts
+ flatten(elt
)
17 def __contains__(self
, elt
):
18 return self
.elts
.has_key(elt
)
22 return self
.elts
.keys()
23 def has_elt(self
, elt
):
24 return self
.elts
.has_key(elt
)
25 def remove(self
, elt
):
29 c
.elts
.update(self
.elts
)
35 self
.pop
= self
.stack
.pop
37 return len(self
.stack
)
39 self
.stack
.append(elt
)
42 def __getitem__(self
, index
): # needed by visitContinue()
43 return self
.stack
[index
]
45 MANGLE_LEN
= 256 # magic constant from compile.c
47 def mangle(name
, klass
):
48 if not name
.startswith('__'):
50 if len(name
) + 2 >= MANGLE_LEN
:
52 if name
.endswith('__'):
56 while klass
[i
] == '_':
62 tlen
= len(klass
) + len(name
)
64 klass
= klass
[:MANGLE_LEN
-tlen
]
66 return "_%s%s" % (klass
, name
)
68 def set_filename(filename
, tree
):
69 """Set the filename attribute to filename on every node in tree"""
72 node
= worklist
.pop(0)
73 node
.filename
= filename
74 worklist
.extend(node
.getChildNodes())