| Index: third_party/cython/src/Cython/Compiler/CodeGeneration.py
|
| diff --git a/third_party/cython/src/Cython/Compiler/CodeGeneration.py b/third_party/cython/src/Cython/Compiler/CodeGeneration.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..f446d9e92340bb4d8c23bfaa0661488b18c88693
|
| --- /dev/null
|
| +++ b/third_party/cython/src/Cython/Compiler/CodeGeneration.py
|
| @@ -0,0 +1,32 @@
|
| +from Cython.Compiler.Visitor import VisitorTransform
|
| +from Cython.Compiler.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 seperately 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)
|
| + # Do not visit children, nested funcdefnodes will
|
| + # also be moved by this action...
|
| + return node
|
| +
|
| + def visit_Node(self, node):
|
| + self.visitchildren(node)
|
| + return node
|
|
|