+ def CompletePcdValues(self,PcdSet):\r
+ Pcds = {}\r
+ DefaultStoreObj = DefaultStore(self._GetDefaultStores())\r
+ SkuIds = set([skuid for pcdobj in PcdSet.values() for skuid in pcdobj.SkuInfoList.keys()])\r
+ DefaultStores = set([storename for pcdobj in PcdSet.values() for skuobj in pcdobj.SkuInfoList.values() for storename in skuobj.DefaultStoreDict.keys()])\r
+ for PcdCName, TokenSpaceGuid in PcdSet:\r
+ PcdObj = PcdSet[(PcdCName, TokenSpaceGuid)]\r
+ if PcdObj.Type not in [self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_DEFAULT],\r
+ self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_HII],\r
+ self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_VPD],\r
+ self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_EX_DEFAULT],\r
+ self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_EX_HII],\r
+ self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_EX_VPD]]:\r
+ Pcds[PcdCName, TokenSpaceGuid]= PcdObj\r
+ continue\r
+ PcdType = PcdObj.Type\r
+ if PcdType in [self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_HII], self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_EX_HII]]:\r
+ for skuid in PcdObj.SkuInfoList:\r
+ skuobj = PcdObj.SkuInfoList[skuid]\r
+ mindefaultstorename = DefaultStoreObj.GetMin(set([defaultstorename for defaultstorename in skuobj.DefaultStoreDict]))\r
+ for defaultstorename in DefaultStores:\r
+ if defaultstorename not in skuobj.DefaultStoreDict:\r
+ skuobj.DefaultStoreDict[defaultstorename] = skuobj.DefaultStoreDict[mindefaultstorename]\r
+ skuobj.HiiDefaultValue = skuobj.DefaultStoreDict[mindefaultstorename]\r
+ for skuid in SkuIds:\r
+ if skuid not in PcdObj.SkuInfoList:\r
+ nextskuid = self.SkuIdMgr.GetNextSkuId(skuid)\r
+ while nextskuid not in PcdObj.SkuInfoList:\r
+ nextskuid = self.SkuIdMgr.GetNextSkuId(nextskuid)\r
+ PcdObj.SkuInfoList[skuid] = PcdObj.SkuInfoList[nextskuid]\r
+ if PcdType in [self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_HII], self._PCD_TYPE_STRING_[MODEL_PCD_DYNAMIC_EX_HII]]:\r
+ PcdObj.DefaultValue = PcdObj.SkuInfoList.values()[0].HiiDefaultValue if self.SkuIdMgr.SkuUsageType == self.SkuIdMgr.SINGLE else PcdObj.SkuInfoList["DEFAULT"].HiiDefaultValue\r
+ Pcds[PcdCName, TokenSpaceGuid]= PcdObj\r
+ return Pcds\r