| 59 | |
| 60 | |
| 61 | def disco_loop(disasm, queue, real_out): |
| 62 | while len(queue) > 0: |
| 63 | co = queue.popleft() |
| 64 | if co.co_name != "<module>": |
| 65 | if hasattr(co, "co_firstlineno"): |
| 66 | print( |
| 67 | "\n# %s line %d of %s" |
| 68 | % (co.co_name, co.co_firstlineno, co.co_filename), |
| 69 | file=real_out, |
| 70 | ) |
| 71 | else: |
| 72 | print( |
| 73 | "\n# %s of %s" |
| 74 | % (co.co_name, co.co_filename), |
| 75 | file=real_out, |
| 76 | ) |
| 77 | tokens, customize = disasm(co) |
| 78 | for t in tokens: |
| 79 | if iscode(t.pattr): |
| 80 | queue.append(t.pattr) |
| 81 | elif iscode(t.attr): |
| 82 | queue.append(t.attr) |
| 83 | print(t, file=real_out) |
| 84 | pass |
| 85 | pass |
| 86 | |
| 87 | |
| 88 | # def disassemble_fp(fp, outstream=None): |