| ## @file | |
| # This file is used to define each component of FDF file | |
| # | |
| # Copyright (c) 2008, Intel Corporation. All rights reserved.<BR> | |
| # This program and the accompanying materials | |
| # are licensed and made available under the terms and conditions of the BSD License | |
| # which accompanies this distribution. The full text of the license may be found at | |
| # http://opensource.org/licenses/bsd-license.php | |
| # | |
| # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
| # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
| # | |
| ## | |
| # Import Modules | |
| # | |
| from FdfParserLite import FdfParser | |
| from Table.TableFdf import TableFdf | |
| from CommonDataClass.DataClass import MODEL_FILE_FDF, MODEL_PCD, MODEL_META_DATA_COMPONENT | |
| from String import NormPath | |
| ## FdfObject | |
| # | |
| # This class defined basic Fdf object which is used by inheriting | |
| # | |
| # @param object: Inherited from object class | |
| # | |
| class FdfObject(object): | |
| def __init__(self): | |
| object.__init__() | |
| ## Fdf | |
| # | |
| # This class defined the structure used in Fdf object | |
| # | |
| # @param FdfObject: Inherited from FdfObject class | |
| # @param Filename: Input value for Ffilename of Fdf file, default is None | |
| # @param WorkspaceDir: Input value for current workspace directory, default is None | |
| # | |
| class Fdf(FdfObject): | |
| def __init__(self, Filename = None, IsToDatabase = False, WorkspaceDir = None, Database = None): | |
| self.WorkspaceDir = WorkspaceDir | |
| self.IsToDatabase = IsToDatabase | |
| self.Cur = Database.Cur | |
| self.TblFile = Database.TblFile | |
| self.TblFdf = Database.TblFdf | |
| self.FileID = -1 | |
| self.FileList = {} | |
| # | |
| # Load Fdf file if filename is not None | |
| # | |
| if Filename != None: | |
| self.LoadFdfFile(Filename) | |
| # | |
| # Insert a FDF file record into database | |
| # | |
| def InsertFile(self, Filename): | |
| FileID = -1 | |
| Filename = NormPath(Filename) | |
| if Filename not in self.FileList: | |
| FileID = self.TblFile.InsertFile(Filename, MODEL_FILE_FDF) | |
| self.FileList[Filename] = FileID | |
| return self.FileList[Filename] | |
| ## Load Fdf file | |
| # | |
| # Load the file if it exists | |
| # | |
| # @param Filename: Input value for filename of Fdf file | |
| # | |
| def LoadFdfFile(self, Filename): | |
| FileList = [] | |
| # | |
| # Parse Fdf file | |
| # | |
| Filename = NormPath(Filename) | |
| Fdf = FdfParser(Filename) | |
| Fdf.ParseFile() | |
| # | |
| # Insert inf file and pcd information | |
| # | |
| if self.IsToDatabase: | |
| (Model, Value1, Value2, Value3, Arch, BelongsToItem, BelongsToFile, StartLine, StartColumn, EndLine, EndColumn, Enabled) = \ | |
| (0, '', '', '', 'COMMON', -1, -1, -1, -1, -1, -1, 0) | |
| for Index in range(0, len(Fdf.Profile.PcdDict)): | |
| pass | |
| for Key in Fdf.Profile.PcdDict.keys(): | |
| Model = MODEL_PCD | |
| Value1 = '' | |
| Value2 = ".".join((Key[1], Key[0])) | |
| FileName = Fdf.Profile.PcdFileLineDict[Key][0] | |
| StartLine = Fdf.Profile.PcdFileLineDict[Key][1] | |
| BelongsToFile = self.InsertFile(FileName) | |
| self.TblFdf.Insert(Model, Value1, Value2, Value3, Arch, BelongsToItem, BelongsToFile, StartLine, StartColumn, EndLine, EndColumn, Enabled) | |
| for Index in range(0, len(Fdf.Profile.InfList)): | |
| Model = MODEL_META_DATA_COMPONENT | |
| Value1 = Fdf.Profile.InfList[Index] | |
| Value2 = '' | |
| FileName = Fdf.Profile.InfFileLineList[Index][0] | |
| StartLine = Fdf.Profile.InfFileLineList[Index][1] | |
| BelongsToFile = self.InsertFile(FileName) | |
| self.TblFdf.Insert(Model, Value1, Value2, Value3, Arch, BelongsToItem, BelongsToFile, StartLine, StartColumn, EndLine, EndColumn, Enabled) | |
| ## | |
| # | |
| # This acts like the main() function for the script, unless it is 'import'ed into another | |
| # script. | |
| # | |
| if __name__ == '__main__': | |
| pass |