亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? config.py

?? linux下基于c++的處理器仿真平臺。具有處理器流水線
?? PY
?? 第 1 頁 / 共 5 頁
字號:
def isSimObjSequence(value):    if not isinstance(value, (list, tuple)):        return False    for val in value:        if not isNullPointer(val) and not isSimObject(val):            return False    return Truedef isNullPointer(value):    return isinstance(value, NullSimObject)# The metaclass for ConfigNode (and thus for everything that derives# from ConfigNode, including SimObject).  This class controls how new# classes that derive from ConfigNode are instantiated, and provides# inherited class behavior (just like a class controls how instances# of that class are instantiated, and provides inherited instance# behavior).class MetaSimObject(type):    # Attributes that can be set only at initialization time    init_keywords = { 'abstract' : types.BooleanType,                      'type' : types.StringType }    # Attributes that can be set any time    keywords = { 'check' : types.FunctionType,                 'children' : types.ListType }        # __new__ is called before __init__, and is where the statements    # in the body of the class definition get loaded into the class's    # __dict__.  We intercept this to filter out parameter assignments    # and only allow "private" attributes to be passed to the base    # __new__ (starting with underscore).    def __new__(mcls, name, bases, dict):        # Copy "private" attributes (including special methods such as __new__)        # to the official dict.  Everything else goes in _init_dict to be        # filtered in __init__.        cls_dict = {}        for key,val in dict.items():            if key.startswith('_'):                cls_dict[key] = val                del dict[key]        cls_dict['_init_dict'] = dict        return super(MetaSimObject, mcls).__new__(mcls, name, bases, cls_dict)            # initialization    def __init__(cls, name, bases, dict):        super(MetaSimObject, cls).__init__(name, bases, dict)        # initialize required attributes        cls._params = multidict()        cls._values = multidict()        cls._anon_subclass_counter = 0        # We don't support multiple inheritance.  If you want to, you        # must fix multidict to deal with it properly.        if len(bases) > 1:            raise TypeError, "SimObjects do not support multiple inheritance"        base = bases[0]        if isinstance(base, MetaSimObject):            cls._params.parent = base._params            cls._values.parent = base._values            # If your parent has a value in it that's a config node, clone            # it.  Do this now so if we update any of the values'            # attributes we are updating the clone and not the original.            for key,val in base._values.iteritems():                # don't clone if (1) we're about to overwrite it with                # a local setting or (2) we've already cloned a copy                # from an earlier (more derived) base                if cls._init_dict.has_key(key) or cls._values.has_key(key):                    continue                if isSimObject(val):                    cls._values[key] = val()                elif isSimObjSequence(val) and len(val):                    cls._values[key] = [ v() for v in val ]        # now process remaining _init_dict items        for key,val in cls._init_dict.items():            if isinstance(val, (types.FunctionType, types.TypeType)):                type.__setattr__(cls, key, val)            # param descriptions            elif isinstance(val, ParamDesc):                cls._new_param(key, val)            # init-time-only keywords            elif cls.init_keywords.has_key(key):                cls._set_keyword(key, val, cls.init_keywords[key])            # default: use normal path (ends up in __setattr__)            else:                setattr(cls, key, val)    def _set_keyword(cls, keyword, val, kwtype):        if not isinstance(val, kwtype):            raise TypeError, 'keyword %s has bad type %s (expecting %s)' % \\                  (keyword, type(val), kwtype)        if isinstance(val, types.FunctionType):            val = classmethod(val)        type.__setattr__(cls, keyword, val)    def _new_param(cls, name, value):        cls._params[name] = value        if hasattr(value, 'default'):            setattr(cls, name, value.default)    # Set attribute (called on foo.attr = value when foo is an    # instance of class cls).    def __setattr__(cls, attr, value):        # normal processing for private attributes        if attr.startswith('_'):            type.__setattr__(cls, attr, value)            return        if cls.keywords.has_key(attr):            cls._set_keyword(attr, value, cls.keywords[attr])            return        # must be SimObject param        param = cls._params.get(attr, None)        if param:            # It's ok: set attribute by delegating to 'object' class.            try:                cls._values[attr] = param.convert(value)            except Exception, e:                msg = "%s\\nError setting param %s.%s to %s\\n" % \\                      (e, cls.__name__, attr, value)                e.args = (msg, )                raise        # I would love to get rid of this        elif isSimObject(value) or isSimObjSequence(value):           cls._values[attr] = value        else:            raise AttributeError, \\                  "Class %s has no parameter %s" % (cls.__name__, attr)    def __getattr__(cls, attr):        if cls._values.has_key(attr):            return cls._values[attr]        raise AttributeError, \\              "object '%s' has no attribute '%s'" % (cls.__name__, attr)# The ConfigNode class is the root of the special hierarchy.  Most of# the code in this class deals with the configuration hierarchy itself# (parent/child node relationships).class SimObject(object):    # Specify metaclass.  Any class inheriting from SimObject will    # get this metaclass.    __metaclass__ = MetaSimObject    def __init__(self, _value_parent = None, **kwargs):        self._children = {}        if _value_parent and type(_value_parent) != type(self):            # this was called as a type conversion rather than a clone            raise TypeError, "Cannot convert %s to %s" % \\                  (_value_parent.__class__.__name__, self.__class__.__name__)        if not _value_parent:            _value_parent = self.__class__        # clone values        self._values = multidict(_value_parent._values)        for key,val in _value_parent._values.iteritems():            if isSimObject(val):                setattr(self, key, val())            elif isSimObjSequence(val) and len(val):                setattr(self, key, [ v() for v in val ])        # apply attribute assignments from keyword args, if any        for key,val in kwargs.iteritems():            setattr(self, key, val)    def __call__(self, **kwargs):        return self.__class__(_value_parent = self, **kwargs)    def __getattr__(self, attr):        if self._values.has_key(attr):            return self._values[attr]        raise AttributeError, "object '%s' has no attribute '%s'" \\              % (self.__class__.__name__, attr)    # Set attribute (called on foo.attr = value when foo is an    # instance of class cls).    def __setattr__(self, attr, value):        # normal processing for private attributes        if attr.startswith('_'):            object.__setattr__(self, attr, value)            return        # must be SimObject param        param = self._params.get(attr, None)        if param:            # It's ok: set attribute by delegating to 'object' class.            try:                value = param.convert(value)            except Exception, e:                msg = "%s\\nError setting param %s.%s to %s\\n" % \\                      (e, self.__class__.__name__, attr, value)                e.args = (msg, )                raise        # I would love to get rid of this        elif isSimObject(value) or isSimObjSequence(value):            pass        else:            raise AttributeError, "Class %s has no parameter %s" \\                  % (self.__class__.__name__, attr)        # clear out old child with this name, if any        self.clear_child(attr)        if isSimObject(value):            value.set_path(self, attr)        elif isSimObjSequence(value):            value = SimObjVector(value)            [v.set_path(self, "%s%d" % (attr, i)) for i,v in enumerate(value)]        self._values[attr] = value    # this hack allows tacking a '[0]' onto parameters that may or may    # not be vectors, and always getting the first element (e.g. cpus)    def __getitem__(self, key):        if key == 0:            return self        raise TypeError, "Non-zero index '%s' to SimObject" % key    # clear out children with given name, even if it's a vector    def clear_child(self, name):        if not self._children.has_key(name):            return        child = self._children[name]        if isinstance(child, SimObjVector):            for i in xrange(len(child)):                del self._children["s%d" % (name, i)]        del self._children[name]    def add_child(self, name, value):        self._children[name] = value    def set_path(self, parent, name):        if not hasattr(self, '_parent'):            self._parent = parent            self._name = name            parent.add_child(name, self)    def path(self):        if not hasattr(self, '_parent'):            return 'root'        ppath = self._parent.path()        if ppath == 'root':            return self._name        return ppath + "." + self._name    def __str__(self):        return self.path()    def ini_str(self):        return self.path()    def find_any(self, ptype):        if isinstance(self, ptype):            return self, True        found_obj = None        for child in self._children.itervalues():            if isinstance(child, ptype):                if found_obj != None and child != found_obj:                    raise AttributeError, \\                          'parent.any matched more than one: %s %s' % \\                          (found_obj.path, child.path)                found_obj = child        # search param space        for pname,pdesc in self._params.iteritems():            if issubclass(pdesc.ptype, ptype):                match_obj = self._values[pname]                if found_obj != None and found_obj != match_obj:                    raise AttributeError, \\                          'parent.any matched more than one: %s' % obj.path                found_obj = match_obj        return found_obj, found_obj != None    def unproxy(self, base):        return self    def print_ini(self):        print '[' + self.path() + ']'	# .ini section header        if hasattr(self, 'type') and not isinstance(self, ParamContext):            print 'type=%s' % self.type        child_names = self._children.keys()        child_names.sort()        np_child_names = [c for c in child_names \\                          if not isinstance(self._children[c], ParamContext)]        if len(np_child_names):            print 'children=%s' % ' '.join(np_child_names)        param_names = self._params.keys()        param_names.sort()        for param in param_names:            value = self._values.get(param, None)            if value != None:                if isproxy(value):                    try:                        value = value.unproxy(self)                    except:                        print >> sys.stderr, \\                              "Error in unproxying param '%s' of %s" % \\                              (param, self.path())                        raise                    setattr(self, param, value)                print '%s=%s' % (param, self._values[param].ini_str())        print	# blank line between objects        for child in child_names:            self._children[child].print_ini()    # generate output file for 'dot' to display as a pretty graph.    # this code is currently broken.    def outputDot(self, dot):        label = "{%s|" % self.path        if isSimObject(self.realtype):            label +=  '%s|' % self.type        if self.children:            # instantiate children in same order they were added for            # backward compatibility (else we can end up with cpu1            # before cpu0).            for c in self.children:                dot.add_edge(pydot.Edge(self.path,c.path, style="bold"))                  simobjs = []         for param in self.params:            try:                if param.value is None:                    raise AttributeError, 'Parameter with no value'                value = param.value                string = param.string(value)            except Exception, e:                msg = 'exception in %s:%s\\n%s' % (self.name, param.name, e)                e.args = (msg, )                raise            if isSimObject(param.ptype) and string != "Null":                simobjs.append(string)            else:                label += '%s = %s\\\\n' % (param.name, string)                        for so in simobjs:            label += "|<%s> %s" % (so, so)            dot.add_edge(pydot.Edge("%s:%s" % (self.path, so), so,                                    tailport="w"))        label += '}'        dot.add_node(pydot.Node(self.path,shape="Mrecord",label=label))                # recursively dump out children        for c in self.children:            c.outputDot(dot)class ParamContext(SimObject):    pass####################################################################### Proxy object support.######################################################################class BaseProxy(object):    def __init__(self, search_self, search_up):        self._search_self = search_self        self._search_up = search_up        self._multiplier = None    def __setattr__(self, attr, value):        if not attr.startswith('_'):            raise AttributeError, 'cannot set attribute on proxy object'        super(BaseProxy, self).__setattr__(attr, value)    # support multiplying proxies by constants    def __mul__(self, other):

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
自拍偷拍欧美精品| 日韩成人精品在线观看| 亚洲成人在线观看视频| 寂寞少妇一区二区三区| 欧洲精品在线观看| 一本久久综合亚洲鲁鲁五月天| 日韩国产高清在线| 欧美日韩精品一区二区三区| 丝袜国产日韩另类美女| 成人中文字幕合集| 欧美一三区三区四区免费在线看| 中文字幕亚洲综合久久菠萝蜜| 久久99精品久久久久久国产越南 | 亚洲人成在线观看一区二区| 精品影院一区二区久久久| 色94色欧美sute亚洲线路二| 国产精品免费av| 国产在线看一区| 日韩欧美国产系列| 亚洲一区二区三区美女| 欧美一区二区三区系列电影| 91精品一区二区三区久久久久久| 国产精品九色蝌蚪自拍| 国产一二三精品| 精品久久一二三区| 成人99免费视频| 国产日韩精品一区二区三区| 久久国产精品第一页| 日韩视频免费直播| 五月婷婷另类国产| 欧美日韩在线一区二区| 午夜久久久影院| 欧美日本免费一区二区三区| 亚洲与欧洲av电影| 欧美蜜桃一区二区三区| 亚洲成人免费电影| 5566中文字幕一区二区电影| 午夜天堂影视香蕉久久| 3atv在线一区二区三区| 麻豆精品一区二区三区| 精品国产免费人成电影在线观看四季| 视频一区视频二区在线观看| 欧美一级日韩一级| 另类中文字幕网| 久久精品视频免费| 99久久精品国产毛片| 一区二区三区国产精品| 欧美日韩一级大片网址| 九一久久久久久| 亚洲国产精品精华液ab| 色婷婷久久99综合精品jk白丝 | 99这里只有久久精品视频| 亚洲欧美日韩国产一区二区三区| 欧美吞精做爰啪啪高潮| 日本成人在线一区| 久久综合久久久久88| 99久久精品免费看国产免费软件| 一区二区久久久久久| 欧美日韩国产小视频在线观看| 美女国产一区二区| 国产精品久久久久久久久搜平片 | 欧美变态tickling挠脚心| 国内精品久久久久影院色 | 色综合久久久久综合99| 人人爽香蕉精品| 国产精品美女一区二区在线观看| 91亚洲资源网| 美国十次综合导航| 亚洲色图丝袜美腿| 精品少妇一区二区三区日产乱码| av色综合久久天堂av综合| 日韩电影在线看| 中文字幕免费不卡在线| 制服.丝袜.亚洲.另类.中文| 国产一区二区三区四| 亚洲国产cao| 国产欧美日韩另类一区| 欧美美女视频在线观看| 99久久777色| 美日韩一区二区三区| 亚洲欧美日韩小说| 精品国产乱码久久久久久夜甘婷婷 | 日韩av不卡在线观看| 中文字幕在线视频一区| 欧美zozozo| 欧美精品一二三四| 一本一道波多野结衣一区二区| 国产麻豆成人精品| 免费精品视频在线| 午夜精品一区二区三区电影天堂| 国产精品久久久久久久久免费丝袜| 91麻豆精品国产91久久久久 | 精品国产一区二区三区四区四 | 日本欧美久久久久免费播放网| 国产精品高潮呻吟| 国产日韩亚洲欧美综合| 日韩免费福利电影在线观看| 欧美亚洲尤物久久| 在线视频欧美精品| 色综合久久久久久久久| av中文字幕亚洲| 不卡的av中国片| 成人app软件下载大全免费| 国产成人综合自拍| 国产精品亚洲综合一区在线观看| 麻豆精品蜜桃视频网站| 蜜臀精品一区二区三区在线观看| 午夜视黄欧洲亚洲| 天天综合网 天天综合色| 亚洲图片一区二区| 亚洲制服丝袜av| 亚洲国产视频在线| 亚洲国产美女搞黄色| 亚洲一区在线视频观看| 亚洲图片一区二区| 肉色丝袜一区二区| 免费观看成人鲁鲁鲁鲁鲁视频| 免费在线观看成人| 久久精品国产色蜜蜜麻豆| 久久精品72免费观看| 美女久久久精品| 国产一二精品视频| jlzzjlzz亚洲女人18| wwwwww.欧美系列| 国产日韩欧美在线一区| 日本一区二区三区电影| 自拍偷自拍亚洲精品播放| 一区二区日韩电影| 日本少妇一区二区| 国产伦理精品不卡| 99久久国产综合精品色伊| 欧美日韩综合在线免费观看| 91麻豆精品国产自产在线观看一区| 91精品国产手机| 久久久精品免费免费| 国产精品久久免费看| 亚洲一级二级三级| 毛片一区二区三区| 不卡免费追剧大全电视剧网站| 99视频在线观看一区三区| 欧美日韩三级视频| 欧美精品一区二区久久婷婷| 国产精品热久久久久夜色精品三区| 亚洲欧洲综合另类| 麻豆精品久久精品色综合| 不卡av电影在线播放| 欧美人狂配大交3d怪物一区| 久久久久成人黄色影片| 亚洲综合一区二区三区| 精品一区二区三区蜜桃| 91免费版pro下载短视频| 日韩欧美高清在线| 亚洲精品综合在线| 久久99国产精品麻豆| 色香色香欲天天天影视综合网| 欧美一区二区播放| 亚洲人成7777| 国产一区二区视频在线| 色偷偷88欧美精品久久久| 精品国产在天天线2019| 依依成人精品视频| 国产91精品免费| 91精品国产免费久久综合| 亚洲欧美偷拍卡通变态| 国产一区二区久久| 91精品国产日韩91久久久久久| 亚洲视频小说图片| 国产精品亚洲专一区二区三区| 欧美三级电影网站| 中文字幕制服丝袜一区二区三区 | 午夜精品福利视频网站| 99久久国产综合色|国产精品| 精品国产伦一区二区三区观看方式| 亚洲影院久久精品| 99久久99久久精品免费看蜜桃| 久久久久综合网| 毛片av一区二区| 欧美日韩国产免费| 一区二区三区精品在线观看| 不卡的av中国片| 欧美激情一区不卡| 一区二区三区欧美日| 欧美精品 日韩| 久久99精品久久久久久动态图| 《视频一区视频二区| 免费的国产精品| 欧美一区二区三区日韩| 亚洲成av人片在线观看无码| 色婷婷av一区二区三区之一色屋| 国产精品欧美久久久久一区二区| 久久国产婷婷国产香蕉| 欧美一区二区三区四区视频| 亚洲国产精品久久久久秋霞影院| 91热门视频在线观看| 亚洲男女毛片无遮挡| 色又黄又爽网站www久久| 亚洲蜜臀av乱码久久精品| 99国产精品一区| 亚洲精选免费视频| 欧美三级电影精品|