• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*++
2 
3 Copyright (c) 2004, Intel Corporation. All rights reserved.<BR>
4 This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution.  The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
8 
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
11 
12 Module Name:
13 
14   VfrServices.h
15 
16 Abstract:
17 
18   Prototypes and defines for routines and classes used by the
19   EFI VFR compiler.
20 
21 --*/
22 
23 #ifndef _VFR_SERVICES_H_
24 #define _VFR_SERVICES_H_
25 
26 class VfrOpcodeHandler
27 {
28 public:
29   VfrOpcodeHandler (
30     VOID
31     )
32   /*++
33 
34 Routine Description:
35   Constructor for the VFR opcode handling class.
36 
37 Arguments:
38   None
39 
40 Returns:
41   None
42 
43 --*/
44   ;
45   ~VfrOpcodeHandler (
46     VOID
47     )
48   /*++
49 
50 Routine Description:
51   Destructor for the VFR opcode handler. Free up memory allocated
52   while parsing the VFR script.
53 
54 Arguments:
55   None
56 
57 Returns:
58   None
59 
60 --*/
61   ;
62   void
63   WriteIfrBytes (
64     VOID
65     )
66   /*++
67 
68 Routine Description:
69   This function is invoked at the end of parsing. Its purpose
70   is to write out all the IFR bytes that were queued up while
71   parsing.
72 
73 Arguments:
74   None
75 
76 Returns:
77   None
78 
79 --*/
80   ;
81   int
82   AddOpcodeByte (
83     UINT8  OpcodeByte,
84     UINT32 LineNum
85     )
86   /*++
87 
88 Routine Description:
89   This function is invoked by the parser when a new IFR
90   opcode should be emitted.
91 
92 Arguments:
93   OpcodeByte  - the IFR opcode
94   LineNum     - the line number from the source file that resulted
95                 in the opcode being emitted.
96 
97 Returns:
98   0 always
99 
100 --*/
101   ;
102   void
103   AddByte (
104     UINT8 ByteVal,
105     UINT8 KeyByte
106     )
107   /*++
108 
109 Routine Description:
110   This function is invoked by the parser when it determines
111   that more raw IFR bytes should be emitted to the output stream.
112   Here we just queue them up into an output buffer.
113 
114 Arguments:
115   ByteVal   - the raw byte to emit to the output IFR stream
116   KeyByte   - a value that can be used for debug.
117 
118 Returns:
119   None
120 
121 --*/
122   ;
123   void
124   SetVarStoreId (
125     UINT16 VarStoreId
126     )
127   /*++
128 
129 Routine Description:
130   This function is invoked by the parser when a variable is referenced in the
131   VFR. Save the variable store (and set a flag) so that we can later determine
132   if we need to emit a varstore-select or varstore-select-pair opcode.
133 
134 Arguments:
135   VarStoreId - ID of the variable store referenced in the VFR
136 
137 Returns:
138   None
139 
140 --*/
141   ;
142   void
143   SetSecondaryVarStoreId (
144     UINT16 VarStoreId
145     )
146   /*++
147 
148 Routine Description:
149   This function is invoked by the parser when a secondary variable is
150   referenced in the VFR. Save the variable store (and set a flag) so
151   that we can later determine if we need to emit a varstore-select or
152   varstore-pair opcode.
153 
154 Arguments:
155   VarStoreId - ID of the variable store referenced in the VFR
156 
157 Returns:
158   None
159 
160 --*/
161   ;
162 
163 /* */
164 private:
165   int
166   FlushQueue (
167     VOID
168     )
169   /*++
170 
171 Routine Description:
172   This function is invoked to flush the internal IFR buffer.
173 
174 Arguments:
175   None
176 
177 Returns:
178   0 always
179 
180 --*/
181   ;
182   int
183   IAddByte (
184     UINT8  ByteVal,
185     UINT8  KeyByte,
186     UINT32 LineNum
187     )
188   /*++
189 
190 Routine Description:
191   This internal function is used to add actual IFR bytes to
192   the output stream. Most other functions queue up the bytes
193   in an internal buffer. Once they come here, there's no
194   going back.
195 
196 
197 Arguments:
198   ByteVal   - value to write to output
199   KeyByte   - key value tied to the byte -- useful for debug
200   LineNum   - line number from source file the byte resulted from
201 
202 Returns:
203   0 - if successful
204   1 - failed due to memory allocation failure
205 
206 --*/
207   ;
208 
209 /* */
210 private:
211   IFR_BYTE  *mIfrBytes;
212   IFR_BYTE  *mLastIfrByte;
213   UINT32    mQueuedByteCount;
214   UINT32    mBytesWritten;
215   UINT32    mQueuedLineNum;
216   UINT8     mQueuedBytes[MAX_QUEUE_COUNT];
217   UINT8     mQueuedKeyBytes[MAX_QUEUE_COUNT];
218   UINT8     mQueuedOpcodeByte;
219   UINT32    mQueuedOpcodeByteValid;
220   UINT16    mPrimaryVarStoreId;
221   UINT8     mPrimaryVarStoreIdSet;
222   UINT16    mSecondaryVarStoreId;
223   UINT8     mSecondaryVarStoreIdSet;
224   UINT16    mDefaultVarStoreId;
225 };
226 
227 #endif // #ifndef _VFR_SERVICES_H_
228