blue2Py.py (1369B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\carbon\common\script\util\blue2Py.py 2 import blue 3 import types 4 types.BlueType = type(blue.os) 5 6 class DecoMetaClass(type): 7 8 def __init__(cls, name, bases, dict): 9 type.__init__(name, bases, dict) 10 cls.__persistvars__ = cls.CombineLists('__persistvars__') 11 cls.__nonpersistvars__ = cls.CombineLists('__nonpersistvars__') 12 13 def __call__(cls, inst = None, initDict = None): 14 if not inst: 15 inst = blue.classes.CreateInstance(cls.__cid__) 16 inst.__klass__ = cls 17 if initDict: 18 for k, v in initDict.iteritems(): 19 setattr(inst, k, v) 20 21 if hasattr(cls, '__init__'): 22 inst.__init__() 23 return inst 24 25 def CombineLists(cls, name): 26 result = [] 27 for b in cls.__mro__: 28 if hasattr(b, name): 29 result += list(getattr(b, name)) 30 31 return result 32 33 34 def BlueClassCid(cid): 35 name = 'DecoMetaClass.' + str(cid) 36 return type(name, (DecoMetaClass,), {'__module__': 'Blue2Py', 37 '__cid__': cid}) 38 39 40 blueClasses = {} 41 42 def WrapBlueClass(cid): 43 if cid in blueClasses: 44 return blueClasses[cid] 45 blueClasses[cid] = BlueClassCid(cid)('dummy', (), {'__module__': 'Blue2Py'}) 46 return blueClasses[cid] 47 48 49 exports = {'util.Blue2Py': WrapBlueClass}