import time\r
import re\r
import cPickle\r
+from UserDict import IterableUserDict\r
\r
from Common import EdkLogger as EdkLogger\r
from BuildToolError import *\r
Fd = open(File, 'rb')\r
Data = cPickle.load(Fd)\r
except Exception, e:\r
- EdkLogger.verbose("Failed to open [%s]" % File)\r
+ EdkLogger.verbose("Failed to load [%s]\n\t%s" % (File, str(e)))\r
Data = None\r
finally:\r
if Fd != None:\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
+class sdict(IterableUserDict):\r
## Constructor\r
def __init__(self):\r
+ IterableUserDict.__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
+ IterableUserDict.__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
+ IterableUserDict.__delitem__(self, key)\r
\r
## used in "for k in dict" loop to ensure the correct order\r
def __iter__(self):\r
## Empty the dict\r
def clear(self):\r
self._key_list = []\r
- dict.clear(self)\r
+ IterableUserDict.clear(self)\r
\r
## Return a copy of keys\r
def keys(self):\r