]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/Common/Misc.py
BaseTools: use OrderedDict instead of sdict
[mirror_edk2.git] / BaseTools / Source / Python / Common / Misc.py
index 0b4dd7a7c1626915cd1174071a6fdc7093a7e65c..9967ac470cbb225f234d880834979c4a075a817c 100644 (file)
@@ -822,127 +822,6 @@ class Progressor:
             Progressor._ProgressThread.join()\r
             Progressor._ProgressThread = None\r
 \r
-## A dict which can access its keys and/or values orderly\r
-#\r
-#  The class implements a new kind of dict which its keys or values can be\r
-#  accessed in the order they are added into the dict. It guarantees the order\r
-#  by making use of an internal list to keep a copy of keys.\r
-#\r
-class sdict(dict):\r
-    ## Constructor\r
-    def __init__(self):\r
-        dict.__init__(self)\r
-        self._key_list = []\r
-\r
-    ## [] operator\r
-    def __setitem__(self, key, value):\r
-        if key not in self._key_list:\r
-            self._key_list.append(key)\r
-        dict.__setitem__(self, key, value)\r
-\r
-    ## del operator\r
-    def __delitem__(self, key):\r
-        self._key_list.remove(key)\r
-        dict.__delitem__(self, key)\r
-\r
-    ## used in "for k in dict" loop to ensure the correct order\r
-    def __iter__(self):\r
-        return self.iterkeys()\r
-\r
-    ## len() support\r
-    def __len__(self):\r
-        return len(self._key_list)\r
-\r
-    ## "in" test support\r
-    def __contains__(self, key):\r
-        return key in self._key_list\r
-\r
-    ## indexof support\r
-    def index(self, key):\r
-        return self._key_list.index(key)\r
-\r
-    ## insert support\r
-    def insert(self, key, newkey, newvalue, order):\r
-        index = self._key_list.index(key)\r
-        if order == 'BEFORE':\r
-            self._key_list.insert(index, newkey)\r
-            dict.__setitem__(self, newkey, newvalue)\r
-        elif order == 'AFTER':\r
-            self._key_list.insert(index + 1, newkey)\r
-            dict.__setitem__(self, newkey, newvalue)\r
-\r
-    ## append support\r
-    def append(self, sdict):\r
-        for key in sdict:\r
-            if key not in self._key_list:\r
-                self._key_list.append(key)\r
-            dict.__setitem__(self, key, sdict[key])\r
-\r
-    def has_key(self, key):\r
-        return key in self._key_list\r
-\r
-    ## Empty the dict\r
-    def clear(self):\r
-        self._key_list = []\r
-        dict.clear(self)\r
-\r
-    ## Return a copy of keys\r
-    def keys(self):\r
-        keys = []\r
-        for key in self._key_list:\r
-            keys.append(key)\r
-        return keys\r
-\r
-    ## Return a copy of values\r
-    def values(self):\r
-        values = []\r
-        for key in self._key_list:\r
-            values.append(self[key])\r
-        return values\r
-\r
-    ## Return a copy of (key, value) list\r
-    def items(self):\r
-        items = []\r
-        for key in self._key_list:\r
-            items.append((key, self[key]))\r
-        return items\r
-\r
-    ## Iteration support\r
-    def iteritems(self):\r
-        return iter(self.items())\r
-\r
-    ## Keys interation support\r
-    def iterkeys(self):\r
-        return iter(self.keys())\r
-\r
-    ## Values interation support\r
-    def itervalues(self):\r
-        return iter(self.values())\r
-\r
-    ## Return value related to a key, and remove the (key, value) from the dict\r
-    def pop(self, key, *dv):\r
-        value = None\r
-        if key in self._key_list:\r
-            value = self[key]\r
-            self.__delitem__(key)\r
-        elif len(dv) != 0 :\r
-            value = kv[0]\r
-        return value\r
-\r
-    ## Return (key, value) pair, and remove the (key, value) from the dict\r
-    def popitem(self):\r
-        key = self._key_list[-1]\r
-        value = self[key]\r
-        self.__delitem__(key)\r
-        return key, value\r
-\r
-    def update(self, dict=None, **kwargs):\r
-        if dict is not None:\r
-            for k, v in dict.items():\r
-                self[k] = v\r
-        if len(kwargs):\r
-            for k, v in kwargs.items():\r
-                self[k] = v\r
 \r
 ## Dictionary using prioritized list as key\r
 #\r
@@ -1180,7 +1059,7 @@ def ParseFieldValue (Value):
         if Value[0] == '"' and Value[-1] == '"':\r
             Value = Value[1:-1]\r
         try:\r
-            Value = "'" + uuid.UUID(Value).get_bytes_le() + "'"\r
+            Value = "'" + uuid.UUID(Value).bytes_le + "'"\r
         except ValueError as Message:\r
             raise BadExpression(Message)\r
         Value, Size = ParseFieldValue(Value)\r
@@ -1448,7 +1327,7 @@ def CheckPcdDatum(Type, Value):
 def CommonPath(PathList):\r
     P1 = min(PathList).split(os.path.sep)\r
     P2 = max(PathList).split(os.path.sep)\r
-    for Index in xrange(min(len(P1), len(P2))):\r
+    for Index in range(min(len(P1), len(P2))):\r
         if P1[Index] != P2[Index]:\r
             return os.path.sep.join(P1[:Index])\r
     return os.path.sep.join(P1)\r
@@ -1746,7 +1625,7 @@ class SkuClass():
                             ExtraData = "SKU-ID [%s] value %s exceeds the max value of UINT64"\r
                                       % (SkuName, SkuId))\r
 \r
-        self.AvailableSkuIds = sdict()\r
+        self.AvailableSkuIds = OrderedDict()\r
         self.SkuIdSet = []\r
         self.SkuIdNumberSet = []\r
         self.SkuData = SkuIds\r