[pypy-svn] r4842 - pypy/branch/src-newobjectmodel/pypy/interpreter
hpk at codespeak.net
hpk at codespeak.net
Thu Jun 3 09:19:43 CEST 2004
Author: hpk
Date: Thu Jun 3 09:19:40 2004
New Revision: 4842
Modified:
pypy/branch/src-newobjectmodel/pypy/interpreter/baseobjspace.py
pypy/branch/src-newobjectmodel/pypy/interpreter/generator.py
pypy/branch/src-newobjectmodel/pypy/interpreter/typedef.py
Log:
moved generator to typedef-descriptor scheme
Modified: pypy/branch/src-newobjectmodel/pypy/interpreter/baseobjspace.py
==============================================================================
--- pypy/branch/src-newobjectmodel/pypy/interpreter/baseobjspace.py (original)
+++ pypy/branch/src-newobjectmodel/pypy/interpreter/baseobjspace.py Thu Jun 3 09:19:40 2004
@@ -3,7 +3,7 @@
from pypy.interpreter.miscutils import Stack, getthreadlocals
import pypy.module
-__all__ = ['ObjSpace', 'OperationError', 'NoValue']
+__all__ = ['ObjSpace', 'OperationError', 'NoValue', 'Wrappable']
class Wrappable(object):
Modified: pypy/branch/src-newobjectmodel/pypy/interpreter/generator.py
==============================================================================
--- pypy/branch/src-newobjectmodel/pypy/interpreter/generator.py (original)
+++ pypy/branch/src-newobjectmodel/pypy/interpreter/generator.py Thu Jun 3 09:19:40 2004
@@ -44,10 +44,10 @@
self.frame = frame
self.running = False
- def pypy_iter(self):
+ def descr__iter__(self):
return self.space.wrap(self)
- def pypy_next(self):
+ def descr_next(self):
# raise NoValue when exhausted
if self.running:
space = self.frame.space
@@ -66,21 +66,16 @@
finally:
self.running = False
+ # XXX the next two methods we don't really want here,
+ # it appears to be there for trivial object space
def next(self):
try:
- return self.pypy_next()
+ return self.descr_next() #
except NoValue:
raise OperationError(self.space.w_StopIteration,
self.space.w_None)
app_next = gateway.interp2app(next)
- def pypy_getattr(self, w_attr):
- # XXX boilerplate that should disappear at some point
- attr = self.space.unwrap(w_attr)
- if attr == 'next':
- return self.space.wrap(self.app_next)
- raise OperationError(self.space.w_AttributeError, w_attr)
-
# XXX the following is for TrivialObjSpace only, when iteration is
# done by C code (e.g. when calling 'list(g())').
def __iter__(self):
Modified: pypy/branch/src-newobjectmodel/pypy/interpreter/typedef.py
==============================================================================
--- pypy/branch/src-newobjectmodel/pypy/interpreter/typedef.py (original)
+++ pypy/branch/src-newobjectmodel/pypy/interpreter/typedef.py Thu Jun 3 09:19:40 2004
@@ -53,6 +53,7 @@
from pypy.interpreter.module import Module
from pypy.interpreter.function import Function, Method
from pypy.interpreter.pytraceback import PyTraceback
+from pypy.interpreter.generator import GeneratorIterator
Code.typedef = TypeDef('internal-code',
co_name = attrproperty('co_name'),
@@ -117,3 +118,10 @@
tb_lineno = attrproperty('tb_line'),
tb_next = attrproperty('tb_next'),
)
+
+GeneratorIterator.typedef = TypeDef("generator",
+ next = interp2app(GeneratorIterator.descr_next.im_func),
+ __iter__ = interp2app(GeneratorIterator.descr__iter__.im_func),
+ gi_running = attrproperty('running'),
+ gi_frame = attrproperty('frame'),
+)
More information about the Pypy-commit
mailing list