1. Create ECC Database structure
authorhche10x <hche10x@7335b38e-4728-0410-8992-fb3ffe349368>
Mon, 24 Dec 2007 06:13:21 +0000 (06:13 +0000)
committerhche10x <hche10x@7335b38e-4728-0410-8992-fb3ffe349368>
Mon, 24 Dec 2007 06:13:21 +0000 (06:13 +0000)
2. Create ECC tables
3. Create ECC data classes

git-svn-id: https://buildtools.tianocore.org/svn/buildtools/trunk/BaseTools@928 7335b38e-4728-0410-8992-fb3ffe349368

Source/Python/Ecc/DataClass.py [new file with mode: 0644]
Source/Python/Ecc/Database.py [new file with mode: 0644]
Source/Python/Ecc/Database/Ecc.db [new file with mode: 0644]
Source/Python/Ecc/TableDataModel.py [new file with mode: 0644]
Source/Python/Ecc/TableFile.py [new file with mode: 0644]
Source/Python/Ecc/TableFunction.py [new file with mode: 0644]
Source/Python/Ecc/TablePcd.py [new file with mode: 0644]
Source/Python/Ecc/TableVariable.py [new file with mode: 0644]

diff --git a/Source/Python/Ecc/DataClass.py b/Source/Python/Ecc/DataClass.py
new file mode 100644 (file)
index 0000000..19370ea
--- /dev/null
@@ -0,0 +1,250 @@
+## @file\r
+# This file is used to define class for data sturcture used in ECC\r
+#\r
+# Copyright (c) 2007, 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
+# Import Modules\r
+#\r
+import Common.EdkLogger as EdkLogger\r
+\r
+##\r
+# Static values for data models\r
+#\r
+MODEL_UNKNOWN = 0\r
+\r
+MODEL_FILE_C = 1001\r
+MODEL_FILE_H = 1002\r
+MODEL_FILE_ASM = 1003\r
+MODEL_FILE_INF = 1011\r
+MODEL_FILE_DEC = 1012\r
+MODEL_FILE_DSC = 1013\r
+MODEL_FILE_DSC = 1014\r
+\r
+MODEL_VARIABLE_FILE_HEADER = 2001\r
+MODEL_VARIABLE_FUNCTION_HEADER = 2002\r
+MODEL_VARIABLE_COMMENT = 2003\r
+MODEL_VARIABLE_PARAMETER = 2004\r
+MODEL_VARIABLE_STRUCTURE = 2005\r
+MODEL_VARIABLE_VARIABLE = 2006\r
+MODEL_VARIABLE_INCLUDE = 2007\r
+MODEL_VARIABLE_MACRO = 2008\r
+MODEL_VARIABLE_PREDICATE_EXPRESSION = 2009\r
+\r
+MODEL_EFI_PROTOCOL = 3001\r
+MODEL_EFI_PPI = 3002\r
+MODEL_EFI_GUID = 3003\r
+MODEL_EFI_LIBRARY_CLASS = 3004\r
+MODEL_EFI_LIBRARY_INSTANCE = 3005\r
+MODEL_EFI_PCD = 3006\r
+MODEL_EFI_SOURCE_FILE = 3007\r
+MODEL_EFI_BINARY_FILE = 3008\r
+\r
+MODEL_PCD_FIXED_AT_BUILD = 4001\r
+MODEL_PCD_PATCHABLE_IN_MODULE = 4002\r
+MODEL_PCD_FEATURE_FLAG = 4003\r
+MODEL_PCD_DYNAMIC_EX = 4004\r
+MODEL_PCD_DYNAMIC = 4005\r
+\r
+MODEL_LIST = [('MODEL_UNKNOWN', MODEL_UNKNOWN),\r
+              ('MODEL_FILE_C', MODEL_FILE_C),\r
+              ('MODEL_FILE_H', MODEL_FILE_H),\r
+              ('MODEL_FILE_ASM', MODEL_FILE_ASM),\r
+              ('MODEL_FILE_INF', MODEL_FILE_INF),\r
+              ('MODEL_FILE_DEC', MODEL_FILE_DEC),\r
+              ('MODEL_FILE_DSC', MODEL_FILE_DSC),\r
+              ('MODEL_FILE_DSC', MODEL_FILE_DSC),\r
+              ('MODEL_VARIABLE_FILE_HEADER', MODEL_VARIABLE_FILE_HEADER),\r
+              ('MODEL_VARIABLE_FUNCTION_HEADER', MODEL_VARIABLE_FUNCTION_HEADER),\r
+              ('MODEL_VARIABLE_COMMENT', MODEL_VARIABLE_COMMENT),\r
+              ('MODEL_VARIABLE_PARAMETER', MODEL_VARIABLE_PARAMETER),\r
+              ('MODEL_VARIABLE_STRUCTURE', MODEL_VARIABLE_STRUCTURE),\r
+              ('MODEL_VARIABLE_VARIABLE', MODEL_VARIABLE_VARIABLE),\r
+              ('MODEL_VARIABLE_INCLUDE', MODEL_VARIABLE_INCLUDE),\r
+              ('MODEL_VARIABLE_MACRO', MODEL_VARIABLE_MACRO),\r
+              ('MODEL_VARIABLE_PREDICATE_EXPRESSION', MODEL_VARIABLE_PREDICATE_EXPRESSION),\r
+              ('MODEL_EFI_PROTOCOL', MODEL_EFI_PROTOCOL),\r
+              ('MODEL_EFI_PPI', MODEL_EFI_PPI),\r
+              ('MODEL_EFI_GUID', MODEL_EFI_GUID),\r
+              ('MODEL_EFI_LIBRARY_CLASS', MODEL_EFI_LIBRARY_CLASS),\r
+              ('MODEL_EFI_LIBRARY_INSTANCE', MODEL_EFI_LIBRARY_INSTANCE),\r
+              ('MODEL_EFI_PCD', MODEL_EFI_PCD),\r
+              ('MODEL_EFI_SOURCE_FILE', MODEL_EFI_SOURCE_FILE),\r
+              ('MODEL_EFI_BINARY_FILE', MODEL_EFI_BINARY_FILE),\r
+              ('MODEL_PCD_FIXED_AT_BUILD', MODEL_PCD_FIXED_AT_BUILD),\r
+              ('MODEL_PCD_PATCHABLE_IN_MODULE', MODEL_PCD_PATCHABLE_IN_MODULE),\r
+              ('MODEL_PCD_FEATURE_FLAG', MODEL_PCD_FEATURE_FLAG),\r
+              ('MODEL_PCD_DYNAMIC_EX', MODEL_PCD_DYNAMIC_EX),\r
+              ('MODEL_PCD_DYNAMIC', MODEL_PCD_DYNAMIC)\r
+             ]\r
+\r
+## FunctionClass\r
+#\r
+# This class defines a structure of a function\r
+# \r
+# @param ID:               ID of a Function\r
+# @param Header:           Header of a Function\r
+# @param Modifier:         Modifier of a Function \r
+# @param Name:             Name of a Function\r
+# @param ReturnStatement:  ReturnStatement of a Funciont\r
+# @param StartLine:        StartLine of a Function\r
+# @param StartColumn:      StartColumn of a Function\r
+# @param EndLine:          EndLine of a Function\r
+# @param EndColumn:        EndColumn of a Function\r
+# @param BelongsToFile:    The Function belongs to which file\r
+#\r
+# @var ID:                 ID of a Function\r
+# @var Header:             Header of a Function\r
+# @var Modifier:           Modifier of a Function \r
+# @var Name:               Name of a Function\r
+# @var ReturnStatement:    ReturnStatement of a Funciont\r
+# @var StartLine:          StartLine of a Function\r
+# @var StartColumn:        StartColumn of a Function\r
+# @var EndLine:            EndLine of a Function\r
+# @var EndColumn:          EndColumn of a Function\r
+# @var BelongsToFile:      The Function belongs to which file\r
+#\r
+class FunctionClass(object):\r
+    def __init__(self, ID = -1, Header = '', Modifier = '', Name = '', ReturnStatement = '', StartLine = -1, StartColumn = -1, EndLine = -1, EndColumn = -1, BelongsToFile = -1):\r
+        self.ID = ID\r
+        self.Header = Header\r
+        self.Modifier = Modifier                    \r
+        self.Name = Name\r
+        self.ReturnStatement = ReturnStatement\r
+        self.StartLine = StartLine\r
+        self.StartColumn = StartColumn\r
+        self.EndLine = EndLine\r
+        self.EndColumn = EndColumn\r
+        self.BelongsToFile = BelongsToFile\r
+\r
+## VariableClass\r
+#\r
+# This class defines a structure of a variable\r
+# \r
+# @param ID:                 ID of a Variable\r
+# @param Modifier:           Modifier of a Variable\r
+# @param Type:               Type of a Variable\r
+# @param Name:               Name of a Variable\r
+# @param Value:              Value of a Variable\r
+# @param Model:              Model of a Variable\r
+# @param BelongsToFile:      The Variable belongs to which file\r
+# @param BelongsToFunction:  The Variable belongs to which function\r
+# @param StartLine:          StartLine of a Variable\r
+# @param StartColumn:        StartColumn of a Variable\r
+# @param EndLine:            EndLine of a Variable\r
+# @param EndColumn:          EndColumn of a Variable\r
+#\r
+# @var ID:                   ID of a Variable\r
+# @var Modifier:             Modifier of a Variable\r
+# @var Type:                 Type of a Variable\r
+# @var Name:                 Name of a Variable\r
+# @var Value:                Value of a Variable\r
+# @var Model:                Model of a Variable\r
+# @var BelongsToFile:        The Variable belongs to which file\r
+# @var BelongsToFunction:    The Variable belongs to which function\r
+# @var StartLine:            StartLine of a Variable\r
+# @var StartColumn:          StartColumn of a Variable\r
+# @var EndLine:              EndLine of a Variable\r
+# @var EndColumn:            EndColumn of a Variable\r
+#\r
+class FunctionClass(object):\r
+    def __init__(self, ID = -1, Modifier = '', Type = '', Name = '', Value = '', Model = MODEL_UNKNOWN, BelongsToFile = -1, BelongsToFunction = -1, StartLine = -1, StartColumn = -1, EndLine = -1, EndColumn = -1):\r
+        self.ID = ID\r
+        self.Modifier = Modifier\r
+        self.Type = Type\r
+        self.Name = Name\r
+        self.Value = Value\r
+        self.BelongsToFile = BelongsToFile\r
+        self.BelongsToFunction = BelongsToFunction\r
+        self.StartLine = StartLine\r
+        self.StartColumn = StartColumn\r
+        self.EndLine = EndLine\r
+        self.EndColumn = EndColumn\r
+\r
+## PcdClass\r
+#\r
+# This class defines a structure of a Pcd\r
+# \r
+# @param ID:                   ID of a Pcd\r
+# @param CName:                CName of a Pcd\r
+# @param TokenSpaceGuidCName:  TokenSpaceGuidCName of a Pcd\r
+# @param Token:                Token of a Pcd\r
+# @param DatumType:            DatumType of a Pcd\r
+# @param Model:                Model of a Pcd\r
+# @param BelongsToFile:        The Pcd belongs to which file\r
+# @param BelongsToFunction:    The Pcd belongs to which function\r
+# @param StartLine:            StartLine of a Pcd\r
+# @param StartColumn:          StartColumn of a Pcd\r
+# @param EndLine:              EndLine of a Pcd\r
+# @param EndColumn:            EndColumn of a Pcd\r
+#\r
+# @var ID:                     ID of a Pcd\r
+# @var CName:                  CName of a Pcd\r
+# @var TokenSpaceGuidCName:    TokenSpaceGuidCName of a Pcd\r
+# @var Token:                  Token of a Pcd\r
+# @var DatumType:              DatumType of a Pcd\r
+# @var Model:                  Model of a Pcd\r
+# @var BelongsToFile:          The Pcd belongs to which file\r
+# @var BelongsToFunction:      The Pcd belongs to which function\r
+# @var StartLine:              StartLine of a Pcd\r
+# @var StartColumn:            StartColumn of a Pcd\r
+# @var EndLine:                EndLine of a Pcd\r
+# @var EndColumn:              EndColumn of a Pcd\r
+#\r
+class FunctionClass(object):\r
+    def __init__(self, ID = -1, CName = '', TokenSpaceGuidCName = '', Token = '', DatumType = '', Model = MODEL_UNKNOWN, BelongsToFile = -1, BelongsToFunction = -1, StartLine = -1, StartColumn = -1, EndLine = -1, EndColumn = -1):\r
+        self.ID = ID\r
+        self.CName = CName\r
+        self.TokenSpaceGuidCName = TokenSpaceGuidCName\r
+        self.Token = Token\r
+        self.DatumType = DatumType\r
+        self.BelongsToFile = BelongsToFile\r
+        self.BelongsToFunction = BelongsToFunction\r
+        self.StartLine = StartLine\r
+        self.StartColumn = StartColumn\r
+        self.EndLine = EndLine\r
+        self.EndColumn = EndColumn\r
+\r
+## FileClass\r
+#\r
+# This class defines a structure of a file\r
+# \r
+# @param ID:            ID of a File\r
+# @param Name:          Name of a File\r
+# @param ExtName:       ExtName of a File\r
+# @param Path:          Path of a File\r
+# @param FullPath:      FullPath of a File\r
+# @param Model:         Model of a File\r
+# @param FunctionList:  FunctionList of a File\r
+# @param VariableList:  VariableList of a File\r
+# @param PcdList:       PcdList of a File\r
+#\r
+# @var ID:              ID of a File\r
+# @var Name:            Name of a File\r
+# @var ExtName:         ExtName of a File\r
+# @var Path:            Path of a File\r
+# @var FullPath:        FullPath of a File\r
+# @var Model:           Model of a File\r
+# @var FunctionList:    FunctionList of a File\r
+# @var VariableList:    VariableList of a File\r
+# @var PcdList:         PcdList of a File\r
+#\r
+class FileClass(object):\r
+    def __init__(self, ID = -1, Name = '', ExtName = '', Path = '', FullPath = '', Model = MODEL_UNKNOWN, FunctionList = [], VariableList = [], PcdList = []):\r
+        self.ID = ID                                   \r
+        self.Name = Name\r
+        self.ExtName = ExtName                    \r
+        self.Path = Path\r
+        self.FullPath = FullPath\r
+        self.Model = Model\r
+        \r
+        self.FunctionList = FunctionList\r
+        self.VariableList = VariableList\r
+        self.PcdList = PcdList\r
diff --git a/Source/Python/Ecc/Database.py b/Source/Python/Ecc/Database.py
new file mode 100644 (file)
index 0000000..a82874c
--- /dev/null
@@ -0,0 +1,108 @@
+## @file\r
+# This file is used to create a database used by ECC tool\r
+#\r
+# Copyright (c) 2007, 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
+import sqlite3\r
+import os\r
+from TableDataModel import TableDataModel\r
+from TableFile import TableFile\r
+from TableFunction import TableFunction\r
+from TablePcd import TablePcd\r
+from TableVariable import TableVariable\r
+import Common.EdkLogger as EdkLogger\r
+\r
+##\r
+# Static definitions\r
+#\r
+DATABASE_PATH = "Database/Ecc.db"\r
+\r
+## TableDataModel\r
+#\r
+# This class defined the ECC databse\r
+# During the phase of initialization, the database will create all tables and\r
+# insert all records of table DataModel\r
+# \r
+# @param object:    Inherited from object class\r
+# @param DbPath:    A string for the path of the ECC database\r
+#\r
+# @var Conn:        Connection of the ECC database\r
+# @var Cur:         Cursor of the connection\r
+# @var TblDataModel:  Local instance for TableDataModel\r
+#\r
+class Database(object):\r
+    def __init__(self, DbPath):\r
+        EdkLogger.SetLevel(EdkLogger.VERBOSE)\r
+        self.Conn = sqlite3.connect(DbPath)\r
+        self.Cur = self.Conn.cursor()\r
+        self.TblDataModel = TableDataModel(self.Cur)\r
+        self.TblFile = TableFile(self.Cur)\r
+        self.TblFunction = TableFunction(self.Cur)\r
+        self.TblVariable = TableVariable(self.Cur)\r
+        self.TblPcd = TablePcd(self.Cur)\r
+    \r
+    ## Initialize ECC database\r
+    #\r
+    # 1. Delete all old existing tables\r
+    # 2. Create new tables\r
+    # 3. Initialize table DataModel\r
+    #\r
+    def InitDatabase(self):\r
+        EdkLogger.verbose("\nInitialize ECC database started ...")\r
+        #\r
+        # Drop all old existing tables\r
+        #\r
+        self.TblDataModel.Drop()\r
+        self.TblFile.Drop()\r
+        self.TblFunction.Drop()\r
+        self.TblPcd.Drop()\r
+        self.TblVariable.Drop()\r
+        \r
+        #\r
+        # Create new tables\r
+        #\r
+        self.TblDataModel.Create()\r
+        self.TblFile.Create()\r
+        self.TblFunction.Create()\r
+        self.TblPcd.Create()\r
+        self.TblVariable.Create()\r
+        \r
+        #\r
+        # Initialize table DataModel\r
+        #\r
+        self.TblDataModel.InitTable()\r
+        EdkLogger.verbose("Initialize ECC database ... DONE!")\r
+\r
+    ## Query a table\r
+    #\r
+    # @param Table:  The instance of the table to be queried\r
+    #\r
+    def QueryTable(self, Table):\r
+        Table.Query()\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
+    Db = Database(DATABASE_PATH)\r
+    Db.InitDatabase()\r
+    Db.QueryTable(Db.TblDataModel)\r
+    Db.QueryTable(Db.TblFile)\r
+    Db.QueryTable(Db.TblFunction)\r
+    Db.QueryTable(Db.TblPcd)\r
+    Db.QueryTable(Db.TblVariable)\r
+    \r
+    
\ No newline at end of file
diff --git a/Source/Python/Ecc/Database/Ecc.db b/Source/Python/Ecc/Database/Ecc.db
new file mode 100644 (file)
index 0000000..4655c17
Binary files /dev/null and b/Source/Python/Ecc/Database/Ecc.db differ
diff --git a/Source/Python/Ecc/TableDataModel.py b/Source/Python/Ecc/TableDataModel.py
new file mode 100644 (file)
index 0000000..d60d9af
--- /dev/null
@@ -0,0 +1,101 @@
+## @file\r
+# This file is used to create/update/query/erase table for data models\r
+#\r
+# Copyright (c) 2007, 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
+import Common.EdkLogger as EdkLogger\r
+import DataClass\r
+\r
+## TableDataModel\r
+#\r
+# This class defined a table used for data model\r
+# \r
+# @param object:       Inherited from object class\r
+#\r
+#\r
+class TableDataModel(object):\r
+    def __init__(self, Cursor):\r
+        self.Cur = Cursor\r
+    \r
+    ## Create table\r
+    #\r
+    # Create table DataModel\r
+    #\r
+    # @param ID:           ID of a ModelType\r
+    # @param CrossIndex:   CrossIndex of a ModelType\r
+    # @param Name:         Name of a ModelType\r
+    # @param Description:  Description of a ModelType\r
+    #\r
+    def Create(self):\r
+        SqlCommand = """create table IF NOT EXISTS DataModel(ID SINGLE PRIMARY KEY,\r
+                                                              CrossIndex INTEGER NOT NULL,\r
+                                                              Name VARCHAR NOT NULL,\r
+                                                              Description VARCHAR\r
+                                                             )"""\r
+        self.Cur.execute(SqlCommand)\r
+        EdkLogger.verbose("Create table DataModel ... DONE!")\r
+\r
+    ## Insert table\r
+    #\r
+    # Insert a record into table DataModel\r
+    #\r
+    # @param ID:           ID of a ModelType\r
+    # @param CrossIndex:   CrossIndex of a ModelType\r
+    # @param Name:         Name of a ModelType\r
+    # @param Description:  Description of a ModelType\r
+    #\r
+    def Insert(self, ID, CrossIndex, Name, Description):\r
+        SqlCommand = """insert into DataModel values(%s, %s, '%s', '%s')""" % (ID, CrossIndex, Name, Description)\r
+        self.Cur.execute(SqlCommand)\r
+        EdkLogger.verbose(SqlCommand + " ... DONE!")\r
+    \r
+    ## Query table\r
+    #\r
+    # Query all records of table DataModel\r
+    #  \r
+    def Query(self):\r
+        EdkLogger.verbose("\nQuery tabel DataModel started ...")\r
+        SqlCommand = """select * from DataModel"""\r
+        self.Cur.execute(SqlCommand)\r
+        for Rs in self.Cur:\r
+            EdkLogger.verbose(Rs)\r
+        SqlCommand = """select count(*) as Count from DataModel"""\r
+        self.Cur.execute(SqlCommand)\r
+        for Item in self.Cur:\r
+            EdkLogger.verbose("***Total %s records in table DataModel***" % Item)\r
+        EdkLogger.verbose("Query tabel DataModel DONE!")\r
+\r
+    ## Drop a table\r
+    #\r
+    # Drop the table DataModel\r
+    #\r
+    def Drop(self):\r
+        SqlCommand = """drop table IF EXISTS DataModel"""\r
+        self.Cur.execute(SqlCommand)\r
+        EdkLogger.verbose("Drop tabel DataModel ... DONE!")\r
+    \r
+    ## Init table\r
+    #\r
+    # Create all default records of table DataModel\r
+    #  \r
+    def InitTable(self):\r
+        EdkLogger.verbose("\nInitialize table DataModel started ...")\r
+        ID = 0\r
+        for Item in DataClass.MODEL_LIST:\r
+            ID = ID + 1\r
+            CrossIndex = Item[1]\r
+            Name = Item[0]\r
+            Description = Item[0]\r
+            self.Insert(ID, CrossIndex, Name, Description)\r
+        EdkLogger.verbose("Initialize table DataModel ... DONE!")\r
diff --git a/Source/Python/Ecc/TableFile.py b/Source/Python/Ecc/TableFile.py
new file mode 100644 (file)
index 0000000..d7ae28f
--- /dev/null
@@ -0,0 +1,92 @@
+## @file\r
+# This file is used to create/update/query/erase table for files\r
+#\r
+# Copyright (c) 2007, 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
+import Common.EdkLogger as EdkLogger\r
+\r
+## TableFile\r
+#\r
+# This class defined a table used for file\r
+# \r
+# @param object:       Inherited from object class\r
+#\r
+class TableFile(object):\r
+    def __init__(self, Cursor):\r
+        self.Cur = Cursor\r
+    \r
+    ## Create table\r
+    #\r
+    # Create table File\r
+    #\r
+    # @param ID:        ID of a File\r
+    # @param Name:      Name of a File\r
+    # @param ExtName:   ExtName of a File\r
+    # @param Path:      Path of a File\r
+    # @param FullPath:  FullPath of a File\r
+    # @param Model:     Model of a File\r
+    #\r
+    def Create(self):\r
+        SqlCommand = """create table IF NOT EXISTS File(ID SINGLE PRIMARY KEY,\r
+                                                        Name VARCHAR NOT NULL,\r
+                                                        ExtName VARCHAR,\r
+                                                        Path VARCHAR,\r
+                                                        FullPath VARCHAR NOT NULL,\r
+                                                        Model INTEGER DEFAULT 0\r
+                                                       )"""\r
+        self.Cur.execute(SqlCommand)\r
+        EdkLogger.verbose("Create table File ... DONE!")\r
+\r
+    ## Insert table\r
+    #\r
+    # Insert a record into table File\r
+    #\r
+    # @param ID:        ID of a File\r
+    # @param Name:      Name of a File\r
+    # @param ExtName:   ExtName of a File\r
+    # @param Path:      Path of a File\r
+    # @param FullPath:  FullPath of a File\r
+    # @param Model:     Model of a File\r
+    #\r
+    def Insert(self, ID, Name, ExtName, Path, FullPath, Model):\r
+        SqlCommand = """insert into File values(%s, '%s', '%s', '%s', '%s', %s)""" \\r
+                                             % (ID, Name, ExtName, Path, FullPath, Model)\r
+        self.Cur.execute(SqlCommand)\r
+        EdkLogger.verbose(SqlCommand + " ... DONE!")\r
+    \r
+    ## Query table\r
+    #\r
+    # Query all records of table File\r
+    #  \r
+    def Query(self):\r
+        EdkLogger.verbose("\nQuery tabel File started ...")\r
+        SqlCommand = """select * from File"""\r
+        self.Cur.execute(SqlCommand)\r
+        for Rs in self.Cur:\r
+            EdkLogger.verbose(Rs)\r
+        SqlCommand = """select count(*) as Count from File"""\r
+        self.Cur.execute(SqlCommand)\r
+        for Item in self.Cur:\r
+            EdkLogger.verbose("***Total %s records in table File***" % Item)\r
+        EdkLogger.verbose("Query tabel File DONE!")\r
+\r
+    ## Drop a table\r
+    #\r
+    # Drop the table File\r
+    #\r
+    def Drop(self):\r
+        SqlCommand = """drop table IF EXISTS File"""\r
+        self.Cur.execute(SqlCommand)\r
+        EdkLogger.verbose("Drop tabel File ... DONE!")\r
+\r
diff --git a/Source/Python/Ecc/TableFunction.py b/Source/Python/Ecc/TableFunction.py
new file mode 100644 (file)
index 0000000..135ac64
--- /dev/null
@@ -0,0 +1,104 @@
+## @file\r
+# This file is used to create/update/query/erase table for functions\r
+#\r
+# Copyright (c) 2007, 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
+import Common.EdkLogger as EdkLogger\r
+\r
+## TableFunction\r
+#\r
+# This class defined a table used for function\r
+# \r
+# @param object:       Inherited from object class\r
+#\r
+class TableFunction(object):\r
+    def __init__(self, Cursor):\r
+        self.Cur = Cursor\r
+    \r
+    ## Create table\r
+    #\r
+    # Create table Function\r
+    #\r
+    # @param ID:               ID of a Function\r
+    # @param Header:           Header of a Function\r
+    # @param Modifier:         Modifier of a Function \r
+    # @param Name:             Name of a Function\r
+    # @param ReturnStatement:  ReturnStatement of a Funciont\r
+    # @param StartLine:        StartLine of a Function\r
+    # @param StartColumn:      StartColumn of a Function\r
+    # @param EndLine:          EndLine of a Function\r
+    # @param EndColumn:        EndColumn of a Function\r
+    # @param BelongsToFile:    The Function belongs to which file\r
+    #\r
+    def Create(self):\r
+        SqlCommand = """create table IF NOT EXISTS Function(ID SINGLE PRIMARY KEY,\r
+                                                            Header TEXT,\r
+                                                            Modifier VARCHAR,\r
+                                                            Name VARCHAR NOT NULL,\r
+                                                            ReturnStatement VARCHAR,\r
+                                                            StartLine INTEGER NOT NULL,\r
+                                                            StartColumn INTEGER NOT NULL,\r
+                                                            EndLine INTEGER NOT NULL,\r
+                                                            EndColumn INTEGER NOT NULL,\r
+                                                            BelongsToFile SINGLE NOT NULL\r
+                                                           )"""\r
+        self.Cur.execute(SqlCommand)\r
+        EdkLogger.verbose("Create table Function ... DONE!")\r
+\r
+    ## Insert table\r
+    #\r
+    # Insert a record into table Function\r
+    #\r
+    # @param ID:               ID of a Function\r
+    # @param Header:           Header of a Function\r
+    # @param Modifier:         Modifier of a Function \r
+    # @param Name:             Name of a Function\r
+    # @param ReturnStatement:  ReturnStatement of a Funciont\r
+    # @param StartLine:        StartLine of a Function\r
+    # @param StartColumn:      StartColumn of a Function\r
+    # @param EndLine:          EndLine of a Function\r
+    # @param EndColumn:        EndColumn of a Function\r
+    # @param BelongsToFile:    The Function belongs to which file\r
+    #\r
+    def Insert(self, ID, Header, Modifier, Name, ReturnStatement, StartLine, StartColumn, EndLine, EndColumn, BelongsToFile):\r
+        SqlCommand = """insert into Function values(%s, '%s', '%s', '%s', '%s', %s, %s, %s, %s, %s)""" \\r
+                                                 % (ID, Header, Modifier, Name, ReturnStatement, StartLine, StartColumn, EndLine, EndColumn, BelongsToFile)\r
+        self.Cur.execute(SqlCommand)\r
+        EdkLogger.verbose(SqlCommand + " ... DONE!")\r
+    \r
+    ## Query table\r
+    #\r
+    # Query all records of table Function\r
+    #  \r
+    def Query(self):\r
+        EdkLogger.verbose("\nQuery tabel Function started ...")\r
+        SqlCommand = """select * from Function"""\r
+        self.Cur.execute(SqlCommand)\r
+        for Rs in self.Cur:\r
+            EdkLogger.verbose(Rs)\r
+        SqlCommand = """select count(*) as Count from Function"""\r
+        self.Cur.execute(SqlCommand)\r
+        for Item in self.Cur:\r
+            EdkLogger.verbose("***Total %s records in table Function***" % Item)\r
+        EdkLogger.verbose("Query tabel Function DONE!")\r
+\r
+    ## Drop a table\r
+    #\r
+    # Drop the table Function\r
+    #\r
+    def Drop(self):\r
+        SqlCommand = """drop table IF EXISTS Function"""\r
+        self.Cur.execute(SqlCommand)\r
+        EdkLogger.verbose("Drop tabel Function ... DONE!")\r
+\r
diff --git a/Source/Python/Ecc/TablePcd.py b/Source/Python/Ecc/TablePcd.py
new file mode 100644 (file)
index 0000000..1cd24b7
--- /dev/null
@@ -0,0 +1,111 @@
+## @file\r
+# This file is used to create/update/query/erase table for pcds\r
+#\r
+# Copyright (c) 2007, 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
+import Common.EdkLogger as EdkLogger\r
+\r
+## TablePcd\r
+#\r
+# This class defined a table used for pcds\r
+# \r
+# @param object:       Inherited from object class\r
+#\r
+#\r
+class TablePcd(object):\r
+    def __init__(self, Cursor):\r
+        self.Cur = Cursor\r
+    \r
+    ## Create table\r
+    #\r
+    # Create table Pcd\r
+    #\r
+    # @param ID:                   ID of a Pcd\r
+    # @param CName:                CName of a Pcd\r
+    # @param TokenSpaceGuidCName:  TokenSpaceGuidCName of a Pcd\r
+    # @param Token:                Token of a Pcd\r
+    # @param DatumType:            DatumType of a Pcd\r
+    # @param Model:                Model of a Pcd\r
+    # @param BelongsToFile:        The Pcd belongs to which file\r
+    # @param BelongsToFunction:    The Pcd belongs to which function\r
+    # @param StartLine:            StartLine of a Pcd\r
+    # @param StartColumn:          StartColumn of a Pcd\r
+    # @param EndLine:              EndLine of a Pcd\r
+    # @param EndColumn:            EndColumn of a Pcd\r
+    #\r
+    def Create(self):\r
+        SqlCommand = """create table IF NOT EXISTS Pcd(ID SINGLE PRIMARY KEY,\r
+                                                       CName VARCHAR NOT NULL,\r
+                                                       TokenSpaceGuidCName VARCHAR NOT NULL,\r
+                                                       Token INTEGER,\r
+                                                       DatumType VARCHAR,\r
+                                                       Model INTEGER NOT NULL,\r
+                                                       BelongsToFile SINGLE NOT NULL,\r
+                                                       BelongsToFunction SINGLE DEFAULT -1,\r
+                                                       StartLine INTEGER NOT NULL,\r
+                                                       StartColumn INTEGER NOT NULL,\r
+                                                       EndLine INTEGER NOT NULL,\r
+                                                       EndColumn INTEGER NOT NULL\r
+                                                      )"""\r
+        self.Cur.execute(SqlCommand)\r
+        EdkLogger.verbose("Create table Pcd ... DONE!")\r
+\r
+    ## Insert table\r
+    #\r
+    # Insert a record into table Pcd\r
+    #\r
+    # @param ID:                   ID of a Pcd\r
+    # @param CName:                CName of a Pcd\r
+    # @param TokenSpaceGuidCName:  TokenSpaceGuidCName of a Pcd\r
+    # @param Token:                Token of a Pcd\r
+    # @param DatumType:            DatumType of a Pcd\r
+    # @param Model:                Model of a Pcd\r
+    # @param BelongsToFile:        The Pcd belongs to which file\r
+    # @param BelongsToFunction:    The Pcd belongs to which function\r
+    # @param StartLine:            StartLine of a Pcd\r
+    # @param StartColumn:          StartColumn of a Pcd\r
+    # @param EndLine:              EndLine of a Pcd\r
+    # @param EndColumn:            EndColumn of a Pcd\r
+    #\r
+    def Insert(self, ID, CName, TokenSpaceGuidCName, Token, DatumType, Model, BelongsToFile, BelongsToFunction, StartLine, StartColumn, EndLine, EndColumn):\r
+        SqlCommand = """insert into Pcd values(%s, '%s', '%s', %s, '%s', %s, %s, %s, %s, %s, %s, %s)""" \\r
+                                            % (ID, CName, TokenSpaceGuidCName, Token, DatumType, Model, BelongsToFile, BelongsToFunction, StartLine, StartColumn, EndLine, EndColumn)\r
+        self.Cur.execute(SqlCommand)\r
+        EdkLogger.verbose(SqlCommand + " ... DONE!")\r
+    \r
+    ## Query table\r
+    #\r
+    # Query all records of table Pcd\r
+    #  \r
+    def Query(self):\r
+        EdkLogger.verbose("\nQuery tabel Pcd started ...")\r
+        SqlCommand = """select * from Pcd"""\r
+        self.Cur.execute(SqlCommand)\r
+        for Rs in self.Cur:\r
+            EdkLogger.verbose(Rs)\r
+        SqlCommand = """select count(*) as Count from Pcd"""\r
+        self.Cur.execute(SqlCommand)\r
+        for Item in self.Cur:\r
+            EdkLogger.verbose("***Total %s records in table Pcd***" % Item)\r
+        EdkLogger.verbose("Query tabel Pcd DONE!")\r
+\r
+    ## Drop a table\r
+    #\r
+    # Drop the table Pcd\r
+    #\r
+    def Drop(self):\r
+        SqlCommand = """drop table IF EXISTS Pcd"""\r
+        self.Cur.execute(SqlCommand)\r
+        EdkLogger.verbose("Drop tabel Pcd ... DONE!")\r
+\r
diff --git a/Source/Python/Ecc/TableVariable.py b/Source/Python/Ecc/TableVariable.py
new file mode 100644 (file)
index 0000000..0593c17
--- /dev/null
@@ -0,0 +1,111 @@
+## @file\r
+# This file is used to create/update/query/erase table for variables\r
+#\r
+# Copyright (c) 2007, 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
+import Common.EdkLogger as EdkLogger\r
+\r
+## TableVariable\r
+#\r
+# This class defined a table used for variable\r
+# \r
+# @param object:       Inherited from object class\r
+#\r
+#\r
+class TableVariable(object):\r
+    def __init__(self, Cursor):\r
+        self.Cur = Cursor\r
+    \r
+    ## Create table\r
+    #\r
+    # Create table Variable\r
+    #\r
+    # @param ID:                 ID of a Variable\r
+    # @param Modifier:           Modifier of a Variable\r
+    # @param Type:               Type of a Variable\r
+    # @param Name:               Name of a Variable\r
+    # @param Value:              Value of a Variable\r
+    # @param Model:              Model of a Variable\r
+    # @param BelongsToFile:      The Variable belongs to which file\r
+    # @param BelongsToFunction:  The Variable belongs to which function\r
+    # @param StartLine:          StartLine of a Variable\r
+    # @param StartColumn:        StartColumn of a Variable\r
+    # @param EndLine:            EndLine of a Variable\r
+    # @param EndColumn:          EndColumn of a Variable\r
+    #\r
+    def Create(self):\r
+        SqlCommand = """create table IF NOT EXISTS Variable(ID SINGLE PRIMARY KEY,\r
+                                                            Modifier VARCHAR,\r
+                                                            Type VARCHAR,\r
+                                                            Name VARCHAR NOT NULL,\r
+                                                            Value VARCHAR NOT NULL,\r
+                                                            Model INTEGER NOT NULL,\r
+                                                            BelongsToFile SINGLE NOT NULL,\r
+                                                            BelongsToFunction SINGLE DEFAULT -1,\r
+                                                            StartLine INTEGER NOT NULL,\r
+                                                            StartColumn INTEGER NOT NULL,\r
+                                                            EndLine INTEGER NOT NULL,\r
+                                                            EndColumn INTEGER NOT NULL\r
+                                                           )"""\r
+        self.Cur.execute(SqlCommand)\r
+        EdkLogger.verbose("Create table Variable ... DONE!")\r
+\r
+    ## Insert table\r
+    #\r
+    # Insert a record into table Variable\r
+    #\r
+    # @param ID:                 ID of a Variable\r
+    # @param Modifier:           Modifier of a Variable\r
+    # @param Type:               Type of a Variable\r
+    # @param Name:               Name of a Variable\r
+    # @param Value:              Value of a Variable\r
+    # @param Model:              Model of a Variable\r
+    # @param BelongsToFile:      The Variable belongs to which file\r
+    # @param BelongsToFunction:  The Variable belongs to which function\r
+    # @param StartLine:          StartLine of a Variable\r
+    # @param StartColumn:        StartColumn of a Variable\r
+    # @param EndLine:            EndLine of a Variable\r
+    # @param EndColumn:          EndColumn of a Variable\r
+    #\r
+    def Insert(self, ID, Modifier, Type, Name, Value, Model, BelongsToFile, BelongsToFunction, StartLine, StartColumn, EndLine, EndColumn):\r
+        SqlCommand = """insert into Variable values(%s, '%s', '%s', '%s', '%s', %s, %s, %s, %s, %s, %s, %s)""" \\r
+                                                 % (ID, Modifier, Type, Name, Value, Model, BelongsToFile, BelongsToFunction, StartLine, StartColumn, EndLine, EndColumn)\r
+        self.Cur.execute(SqlCommand)\r
+        EdkLogger.verbose(SqlCommand + " ... DONE!")\r
+    \r
+    ## Query table\r
+    #\r
+    # Query all records of table Variable\r
+    #  \r
+    def Query(self):\r
+        EdkLogger.verbose("\nQuery tabel Variable started ...")\r
+        SqlCommand = """select * from Variable"""\r
+        self.Cur.execute(SqlCommand)\r
+        for Rs in self.Cur:\r
+            EdkLogger.verbose(Rs)\r
+        SqlCommand = """select count(*) as Count from Variable"""\r
+        self.Cur.execute(SqlCommand)\r
+        for Item in self.Cur:\r
+            EdkLogger.verbose("***Total %s records in table Variable***" % Item)\r
+        EdkLogger.verbose("Query tabel Variable DONE!")\r
+\r
+    ## Drop a table\r
+    #\r
+    # Drop the table Variable\r
+    #\r
+    def Drop(self):\r
+        SqlCommand = """drop table IF EXISTS Variable"""\r
+        self.Cur.execute(SqlCommand)\r
+        EdkLogger.verbose("Drop tabel Variable ... DONE!")\r
+\r