Revision: 17338
          http://sourceforge.net/p/edk2/code/17338
Author:   ydong10
Date:     2015-05-06 10:38:04 +0000 (Wed, 06 May 2015)
Log Message:
-----------
BaseTools: Enable Match2 Opcode.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Eric Dong <eric.d...@intel.com>
Reviewed-by: Liming Gao <liming....@intel.com>
Reviewed-by: Samer El-Haj-Mahmoud <samer.el-haj-mahm...@hp.com>

Modified Paths:
--------------
    
trunk/edk2/BaseTools/Source/C/Include/Common/UefiInternalFormRepresentation.h
    trunk/edk2/BaseTools/Source/C/VfrCompile/VfrFormPkg.cpp
    trunk/edk2/BaseTools/Source/C/VfrCompile/VfrFormPkg.h
    trunk/edk2/BaseTools/Source/C/VfrCompile/VfrSyntax.g

Modified: 
trunk/edk2/BaseTools/Source/C/Include/Common/UefiInternalFormRepresentation.h
===================================================================
--- 
trunk/edk2/BaseTools/Source/C/Include/Common/UefiInternalFormRepresentation.h   
    2015-05-06 10:12:53 UTC (rev 17337)
+++ 
trunk/edk2/BaseTools/Source/C/Include/Common/UefiInternalFormRepresentation.h   
    2015-05-06 10:38:04 UTC (rev 17338)
@@ -690,6 +690,7 @@
 #define EFI_IFR_MODAL_TAG_OP           0x61
 #define EFI_IFR_REFRESH_ID_OP          0x62
 #define EFI_IFR_WARNING_IF_OP          0x63
+#define EFI_IFR_MATCH2_OP              0x64
 
 
 typedef struct _EFI_IFR_OP_HEADER {
@@ -1268,6 +1269,11 @@
   EFI_IFR_OP_HEADER        Header;
 } EFI_IFR_MATCH;
 
+typedef struct _EFI_IFR_MATCH2 {
+  EFI_IFR_OP_HEADER        Header;
+  EFI_GUID                 SyntaxType;
+} EFI_IFR_MATCH2;
+
 typedef struct _EFI_IFR_MULTIPLY {
   EFI_IFR_OP_HEADER        Header;
 } EFI_IFR_MULTIPLY;

Modified: trunk/edk2/BaseTools/Source/C/VfrCompile/VfrFormPkg.cpp
===================================================================
--- trunk/edk2/BaseTools/Source/C/VfrCompile/VfrFormPkg.cpp     2015-05-06 
10:12:53 UTC (rev 17337)
+++ trunk/edk2/BaseTools/Source/C/VfrCompile/VfrFormPkg.cpp     2015-05-06 
10:38:04 UTC (rev 17338)
@@ -1663,6 +1663,7 @@
   { sizeof (EFI_IFR_MODAL_TAG), 0},            // EFI_IFR_MODAL_TAG_OP - 0x61
   { sizeof (EFI_IFR_REFRESH_ID), 0},           // EFI_IFR_REFRESH_ID_OP - 0x62
   { sizeof (EFI_IFR_WARNING_IF), 1},           // EFI_IFR_WARNING_IF_OP - 0x63
+  { sizeof (EFI_IFR_MATCH2), 0 },              // EFI_IFR_MATCH2_OP - 0x64
 };
 
 #ifdef CIFROBJ_DEUBG
@@ -1685,7 +1686,7 @@
   "EFI_IFR_STRING_REF1","EFI_IFR_STRING_REF2",          "EFI_IFR_CONDITIONAL", 
  "EFI_IFR_QUESTION_REF3",   "EFI_IFR_ZERO",          "EFI_IFR_ONE",
   "EFI_IFR_ONES",       "EFI_IFR_UNDEFINED",            "EFI_IFR_LENGTH",      
  "EFI_IFR_DUP",             "EFI_IFR_THIS",          "EFI_IFR_SPAN",
   "EFI_IFR_VALUE",      "EFI_IFR_DEFAULT",              
"EFI_IFR_DEFAULTSTORE",  "EFI_IFR_FORM_MAP",        "EFI_IFR_CATENATE",      
"EFI_IFR_GUID",
-  "EFI_IFR_SECURITY",   "EFI_IFR_MODAL_TAG",            "EFI_IFR_REFRESH_ID",  
  "EFI_IFR_WARNING_IF",
+  "EFI_IFR_SECURITY",   "EFI_IFR_MODAL_TAG",            "EFI_IFR_REFRESH_ID",  
  "EFI_IFR_WARNING_IF",      "EFI_IFR_MATCH2",
 };
 
 VOID

Modified: trunk/edk2/BaseTools/Source/C/VfrCompile/VfrFormPkg.h
===================================================================
--- trunk/edk2/BaseTools/Source/C/VfrCompile/VfrFormPkg.h       2015-05-06 
10:12:53 UTC (rev 17337)
+++ trunk/edk2/BaseTools/Source/C/VfrCompile/VfrFormPkg.h       2015-05-06 
10:38:04 UTC (rev 17338)
@@ -2656,6 +2656,21 @@
   }
 };
 
+class CIfrMatch2 : public CIfrObj, public CIfrOpHeader {
+private:
+  EFI_IFR_MATCH2 *mMatch2;
+
+public:
+  CIfrMatch2 (
+  IN UINT32   LineNo,
+  IN EFI_GUID *Guid
+  ) : CIfrObj (EFI_IFR_MATCH2_OP, (CHAR8 **)&mMatch2),
+      CIfrOpHeader (EFI_IFR_MATCH2_OP, &mMatch2->Header) {
+    SetLineNo (LineNo);
+    memmove (&mMatch2->SyntaxType, Guid, sizeof (EFI_GUID));
+  }
+};
+
 class CIfrMultiply : public CIfrObj, public CIfrOpHeader {
 private:
   EFI_IFR_MULTIPLY *mMultiply;

Modified: trunk/edk2/BaseTools/Source/C/VfrCompile/VfrSyntax.g
===================================================================
--- trunk/edk2/BaseTools/Source/C/VfrCompile/VfrSyntax.g        2015-05-06 
10:12:53 UTC (rev 17337)
+++ trunk/edk2/BaseTools/Source/C/VfrCompile/VfrSyntax.g        2015-05-06 
10:38:04 UTC (rev 17338)
@@ -3401,6 +3401,7 @@
 #token ToUpper("toupper")                       "toupper"
 #token ToLower("tolower")                       "tolower"
 #token Match("match")                           "match"
+#token Match2("match2")                         "match2"
 #token Catenate("catenate")                     "catenate"
 #token QuestionRefVal("questionrefval")         "questionrefval"
 #token StringRefVal("stringrefval")             "stringrefval"
@@ -3569,6 +3570,7 @@
 atomTerm [UINT32 & RootLevel, UINT32 & ExpOpCount]:
     vfrExpressionCatenate[$RootLevel, $ExpOpCount]
   | vfrExpressionMatch[$RootLevel, $ExpOpCount]
+  | vfrExpressionMatch2[$RootLevel, $ExpOpCount]
   | vfrExpressionParen[$RootLevel, $ExpOpCount]
   | vfrExpressionBuildInFunction[$RootLevel, $ExpOpCount]
   | vfrExpressionConstant[$RootLevel, $ExpOpCount]
@@ -3599,6 +3601,20 @@
   "\)"                                                 << { CIfrMatch 
MObj(L->getLine()); $ExpOpCount++; } >>
   ;
 
+vfrExpressionMatch2 [UINT32 & RootLevel, UINT32 & ExpOpCount]:
+  <<
+    EFI_GUID      Guid;
+  >>
+  L:Match2
+  "\("
+  vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount]
+  ","
+  vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount]
+  ","
+  guidDefinition[Guid]
+  "\)"                                                 << { CIfrMatch2 
M2Obj(L->getLine(), &Guid); $ExpOpCount++; } >>
+  ;
+
 vfrExpressionParen [UINT32 & RootLevel, UINT32 & ExpOpCount]:
   "\("
   vfrStatementExpressionSub[$RootLevel + 1, $ExpOpCount]


------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud 
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
edk2-commits mailing list
edk2-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-commits

Reply via email to