| | from __future__ import absolute_import |
| |
|
| | from .Visitor import VisitorTransform |
| | from .Nodes import StatListNode |
| |
|
| |
|
| | class ExtractPxdCode(VisitorTransform): |
| | """ |
| | Finds nodes in a pxd file that should generate code, and |
| | returns them in a StatListNode. |
| | |
| | The result is a tuple (StatListNode, ModuleScope), i.e. |
| | everything that is needed from the pxd after it is processed. |
| | |
| | A purer approach would be to separately compile the pxd code, |
| | but the result would have to be slightly more sophisticated |
| | than pure strings (functions + wanted interned strings + |
| | wanted utility code + wanted cached objects) so for now this |
| | approach is taken. |
| | """ |
| |
|
| | def __call__(self, root): |
| | self.funcs = [] |
| | self.visitchildren(root) |
| | return (StatListNode(root.pos, stats=self.funcs), root.scope) |
| |
|
| | def visit_FuncDefNode(self, node): |
| | self.funcs.append(node) |
| | |
| | |
| | return node |
| |
|
| | def visit_Node(self, node): |
| | self.visitchildren(node) |
| | return node |
| |
|