NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

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}