# OFFSET_OF(FlexbleArrayField) + sizeof(FlexibleArray[0]) * (HighestIndex + 1)\r
#\r
CApp = CApp + ' Size = sizeof(%s);\n' % (Pcd.DatumType)\r
+ for FieldList in [Pcd.DefaultValues]:\r
+ if not FieldList:\r
+ continue\r
+ for FieldName in FieldList:\r
+ FieldName = "." + FieldName\r
+ IsArray = self.IsFieldValueAnArray(FieldList[FieldName.strip(".")][0])\r
+ if IsArray:\r
+ Value, ValueSize = ParseFieldValue (FieldList[FieldName.strip(".")][0])\r
+ CApp = CApp + ' __FLEXIBLE_SIZE(Size, %s, %s, %d / __ARRAY_ELEMENT_SIZE(%s, %s) + ((%d %% __ARRAY_ELEMENT_SIZE(%s, %s)) ? 1 : 0));\n' % (Pcd.DatumType, FieldName.strip("."), ValueSize, Pcd.DatumType, FieldName.strip("."), ValueSize, Pcd.DatumType, FieldName.strip("."));\r
+ else:\r
+ NewFieldName = ''\r
+ while '[' in FieldName:\r
+ NewFieldName = NewFieldName + FieldName.split('[', 1)[0] + '[0]'\r
+ ArrayIndex = int(FieldName.split('[', 1)[1].split(']', 1)[0])\r
+ FieldName = FieldName.split(']', 1)[1]\r
+ FieldName = NewFieldName + FieldName\r
+ while '[' in FieldName:\r
+ FieldName = FieldName.rsplit('[', 1)[0]\r
+ CApp = CApp + ' __FLEXIBLE_SIZE(Size, %s, %s, %d);\n' % (Pcd.DatumType, FieldName.strip("."), ArrayIndex + 1)\r
for skuname in self.SkuIdMgr.SkuOverrideOrder():\r
inherit_OverrideValues = Pcd.SkuOverrideValues[skuname]\r
- for FieldList in [Pcd.DefaultValues, inherit_OverrideValues.get(DefaultStoreName)]:\r
+ for FieldList in [inherit_OverrideValues.get(DefaultStoreName)]:\r
if not FieldList:\r
continue\r
for FieldName in FieldList:\r
#\r
# Assign field values in PCD\r
#\r
+ for FieldList in [Pcd.DefaultValues]:\r
+ if not FieldList:\r
+ continue\r
+ for FieldName in FieldList:\r
+ IsArray = self.IsFieldValueAnArray(FieldList[FieldName][0])\r
+ try:\r
+ Value, ValueSize = ParseFieldValue (FieldList[FieldName][0])\r
+ except Exception:\r
+ print FieldList[FieldName][0]\r
+ if isinstance(Value, str):\r
+ CApp = CApp + ' Pcd->%s = %s; // From %s Line %d Value %s\n' % (FieldName, Value, FieldList[FieldName][1], FieldList[FieldName][2], FieldList[FieldName][0])\r
+ elif IsArray:\r
+ #\r
+ # Use memcpy() to copy value into field\r
+ #\r
+ CApp = CApp + ' FieldSize = __FIELD_SIZE(%s, %s);\n' % (Pcd.DatumType, FieldName)\r
+ CApp = CApp + ' Value = %s; // From %s Line %d Value %s\n' % (self.IntToCString(Value, ValueSize), FieldList[FieldName][1], FieldList[FieldName][2], FieldList[FieldName][0])\r
+ CApp = CApp + ' memcpy (&Pcd->%s[0], Value, (FieldSize > 0 && FieldSize < %d) ? FieldSize : %d);\n' % (FieldName, ValueSize, ValueSize)\r
+ else:\r
+ if ValueSize > 4:\r
+ CApp = CApp + ' Pcd->%s = %dULL; // From %s Line %d Value %s\n' % (FieldName, Value, FieldList[FieldName][1], FieldList[FieldName][2], FieldList[FieldName][0])\r
+ else:\r
+ CApp = CApp + ' Pcd->%s = %d; // From %s Line %d Value %s\n' % (FieldName, Value, FieldList[FieldName][1], FieldList[FieldName][2], FieldList[FieldName][0])\r
for skuname in self.SkuIdMgr.SkuOverrideOrder():\r
inherit_OverrideValues = Pcd.SkuOverrideValues[skuname]\r
- for FieldList in [Pcd.DefaultValues, Pcd.DefaultFromDSC,inherit_OverrideValues.get(DefaultStoreName)]:\r
+ for FieldList in [Pcd.DefaultFromDSC,inherit_OverrideValues.get(DefaultStoreName)]:\r
if not FieldList:\r
continue\r
if Pcd.DefaultFromDSC and FieldList == Pcd.DefaultFromDSC:\r