| Index: psyco_win32/psyco/classes.py
|
| ===================================================================
|
| --- psyco_win32/psyco/classes.py (revision 0)
|
| +++ psyco_win32/psyco/classes.py (revision 0)
|
| @@ -0,0 +1,42 @@
|
| +###########################################################################
|
| +#
|
| +# Psyco class support module.
|
| +# Copyright (C) 2001-2002 Armin Rigo et.al.
|
| +
|
| +"""Psyco class support module.
|
| +
|
| +'psyco.classes.psyobj' is an alternate Psyco-optimized root for classes.
|
| +Any class inheriting from it or using the metaclass '__metaclass__' might
|
| +get optimized specifically for Psyco. It is equivalent to call
|
| +psyco.bind() on the class object after its creation.
|
| +
|
| +Importing everything from psyco.classes in a module will import the
|
| +'__metaclass__' name, so all classes defined after a
|
| +
|
| + from psyco.classes import *
|
| +
|
| +will automatically use the Psyco-optimized metaclass.
|
| +"""
|
| +###########################################################################
|
| +
|
| +__all__ = ['psyobj', 'psymetaclass', '__metaclass__']
|
| +
|
| +
|
| +from _psyco import compacttype
|
| +import core
|
| +from types import FunctionType
|
| +
|
| +class psymetaclass(compacttype):
|
| + "Psyco-optimized meta-class. Turns all methods into Psyco proxies."
|
| +
|
| + def __new__(cls, name, bases, dict):
|
| + bindlist = dict.get('__psyco__bind__')
|
| + if bindlist is None:
|
| + bindlist = [key for key, value in dict.items()
|
| + if isinstance(value, FunctionType)]
|
| + for attr in bindlist:
|
| + dict[attr] = core.proxy(dict[attr])
|
| + return super(psymetaclass, cls).__new__(cls, name, bases, dict)
|
| +
|
| +psyobj = psymetaclass("psyobj", (), {})
|
| +__metaclass__ = psymetaclass
|
|
|
| Property changes on: psyco_win32\psyco\classes.py
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|