diff options
author | lhauch <lhauch@6f19259b-4bc3-4df7-8a09-765794883524> | 2008-12-31 16:26:40 +0000 |
---|---|---|
committer | lhauch <lhauch@6f19259b-4bc3-4df7-8a09-765794883524> | 2008-12-31 16:26:40 +0000 |
commit | 808def96aa4589fba9c2d0ea55837754a3b7a4f7 (patch) | |
tree | 0ea221c59abb2474c694e7ab5bd61006be77e47e /Tools/CCode/Source/GenDepex/DepexParser.c | |
parent | 9216450d1143056a50a5f916984a2d7faf590488 (diff) | |
download | edk2-platforms-808def96aa4589fba9c2d0ea55837754a3b7a4f7.tar.xz |
Retiring the ANT/JAVA build and removing the older EDK II packages that required ANT/JAVA.
Last Ant/Java build was r7166
Developers requiring the Java/Ant packages should checkout the branch from:
https://edk2.tianocore.org/svn/edk2/branches/AntJava
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7168 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'Tools/CCode/Source/GenDepex/DepexParser.c')
-rw-r--r-- | Tools/CCode/Source/GenDepex/DepexParser.c | 903 |
1 files changed, 0 insertions, 903 deletions
diff --git a/Tools/CCode/Source/GenDepex/DepexParser.c b/Tools/CCode/Source/GenDepex/DepexParser.c deleted file mode 100644 index 9f0a0cbbab..0000000000 --- a/Tools/CCode/Source/GenDepex/DepexParser.c +++ /dev/null @@ -1,903 +0,0 @@ -/*++
-
-Copyright (c) 2004, Intel Corporation
-All rights reserved. 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.
-
-Module Name:
-
- DepexParser.c
-
-Abstract:
-
- Validate Dependency Expression syntax
- recursive descent Algorithm
-
- The original BNF grammar(taken from "Pre EFI Initialization Core Interface Specification
- draft review 0.9") is thus:
- <depex> ::= BEFORE <guid> END
- | AFTER <guid> END
- | SOR <bool> END
- | <bool> END
- <bool> ::= <bool> AND <term>
- | <bool> OR <term>
- | <term>
- <term> ::= NOT <factor>
- | <factor>
- <factor> ::= <bool>
- | TRUE
- | FALSE
- | GUID
-
- <guid> ::= '{' <hex32> ',' <hex16> ',' <hex16> ','
- <hex8> ',' <hex8> ',' <hex8> ',' <hex8> ','
- <hex8> ',' <hex8> ',' <hex8> ',' <hex8> '}'
- <hex32> ::= <hexprefix> <hexvalue>
- <hex16> ::= <hexprefix> <hexvalue>
- <hex8> ::= <hexprefix> <hexvalue>
- <hexprefix>::= '0' 'x'
- | '0' 'X'
- <hexvalue> ::= <hexdigit> <hexvalue>
- | <hexdigit>
- <hexdigit> ::= [0-9]
- | [a-f]
- | [A-F]
-
- After cleaning left recursive and parentheses supported, the BNF grammar used in this module is thus:
- <depex> ::= BEFORE <guid>
- | AFTER <guid>
- | SOR <bool>
- | <bool>
- <bool> ::= <term><rightbool>
- <rightbool>::= AND <term><rightbool>
- | OR <term><rightbool>
- | ''
- <term> ::= NOT <factor>
- | <factor>
- <factor> ::= '('<bool>')'<rightfactor>
- | NOT <factor> <rightbool> <rightfactor>
- | TRUE <rightfactor>
- | FALSE <rightfactor>
- | END <rightfactor>
- | <guid> <rightfactor>
- <rightfactor> ::=AND <term><rightbool> <rightfactor>
- | OR <term><rightbool> <rightfactor>
- | ''
- <guid> ::= '{' <hex32> ',' <hex16> ',' <hex16> ','
- <hex8> ',' <hex8> ',' <hex8> ',' <hex8> ','
- <hex8> ',' <hex8> ',' <hex8> ',' <hex8> '}'
- <hex32> ::= <hexprefix> <hexvalue>
- <hex16> ::= <hexprefix> <hexvalue>
- <hex8> ::= <hexprefix> <hexvalue>
- <hexprefix>::= '0' 'x'
- | '0' 'X'
- <hexvalue> ::= <hexdigit> <hexvalue>
- | <hexdigit>
- <hexdigit> ::= [0-9]
- | [a-f]
- | [A-F]
-
- Note: 1. There's no precedence in operators except parentheses;
- 2. For hex32, less and equal than 8 bits is valid, more than 8 bits is invalid.
- Same constraint for hex16 is 4, hex8 is 2. All hex should contains at least 1 bit.
- 3. "<factor> ::= '('<bool>')'<rightfactor>" is added to support parentheses;
- 4. "<factor> ::= GUID" is changed to "<factor> ::= <guid>";
- 5. "DEPENDENCY_END" is the terminal of the expression. But it has been filtered by caller.
- During parsing, "DEPENDENCY_END" will be treated as illegal factor;
-
- This code should build in any environment that supports a standard C-library w/ string
- operations and File I/O services.
-
- As an example of usage, consider the following:
-
- The input string could be something like:
-
- NOT ({ 0xce345171, 0xba0b, 0x11d2, 0x8e, 0x4f, 0x0, 0xa0, 0xc9, 0x69, 0x72,
- 0x3b } AND { 0x964e5b22, 0x6459, 0x11d2, 0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69,
- 0x72, 0x3b }) OR { 0x03c4e603, 0xac28, 0x11d3, 0x9a, 0x2d, 0x00, 0x90, 0x27,
- 0x3f, 0xc1, 0x4d } AND
-
- It's invalid for an extra "AND" in the end.
-
- Complies with Tiano C Coding Standards Document, version 0.33, 16 Aug 2001.
-
---*/
-
-#include "DepexParser.h"
-
-BOOLEAN
-ParseBool (
- IN INT8 *Pbegin,
- IN UINT32 length,
- IN OUT INT8 **Pindex
- );
-
-BOOLEAN
-ParseTerm (
- IN INT8 *Pbegin,
- IN UINT32 length,
- IN OUT INT8 **Pindex
- );
-
-BOOLEAN
-ParseRightBool (
- IN INT8 *Pbegin,
- IN UINT32 length,
- IN OUT INT8 **Pindex
- );
-
-BOOLEAN
-ParseFactor (
- IN INT8 *Pbegin,
- IN UINT32 length,
- IN OUT INT8 **Pindex
- );
-
-VOID
-LeftTrim (
- IN INT8 *Pbegin,
- IN UINT32 length,
- IN OUT INT8 **Pindex
- )
-/*++
-
-Routine Description:
-
- Left trim the space, '\n' and '\r' character in string.
- The space at the end does not need trim.
-
-
-Arguments:
-
- Pbegin The pointer to the string
- length length of the string
- Pindex The pointer of pointer to the next parse character in the string
-
-Returns:
-
- None
-
-
---*/
-{
- while
- (
- ((*Pindex) < (Pbegin + length)) &&
- ((strncmp (*Pindex, " ", 1) == 0) || (strncmp (*Pindex, "\n", 1) == 0) || (strncmp (*Pindex, "\r", 1) == 0))
- ) {
- (*Pindex)++;
- }
-}
-
-BOOLEAN
-ParseHexdigit (
- IN INT8 *Pbegin,
- IN UINT32 length,
- IN OUT INT8 **Pindex
- )
-/*++
-
-Routine Description:
-
- Parse Hex bit in dependency expression.
-
-Arguments:
-
- Pbegin The pointer to the string
- length Length of the string
- Pindex The pointer of pointer to the next parse character in the string
-
-Returns:
-
- BOOLEAN If parses a valid hex bit, return TRUE, otherwise FALSE
-
-
---*/
-{
- //
- // <hexdigit> ::= [0-9] | [a-f] | [A-F]
- //
- if (((**Pindex) >= '0' && (**Pindex) <= '9') ||
- ((**Pindex) >= 'a' && (**Pindex) <= 'f') ||
- ((**Pindex) >= 'A' && (**Pindex) <= 'F')
- ) {
- (*Pindex)++;
- return TRUE;
- } else {
- return FALSE;
- }
-}
-
-BOOLEAN
-ParseHex32 (
- IN INT8 *Pbegin,
- IN UINT32 length,
- IN OUT INT8 **Pindex
- )
-/*++
-
-Routine Description:
-
- Parse Hex32 in dependency expression.
-
-Arguments:
-
- Pbegin The pointer to the string
- length Length of the string
- Pindex The pointer of point to the next parse character in the string
-
-Returns:
-
- BOOLEAN If parses a valid hex32, return TRUE, otherwise FALSE
-
-
---*/
-{
- INT32 Index;
- INT8 *Pin;
-
- Index = 0;
- Pin = *Pindex;
- LeftTrim (Pbegin, length, Pindex);
-
- if ((strncmp (*Pindex, "0x", 2) != 0) && (strncmp (*Pindex, "0X", 2) != 0)) {
- return FALSE;
- }
- (*Pindex) += 2;
-
- while (ParseHexdigit (Pbegin, length, Pindex)) {
- Index++;
- }
-
- if (Index > 0 && Index <= 8) {
- return TRUE;
- } else {
- *Pindex = Pin;
- return FALSE;
- }
-}
-
-BOOLEAN
-ParseHex16 (
- IN INT8 *Pbegin,
- IN UINT32 length,
- IN OUT INT8 **Pindex
- )
-/*++
-
-Routine Description:
-
- Parse Hex16 in dependency expression.
-
-Arguments:
-
- Pbegin The pointer to the string
- length Length of the string
- Pindex The pointer of pointer to the next parse character in the string
-
-Returns:
-
- BOOLEAN If parses a valid hex16, return TRUE, otherwise FALSE
-
-
---*/
-{
- int Index;
- INT8 *Pin;
-
- Index = 0;
- Pin = *Pindex;
- LeftTrim (Pbegin, length, Pindex);
-
- if ((strncmp (*Pindex, "0x", 2) != 0) && (strncmp (*Pindex, "0X", 2) != 0)) {
- return FALSE;
- }
- (*Pindex) += 2;
-
- while (ParseHexdigit (Pbegin, length, Pindex)) {
- Index++;
- }
-
- if (Index > 0 && Index <= 4) {
- return TRUE;
- } else {
- *Pindex = Pin;
- return FALSE;
- }
-}
-
-BOOLEAN
-ParseHex8 (
- IN INT8 *Pbegin,
- IN UINT32 length,
- IN OUT INT8 **Pindex
- )
-/*++
-
-Routine Description:
-
- Parse Hex8 in dependency expression.
-
-Arguments:
-
- Pbegin The pointer to the string
- length Length of the string
- Pindex The pointer of pointer to the next parse character in the string
-
-Returns:
-
- BOOLEAN If parses a valid hex8, return TRUE, otherwise FALSE
-
-
---*/
-{
- int Index;
- INT8 *Pin;
-
- Index = 0;
- Pin = *Pindex;
- LeftTrim (Pbegin, length, Pindex);
-
- if ((strncmp (*Pindex, "0x", 2) != 0) && (strncmp (*Pindex, "0X", 2) != 0)) {
- return FALSE;
- }
- (*Pindex) += 2;
-
- while (ParseHexdigit (Pbegin, length, Pindex)) {
- Index++;
- }
-
- if (Index > 0 && Index <= 2) {
- return TRUE;
- } else {
- *Pindex = Pin;
- return FALSE;
- }
-}
-
-BOOLEAN
-ParseGuid (
- IN INT8 *Pbegin,
- IN UINT32 length,
- IN OUT INT8 **Pindex
- )
-/*++
-
-Routine Description:
-
- Parse guid in dependency expression.
- There can be any number of spaces between '{' and hexword, ',' and hexword,
- hexword and ',', hexword and '}'. The hexword include hex32, hex16 and hex8.
-
-Arguments:
-
- Pbegin The pointer to the string
- length length of the string
- Pindex The pointer of pointer to the next parse character in the string
-
-Returns:
-
- BOOLEAN If parses a valid guid, return TRUE, otherwise FALSE
-
-
---*/
-{
- INT32 Index;
- INT8 *Pin;
- Pin = *Pindex;
- LeftTrim (Pbegin, length, Pindex);
- if (strncmp (*Pindex, "{", 1) != 0) {
- return FALSE;
- }
- (*Pindex)++;
-
- LeftTrim (Pbegin, length, Pindex);
- if (!ParseHex32 (Pbegin, length, Pindex)) {
- *Pindex = Pin;
- return FALSE;
- }
-
- LeftTrim (Pbegin, length, Pindex);
- if (strncmp (*Pindex, ",", 1) != 0) {
- return FALSE;
- } else {
- (*Pindex)++;
- }
-
- for (Index = 0; Index < 2; Index++) {
- LeftTrim (Pbegin, length, Pindex);
- if (!ParseHex16 (Pbegin, length, Pindex)) {
- *Pindex = Pin;
- return FALSE;
- }
-
- LeftTrim (Pbegin, length, Pindex);
- if (strncmp (*Pindex, ",", 1) != 0) {
- return FALSE;
- } else {
- (*Pindex)++;
- }
- }
-
- LeftTrim (Pbegin, length, Pindex);
- if (strncmp (*Pindex, "{", 1) != 0) {
- return FALSE;
- }
- (*Pindex)++;
-
- for (Index = 0; Index < 7; Index++) {
- LeftTrim (Pbegin, length, Pindex);
- if (!ParseHex8 (Pbegin, length, Pindex)) {
- *Pindex = Pin;
- return FALSE;
- }
-
- LeftTrim (Pbegin, length, Pindex);
- if (strncmp (*Pindex, ",", 1) != 0) {
- return FALSE;
- } else {
- (*Pindex)++;
- }
- }
-
- LeftTrim (Pbegin, length, Pindex);
- if (!ParseHex8 (Pbegin, length, Pindex)) {
- *Pindex = Pin;
- return FALSE;
- }
-
- LeftTrim (Pbegin, length, Pindex);
- if (strncmp (*Pindex, "}", 1) != 0) {
- return FALSE;
- } else {
- (*Pindex)++;
- }
-
- LeftTrim (Pbegin, length, Pindex);
- if (strncmp (*Pindex, "}", 1) != 0) {
- return FALSE;
- } else {
- (*Pindex)++;
- }
-
- return TRUE;
-}
-
-BOOLEAN
-ParseRightFactor (
- IN INT8 *Pbegin,
- IN UINT32 length,
- IN OUT INT8 **Pindex
- )
-/*++
-
-Routine Description:
-
- Parse rightfactor in bool expression.
-
-Arguments:
-
- Pbegin The pointer to the string
- length length of the string
- Pindex The pointer of pointer to the next parse character in the string
-
-Returns:
-
- BOOLEAN If string is a valid rightfactor expression, return TRUE, otherwise FALSE
-
-
---*/
-{
- INT8 *Pin;
-
- Pin = *Pindex;
- LeftTrim (Pbegin, length, Pindex);
-
- //
- // <rightfactor> ::=AND <term> <rightbool> <rightfactor>
- //
- if (strncmp (*Pindex, OPERATOR_AND, strlen (OPERATOR_AND)) == 0) {
- *Pindex += strlen (OPERATOR_AND);
- LeftTrim (Pbegin, length, Pindex);
-
- if (ParseTerm (Pbegin, length, Pindex)) {
- LeftTrim (Pbegin, length, Pindex);
-
- if (ParseRightBool (Pbegin, length, Pindex)) {
- LeftTrim (Pbegin, length, Pindex);
- if (ParseRightFactor (Pbegin, length, Pindex)) {
- return TRUE;
- } else {
- *Pindex = Pin;
- }
- } else {
- *Pindex = Pin;
- }
- } else {
- *Pindex = Pin;
- }
- }
- //
- // <rightfactor> ::=OR <term> <rightbool> <rightfactor>
- //
- if (strncmp (*Pindex, OPERATOR_OR, strlen (OPERATOR_OR)) == 0) {
- *Pindex += strlen (OPERATOR_OR);
- LeftTrim (Pbegin, length, Pindex);
-
- if (ParseTerm (Pbegin, length, Pindex)) {
- LeftTrim (Pbegin, length, Pindex);
-
- if (ParseRightBool (Pbegin, length, Pindex)) {
- LeftTrim (Pbegin, length, Pindex);
- if (ParseRightFactor (Pbegin, length, Pindex)) {
- return TRUE;
- } else {
- *Pindex = Pin;
- }
- } else {
- *Pindex = Pin;
- }
- } else {
- *Pindex = Pin;
- }
- }
- //
- // <rightfactor> ::= ''
- //
- *Pindex = Pin;
- return TRUE;
-}
-
-BOOLEAN
-ParseRightBool (
- IN INT8 *Pbegin,
- IN UINT32 length,
- IN OUT INT8 **Pindex
- )
-/*++
-
-Routine Description:
-
- Parse rightbool in bool expression.
-
-Arguments:
-
- Pbegin The pointer to the string
- length length of the string
- Pindex The pointer of pointer to the next parse character in the string
-
-Returns:
-
- BOOLEAN If string is a valid rightbool expression, return TRUE, otherwise FALSE
-
-
---*/
-{
- INT8 *Pin;
-
- Pin = *Pindex;
- LeftTrim (Pbegin, length, Pindex);
-
- //
- // <rightbool>::= AND <term><rightbool>
- //
- if (strncmp (*Pindex, OPERATOR_AND, strlen (OPERATOR_AND)) == 0) {
- *Pindex += strlen (OPERATOR_AND);
- LeftTrim (Pbegin, length, Pindex);
-
- if (ParseTerm (Pbegin, length, Pindex)) {
- LeftTrim (Pbegin, length, Pindex);
-
- if (ParseRightBool (Pbegin, length, Pindex)) {
- return TRUE;
- } else {
- *Pindex = Pin;
- }
- } else {
- *Pindex = Pin;
- }
- }
- //
- // <rightbool>::= OR <term><rightbool>
- //
- if (strncmp (*Pindex, OPERATOR_OR, strlen (OPERATOR_OR)) == 0) {
- *Pindex += strlen (OPERATOR_OR);
- LeftTrim (Pbegin, length, Pindex);
-
- if (ParseTerm (Pbegin, length, Pindex)) {
- LeftTrim (Pbegin, length, Pindex);
-
- if (ParseRightBool (Pbegin, length, Pindex)) {
- return TRUE;
- } else {
- *Pindex = Pin;
- }
- } else {
- *Pindex = Pin;
- }
- }
- //
- // <rightbool>::= ''
- //
- *Pindex = Pin;
- return TRUE;
-}
-
-BOOLEAN
-ParseFactor (
- IN INT8 *Pbegin,
- IN UINT32 length,
- IN OUT INT8 **Pindex
- )
-/*++
-
-Routine Description:
-
- Parse factor in bool expression.
-
-Arguments:
-
- Pbegin The pointer to the string
- length length of the string
- Pindex The pointer of pointer to the next parse character in the string
-
-Returns:
-
- BOOLEAN If string is a valid factor, return TRUE, otherwise FALSE
-
-
---*/
-{
- INT8 *Pin;
-
- Pin = *Pindex;
- LeftTrim (Pbegin, length, Pindex);
-
- //
- // <factor> ::= '('<bool>')'<rightfactor>
- //
- if (strncmp (*Pindex, OPERATOR_LEFT_PARENTHESIS, strlen (OPERATOR_LEFT_PARENTHESIS)) == 0) {
- *Pindex += strlen (OPERATOR_LEFT_PARENTHESIS);
- LeftTrim (Pbegin, length, Pindex);
-
- if (!ParseBool (Pbegin, length, Pindex)) {
- *Pindex = Pin;
- } else {
- LeftTrim (Pbegin, length, Pindex);
-
- if (strncmp (*Pindex, OPERATOR_RIGHT_PARENTHESIS, strlen (OPERATOR_RIGHT_PARENTHESIS)) == 0) {
- *Pindex += strlen (OPERATOR_RIGHT_PARENTHESIS);
- LeftTrim (Pbegin, length, Pindex);
-
- if (ParseRightFactor (Pbegin, length, Pindex)) {
- return TRUE;
- } else {
- *Pindex = Pin;
- }
- }
- }
- }
- //
- // <factor> ::= NOT <factor> <rightbool> <rightfactor>
- //
- if (strncmp (*Pindex, OPERATOR_NOT, strlen (OPERATOR_NOT)) == 0) {
- *Pindex += strlen (OPERATOR_NOT);
- LeftTrim (Pbegin, length, Pindex);
-
- if (ParseFactor (Pbegin, length, Pindex)) {
- LeftTrim (Pbegin, length, Pindex);
-
- if (ParseRightBool (Pbegin, length, Pindex)) {
- LeftTrim (Pbegin, length, Pindex);
-
- if (ParseRightFactor (Pbegin, length, Pindex)) {
- return TRUE;
- } else {
- *Pindex = Pin;
- }
- } else {
- *Pindex = Pin;
- }
- } else {
- *Pindex = Pin;
- }
- }
- //
- // <factor> ::= TRUE <rightfactor>
- //
- if (strncmp (*Pindex, OPERATOR_TRUE, strlen (OPERATOR_TRUE)) == 0) {
- *Pindex += strlen (OPERATOR_TRUE);
- LeftTrim (Pbegin, length, Pindex);
-
- if (ParseRightFactor (Pbegin, length, Pindex)) {
- return TRUE;
- } else {
- *Pindex = Pin;
- }
- }
- //
- // <factor> ::= FALSE <rightfactor>
- //
- if (strncmp (*Pindex, OPERATOR_FALSE, strlen (OPERATOR_FALSE)) == 0) {
- *Pindex += strlen (OPERATOR_FALSE);
- LeftTrim (Pbegin, length, Pindex);
-
- if (ParseRightFactor (Pbegin, length, Pindex)) {
- return TRUE;
- } else {
- *Pindex = Pin;
- }
- }
- //
- // <factor> ::= <guid> <rightfactor>
- //
- if (ParseGuid (Pbegin, length, Pindex)) {
- LeftTrim (Pbegin, length, Pindex);
-
- if (ParseRightFactor (Pbegin, length, Pindex)) {
- return TRUE;
- } else {
- *Pindex = Pin;
- return FALSE;
- }
- } else {
- *Pindex = Pin;
- return FALSE;
- }
-}
-
-BOOLEAN
-ParseTerm (
- IN INT8 *Pbegin,
- IN UINT32 length,
- IN OUT INT8 **Pindex
- )
-/*++
-
-Routine Description:
-
- Parse term in bool expression.
-
-Arguments:
-
- Pbegin The pointer to the string
- length length of the string
- Pindex The pointer of pointer to the next parse character in the string
-
-Returns:
-
- BOOLEAN If string is a valid term, return TRUE, otherwise FALSE
-
-
---*/
-{
- INT8 *Pin;
-
- Pin = *Pindex;
- LeftTrim (Pbegin, length, Pindex);
-
- //
- // <term> ::= NOT <factor>
- //
- if (strncmp (*Pindex, OPERATOR_NOT, strlen (OPERATOR_NOT)) == 0) {
- *Pindex += strlen (OPERATOR_NOT);
- LeftTrim (Pbegin, length, Pindex);
-
- if (!ParseFactor (Pbegin, length, Pindex)) {
- *Pindex = Pin;
- } else {
- return TRUE;
- }
- }
- //
- // <term> ::=<factor>
- //
- if (ParseFactor (Pbegin, length, Pindex)) {
- return TRUE;
- } else {
- *Pindex = Pin;
- return FALSE;
- }
-}
-
-BOOLEAN
-ParseBool (
- IN INT8 *Pbegin,
- IN UINT32 length,
- IN OUT INT8 **Pindex
- )
-/*++
-
-Routine Description:
-
- Parse bool expression.
-
-Arguments:
-
- Pbegin The pointer to the string
- length length of the string
- Pindex The pointer of pointer to the next parse character in the string
-
-Returns:
-
- BOOLEAN If string is a valid bool expression, return TRUE, otherwise FALSE
-
-
---*/
-{
- INT8 *Pin;
- Pin = *Pindex;
- LeftTrim (Pbegin, length, Pindex);
-
- if (ParseTerm (Pbegin, length, Pindex)) {
- LeftTrim (Pbegin, length, Pindex);
-
- if (!ParseRightBool (Pbegin, length, Pindex)) {
- *Pindex = Pin;
- return FALSE;
- } else {
- return TRUE;
- }
- } else {
- *Pindex = Pin;
- return FALSE;
- }
-}
-
-BOOLEAN
-ParseDepex (
- IN INT8 *Pbegin,
- IN UINT32 length
- )
-/*++
-
-Routine Description:
-
- Parse whole dependency expression.
-
-Arguments:
-
- Pbegin The pointer to the string
- length length of the string
-
-Returns:
-
- BOOLEAN If string is a valid dependency expression, return TRUE, otherwise FALSE
-
-
---*/
-{
- BOOLEAN Result;
- INT8 **Pindex;
- INT8 *temp;
-
- Result = FALSE;
- temp = Pbegin;
- Pindex = &temp;
-
- LeftTrim (Pbegin, length, Pindex);
- if (strncmp (*Pindex, OPERATOR_BEFORE, strlen (OPERATOR_BEFORE)) == 0) {
- (*Pindex) += strlen (OPERATOR_BEFORE);
- Result = ParseGuid (Pbegin, length, Pindex);
-
- } else if (strncmp (*Pindex, OPERATOR_AFTER, strlen (OPERATOR_AFTER)) == 0) {
- (*Pindex) += strlen (OPERATOR_AFTER);
- Result = ParseGuid (Pbegin, length, Pindex);
-
- } else if (strncmp (*Pindex, OPERATOR_SOR, strlen (OPERATOR_SOR)) == 0) {
- (*Pindex) += strlen (OPERATOR_SOR);
- Result = ParseBool (Pbegin, length, Pindex);
-
- } else {
- Result = ParseBool (Pbegin, length, Pindex);
-
- }
-
- LeftTrim (Pbegin, length, Pindex);
- return (BOOLEAN) (Result && (*Pindex) >= (Pbegin + length));
-}
|