#endif\r
""")\r
\r
-## PackGuid\r
-#\r
-# Pack the GUID value in C structure format into data array\r
-#\r
-# @param GuidStructureValue: The GUID value in C structure format\r
-#\r
-# @retval Buffer: a data array contains the Guid\r
-#\r
-def PackGuid(GuidStructureValue):\r
- GuidString = GuidStructureStringToGuidString(GuidStructureValue)\r
- Guid = GuidString.split('-')\r
- Buffer = pack('=LHHBBBBBBBB', \r
- int(Guid[0], 16), \r
- int(Guid[1], 16), \r
- int(Guid[2], 16), \r
- int(Guid[3][-4:-2], 16), \r
- int(Guid[3][-2:], 16),\r
- int(Guid[4][-12:-10], 16),\r
- int(Guid[4][-10:-8], 16),\r
- int(Guid[4][-8:-6], 16),\r
- int(Guid[4][-6:-4], 16),\r
- int(Guid[4][-4:-2], 16),\r
- int(Guid[4][-2:], 16)\r
- )\r
- return Buffer\r
-\r
-def toHex(s):\r
- lst = []\r
- for ch in s:\r
- hv = hex(ord(ch)).replace('0x', ' ')\r
- if len(hv) == 1:\r
- hv = '0'+hv\r
- lst.append(hv)\r
- if lst:\r
- return reduce(lambda x,y:x+y, lst)\r
- else:\r
- return 'empty'\r
## DbItemList\r
#\r
# The class holds the Pcd database items. ItemSize if not zero should match the item datum type in the C structure. \r
#\r
class DbItemList:\r
def __init__(self, ItemSize, DataList=None, RawDataList=None):\r
- if DataList is None:\r
- DataList = []\r
- if RawDataList is None:\r
- RawDataList = []\r
self.ItemSize = ItemSize\r
- self.DataList = DataList\r
- self.RawDataList = RawDataList\r
+ self.DataList = DataList if DataList else []\r
+ self.RawDataList = RawDataList if RawDataList else []\r
self.ListSize = 0\r
\r
def GetInterOffset(self, Index):\r
return self.ListSize\r
\r
def PackData(self):\r
- if self.ItemSize == 8:\r
- PackStr = "=Q"\r
- elif self.ItemSize == 4:\r
- PackStr = "=L"\r
- elif self.ItemSize == 2:\r
- PackStr = "=H"\r
- elif self.ItemSize == 1:\r
- PackStr = "=B"\r
- elif self.ItemSize == 0:\r
- PackStr = "=B"\r
- elif self.ItemSize == 16:\r
- # pack Guid\r
- PackStr = ''\r
- else:\r
- # should not reach here\r
- assert(False)\r
+ ## PackGuid\r
+ #\r
+ # Pack the GUID value in C structure format into data array\r
+ #\r
+ # @param GuidStructureValue: The GUID value in C structure format\r
+ #\r
+ # @retval Buffer: a data array contains the Guid\r
+ #\r
+ def PackGuid(GuidStructureValue):\r
+ GuidString = GuidStructureStringToGuidString(GuidStructureValue)\r
+ return PackGUID(GuidString.split('-'))\r
+\r
+ PackStr = PACK_CODE_BY_SIZE[self.ItemSize]\r
\r
Buffer = ''\r
for Datas in self.RawDataList:\r
#\r
class DbExMapTblItemList (DbItemList):\r
def __init__(self, ItemSize, DataList=None, RawDataList=None):\r
- if DataList is None:\r
- DataList = []\r
- if RawDataList is None:\r
- RawDataList = []\r
DbItemList.__init__(self, ItemSize, DataList, RawDataList)\r
+\r
def PackData(self):\r
Buffer = ''\r
PackStr = "=LHH"\r
#\r
class DbComItemList (DbItemList):\r
def __init__(self, ItemSize, DataList=None, RawDataList=None):\r
- if DataList is None:\r
- DataList = []\r
- if RawDataList is None:\r
- RawDataList = []\r
DbItemList.__init__(self, ItemSize, DataList, RawDataList)\r
+\r
def GetInterOffset(self, Index):\r
Offset = 0\r
if self.ItemSize == 0:\r
return self.ListSize\r
\r
def PackData(self):\r
- if self.ItemSize == 8:\r
- PackStr = "=Q"\r
- elif self.ItemSize == 4:\r
- PackStr = "=L"\r
- elif self.ItemSize == 2:\r
- PackStr = "=H"\r
- elif self.ItemSize == 1:\r
- PackStr = "=B"\r
- elif self.ItemSize == 0:\r
- PackStr = "=B"\r
- else:\r
- assert(False)\r
+ PackStr = PACK_CODE_BY_SIZE[self.ItemSize]\r
\r
Buffer = ''\r
for DataList in self.RawDataList:\r
#\r
class DbVariableTableItemList (DbComItemList):\r
def __init__(self, ItemSize, DataList=None, RawDataList=None):\r
- if DataList is None:\r
- DataList = []\r
- if RawDataList is None:\r
- RawDataList = []\r
DbComItemList.__init__(self, ItemSize, DataList, RawDataList)\r
+\r
def PackData(self):\r
PackStr = "=LLHHLHH"\r
Buffer = ''\r
\r
class DbStringHeadTableItemList(DbItemList):\r
def __init__(self,ItemSize,DataList=None,RawDataList=None):\r
- if DataList is None:\r
- DataList = []\r
- if RawDataList is None:\r
- RawDataList = [] \r
DbItemList.__init__(self, ItemSize, DataList, RawDataList)\r
\r
def GetInterOffset(self, Index):\r
#\r
class DbSkuHeadTableItemList (DbItemList):\r
def __init__(self, ItemSize, DataList=None, RawDataList=None):\r
- if DataList is None:\r
- DataList = []\r
- if RawDataList is None:\r
- RawDataList = [] \r
DbItemList.__init__(self, ItemSize, DataList, RawDataList)\r
+\r
def PackData(self):\r
PackStr = "=LL"\r
Buffer = ''\r
#\r
class DbSizeTableItemList (DbItemList):\r
def __init__(self, ItemSize, DataList=None, RawDataList=None):\r
- if DataList is None:\r
- DataList = []\r
- if RawDataList is None:\r
- RawDataList = [] \r
DbItemList.__init__(self, ItemSize, DataList, RawDataList)\r
+\r
def GetListSize(self):\r
length = 0\r
for Data in self.RawDataList:\r
# Construct the database buffer\r
Guid = "{0x3c7d193c, 0x682c, 0x4c14, 0xa6, 0x8f, 0x55, 0x2d, 0xea, 0x4f, 0x43, 0x7e}"\r
Guid = StringArrayToList(Guid)\r
- Buffer = pack('=LHHBBBBBBBB', \r
- Guid[0], \r
- Guid[1], \r
- Guid[2], \r
- Guid[3], \r
- Guid[4], \r
- Guid[5],\r
- Guid[6],\r
- Guid[7],\r
- Guid[8],\r
- Guid[9],\r
- Guid[10],\r
- )\r
+ Buffer = PackByteFormatGUID(Guid)\r
\r
b = pack("=L", DATABASE_VERSION)\r
Buffer += b\r