Initial import.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
181
Tools/Source/TianoTools/VfrCompile/EfiVfr.h
Normal file
181
Tools/Source/TianoTools/VfrCompile/EfiVfr.h
Normal file
@@ -0,0 +1,181 @@
|
||||
/*++
|
||||
|
||||
Copyright (c) 2004 - 2005, 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:
|
||||
|
||||
EfiVfr.h
|
||||
|
||||
Abstract:
|
||||
|
||||
Defines and prototypes for the EFI internal forms representation
|
||||
setup protocol and drivers
|
||||
|
||||
--*/
|
||||
|
||||
#ifndef _EFI_VFR_H_
|
||||
#define _EFI_VFR_H_
|
||||
|
||||
#include <Base.h>
|
||||
#include <UefiBaseTypes.h>
|
||||
#include "InternalFormRepresentation.h"
|
||||
#include <string.h>
|
||||
|
||||
//
|
||||
// This number should be incremented with each change to the VFR compiler.
|
||||
// We write the version to the output list file for debug purposes.
|
||||
//
|
||||
#define VFR_COMPILER_VERSION "1.88"
|
||||
|
||||
//
|
||||
// Maximum file path for filenames
|
||||
//
|
||||
#ifndef MAX_PATH
|
||||
#define MAX_PATH 255
|
||||
#endif
|
||||
#define MAX_QUEUE_COUNT 255
|
||||
#define MAX_LINE_LEN 1024
|
||||
#define PROGRAM_NAME "VfrCompile"
|
||||
|
||||
//
|
||||
// We parse C-style structure definitions which can then be referenced
|
||||
// in VFR statements.
|
||||
// We need to define an internal structure that can be used to
|
||||
// track the fields in a structure definition, and another structure
|
||||
// to keep track of the structure name and subfields.
|
||||
//
|
||||
typedef struct _STRUCT_FIELD_DEFINITION {
|
||||
struct _STRUCT_FIELD_DEFINITION *Next;
|
||||
int DataSize;
|
||||
int Offset; // from the start of the structure
|
||||
int ArrayLength;
|
||||
char IsArray;
|
||||
char *Name;
|
||||
} STRUCT_FIELD_DEFINITION;
|
||||
|
||||
typedef struct _STRUCT_DEFINITION {
|
||||
struct _STRUCT_DEFINITION *Next;
|
||||
int Size;
|
||||
int LineNum; // line number where the structure was defined
|
||||
int IsNonNV; // if this is the non-NV data structure definition
|
||||
int Referenced; // if it's referenced anywhere in the VFR
|
||||
int VarStoreIdValid; // found a 'varstore' statement for it in the VFR
|
||||
unsigned short VarStoreId; // key from a varstore IFR statement
|
||||
int VarStoreLineNum; // line number where VARSTORE was defined
|
||||
char *Name;
|
||||
STRUCT_FIELD_DEFINITION *Field;
|
||||
STRUCT_FIELD_DEFINITION *LastField;
|
||||
} STRUCT_DEFINITION;
|
||||
|
||||
//
|
||||
// For the IdEqValList variable list of UINT16's, keep track of them using
|
||||
// a linked list until we know how many there are.
|
||||
// We also use a linked list of these to keep track of labels used in
|
||||
// the VFR script so we can catch duplicates.
|
||||
// We'll also use it to keep track of defined varstore id's so we can
|
||||
// detect duplicate definitions.
|
||||
//
|
||||
typedef struct _UINT16_LIST {
|
||||
struct _UINT16_LIST *Next;
|
||||
UINT16 Value;
|
||||
UINT32 LineNum;
|
||||
} UINT16_LIST;
|
||||
|
||||
typedef struct _GOTO_REFERENCE {
|
||||
struct _GOTO_REFERENCE *Next;
|
||||
UINT32 RefLineNum; // line number of source file where referenced
|
||||
UINT16 Value;
|
||||
} GOTO_REFERENCE;
|
||||
|
||||
typedef struct _FORM_ID_VALUE {
|
||||
struct _FORM_ID_VALUE *Next;
|
||||
UINT32 LineNum;
|
||||
UINT16 Value;
|
||||
} FORM_ID_VALUE;
|
||||
|
||||
//
|
||||
// We keep track in the parser of all "#line 4 "x.y"" strings so we
|
||||
// can cross-reference the line numbers in the preprocessor output .i file
|
||||
// to the original input files.
|
||||
//
|
||||
typedef struct _PARSER_LINE_DEFINITION {
|
||||
struct _PARSER_LINE_DEFINITION *Next;
|
||||
UINT32 HashLineNum; // from the #line stmt
|
||||
UINT32 TokenLineNum; // line number in the .i file
|
||||
CHAR8 *FileName; // from the #line stmt
|
||||
} PARSER_LINE_DEFINITION;
|
||||
|
||||
extern PARSER_LINE_DEFINITION *gLineDefinition;
|
||||
extern PARSER_LINE_DEFINITION *gLastLineDefinition;
|
||||
|
||||
extern
|
||||
char *
|
||||
ConvertLineNumber (
|
||||
UINT32 *LineNum
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
Given the line number in the preprocessor-output file, use the line number
|
||||
information we've saved to determine the source file name and line number
|
||||
where the code originally came from. This is required for error reporting.
|
||||
|
||||
Arguments:
|
||||
LineNum - the line number in the preprocessor-output file.
|
||||
|
||||
Returns:
|
||||
Returns a pointer to the source file name. Also returns the line number
|
||||
in the provided LineNum argument
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
typedef struct _IFR_BYTE {
|
||||
struct _IFR_BYTE *Next;
|
||||
UINT32 LineNum;
|
||||
UINT8 OpcodeByte;
|
||||
UINT8 KeyByte;
|
||||
} IFR_BYTE;
|
||||
|
||||
typedef struct {
|
||||
CHAR8 VfrFileName[MAX_PATH];
|
||||
CHAR8 VfrListFileName[MAX_PATH];
|
||||
INT8 CreateListFile;
|
||||
INT8 CreateIfrBinFile;
|
||||
CHAR8 IfrOutputFileName[MAX_PATH];
|
||||
CHAR8 OutputDirectory[MAX_PATH];
|
||||
CHAR8 PreprocessorOutputFileName[MAX_PATH];
|
||||
CHAR8 VfrBaseFileName[MAX_PATH]; // name of input VFR file with no path or extension
|
||||
CHAR8 *IncludePaths;
|
||||
CHAR8 *CPreprocessorOptions;
|
||||
} OPTIONS;
|
||||
|
||||
extern OPTIONS gOptions;
|
||||
|
||||
VOID
|
||||
WriteStandardFileHeader (
|
||||
FILE *OutFptr
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
This function is invoked to emit a standard header to an
|
||||
output text file.
|
||||
|
||||
Arguments:
|
||||
OutFptr - file to write the header to
|
||||
|
||||
Returns:
|
||||
None
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
#endif // #ifndef _EFI_VFR_H_
|
Reference in New Issue
Block a user