1. Add insert function support for class sdict.
authorhche10x <hche10x@7335b38e-4728-0410-8992-fb3ffe349368>
Wed, 23 Apr 2008 05:27:18 +0000 (05:27 +0000)
committerhche10x <hche10x@7335b38e-4728-0410-8992-fb3ffe349368>
Wed, 23 Apr 2008 05:27:18 +0000 (05:27 +0000)
git-svn-id: https://buildtools.tianocore.org/svn/buildtools/trunk/BaseTools@1171 7335b38e-4728-0410-8992-fb3ffe349368

Source/Python/Common/Misc.py

index 0c7442c..783f496 100755 (executable)
@@ -462,6 +462,21 @@ class sdict(IterableUserDict):
     ## "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
+            IterableUserDict.__setitem__(self, newkey, newvalue)\r
+        elif order == 'AFTER':\r
+            self._key_list.insert(index + 1, newkey)\r
+            IterableUserDict.__setitem__(self, newkey, newvalue)\r
+\r
 \r
     def has_key(self, key):\r
         return key in self._key_list\r
@@ -726,4 +741,19 @@ if __name__ == '__main__':
     d['IA32', 'DXE_CORE', 'C'] = 3\r
 \r
     print d['IA32', 'DXE_CORE', 'C']\r
+    \r
+    s = sdict()\r
+    s[1] = 1\r
+    s[3] = 3\r
+    s[4] = 4\r
+    s[6] = 6\r
+    print s.index(3)\r
+    s.insert(3, 2, 2, 'BEFORE')\r
+    print s.index(3)\r
+    print s.index(4)\r
+    s.insert(3, 5, 5, 'AFTER')\r
+    print s.keys()\r
+    print s.values()\r
+    for item in s:\r
+        print item, s[item]\r
 \r