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