]> git.proxmox.com Git - mirror_edk2.git/blob - MdeModulePkg/Universal/SetupBrowserDxe/Expression.h
Update Browser to provide the customization possibilities.
[mirror_edk2.git] / MdeModulePkg / Universal / SetupBrowserDxe / Expression.h
1 /** @file
2 Private structure, MACRO and function definitions for User Interface related functionalities.
3
4 Copyright (c) 2004 - 2013, Intel Corporation. All rights reserved.<BR>
5 This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13 **/
14
15 #ifndef _EXPRESSION_H_
16 #define _EXPRESSION_H_
17
18 /**
19 Get the expression list count.
20
21 @param Level Which type this expression belong to. Form,
22 statement or option?
23
24 @retval >=0 The expression count
25 @retval -1 Input parameter error.
26
27 **/
28 INTN
29 GetConditionalExpressionCount (
30 IN EXPRESS_LEVEL Level
31 );
32
33 /**
34 Reset stack pointer to begin of the stack.
35
36 **/
37 VOID
38 ResetCurrentExpressionStack (
39 VOID
40 );
41
42 /**
43 Reset stack pointer to begin of the stack.
44
45 **/
46 VOID
47 ResetMapExpressionListStack (
48 VOID
49 );
50
51 /**
52 Reset stack pointer to begin of the stack.
53
54 **/
55 VOID
56 ResetScopeStack (
57 VOID
58 );
59
60 /**
61 Push an Operand onto the Stack
62
63 @param Operand Operand to push.
64
65 @retval EFI_SUCCESS The value was pushed onto the stack.
66 @retval EFI_OUT_OF_RESOURCES There is not enough system memory to grow the
67 stack.
68
69 **/
70 EFI_STATUS
71 PushScope (
72 IN UINT8 Operand
73 );
74
75 /**
76 Get the expression Buffer pointer.
77
78 @param Level Which type this expression belong to. Form,
79 statement or option?
80
81 @retval The start pointer of the expression buffer or NULL.
82
83 **/
84 FORM_EXPRESSION **
85 GetConditionalExpressionList (
86 IN EXPRESS_LEVEL Level
87 );
88
89 /**
90 Pop an Operand from the Stack
91
92 @param Operand Operand to pop.
93
94 @retval EFI_SUCCESS The value was pushed onto the stack.
95 @retval EFI_OUT_OF_RESOURCES There is not enough system memory to grow the
96 stack.
97
98 **/
99 EFI_STATUS
100 PopScope (
101 OUT UINT8 *Operand
102 );
103
104 /**
105 Push the list of map expression onto the Stack
106
107 @param Pointer Pointer to the list of map expression to be pushed.
108
109 @retval EFI_SUCCESS The value was pushed onto the stack.
110 @retval EFI_OUT_OF_RESOURCES There is not enough system memory to grow the stack.
111
112 **/
113 EFI_STATUS
114 PushMapExpressionList (
115 IN VOID *Pointer
116 );
117
118 /**
119 Push current expression onto the Stack
120
121 @param Pointer Pointer to current expression.
122
123 @retval EFI_SUCCESS The value was pushed onto the stack.
124 @retval EFI_OUT_OF_RESOURCES There is not enough system memory to grow the stack.
125
126 **/
127 EFI_STATUS
128 PushCurrentExpression (
129 IN VOID *Pointer
130 );
131
132 /**
133 Zero extend integer/boolean/date/time to UINT64 for comparing.
134
135 @param Value HII Value to be converted.
136
137 **/
138 VOID
139 ExtendValueToU64 (
140 IN EFI_HII_VALUE *Value
141 );
142
143 /**
144 Push the expression options onto the Stack.
145
146 @param Pointer Pointer to the current expression.
147 @param Level Which type this expression belong to. Form,
148 statement or option?
149
150 @retval EFI_SUCCESS The value was pushed onto the stack.
151 @retval EFI_OUT_OF_RESOURCES There is not enough system memory to grow the stack.
152
153 **/
154 EFI_STATUS
155 PushConditionalExpression (
156 IN FORM_EXPRESSION *Pointer,
157 IN EXPRESS_LEVEL Level
158 );
159
160 /**
161 Pop the expression options from the Stack
162
163 @param Level Which type this expression belong to. Form,
164 statement or option?
165
166 @retval EFI_SUCCESS The value was pushed onto the stack.
167 @retval EFI_OUT_OF_RESOURCES There is not enough system memory to grow the stack.
168
169 **/
170 EFI_STATUS
171 PopConditionalExpression (
172 IN EXPRESS_LEVEL Level
173 );
174
175 /**
176 Pop the list of map expression from the Stack
177
178 @param Pointer Pointer to the list of map expression to be pop.
179
180 @retval EFI_SUCCESS The value was pushed onto the stack.
181 @retval EFI_OUT_OF_RESOURCES There is not enough system memory to grow the stack.
182
183 **/
184 EFI_STATUS
185 PopMapExpressionList (
186 OUT VOID **Pointer
187 );
188
189 /**
190 Pop current expression from the Stack
191
192 @param Pointer Pointer to current expression to be pop.
193
194 @retval EFI_SUCCESS The value was pushed onto the stack.
195 @retval EFI_OUT_OF_RESOURCES There is not enough system memory to grow the stack.
196
197 **/
198 EFI_STATUS
199 PopCurrentExpression (
200 OUT VOID **Pointer
201 );
202
203 /**
204 Evaluate the result of a HII expression.
205
206 If Expression is NULL, then ASSERT.
207
208 @param FormSet FormSet associated with this expression.
209 @param Form Form associated with this expression.
210 @param Expression Expression to be evaluated.
211
212 @retval EFI_SUCCESS The expression evaluated successfuly
213 @retval EFI_NOT_FOUND The Question which referenced by a QuestionId
214 could not be found.
215 @retval EFI_OUT_OF_RESOURCES There is not enough system memory to grow the
216 stack.
217 @retval EFI_ACCESS_DENIED The pop operation underflowed the stack
218 @retval EFI_INVALID_PARAMETER Syntax error with the Expression
219
220 **/
221 EFI_STATUS
222 EvaluateExpression (
223 IN FORM_BROWSER_FORMSET *FormSet,
224 IN FORM_BROWSER_FORM *Form,
225 IN OUT FORM_EXPRESSION *Expression
226 );
227 /**
228 Return the result of the expression list. Check the expression list and
229 return the highest priority express result.
230 Priority: DisableIf > SuppressIf > GrayOutIf > FALSE
231
232 @param ExpList The input expression list.
233 @param Evaluate Whether need to evaluate the expression first.
234 @param FormSet FormSet associated with this expression.
235 @param Form Form associated with this expression.
236
237 @retval EXPRESS_RESULT Return the higher priority express result.
238 DisableIf > SuppressIf > GrayOutIf > FALSE
239
240 **/
241 EXPRESS_RESULT
242 EvaluateExpressionList (
243 IN FORM_EXPRESSION_LIST *ExpList,
244 IN BOOLEAN Evaluate,
245 IN FORM_BROWSER_FORMSET *FormSet, OPTIONAL
246 IN FORM_BROWSER_FORM *Form OPTIONAL
247 );
248
249 /**
250 Get Form given its FormId.
251
252 @param FormSet The formset which contains this form.
253 @param FormId Id of this form.
254
255 @retval Pointer The form.
256 @retval NULL Specified Form is not found in the formset.
257
258 **/
259 FORM_BROWSER_FORM *
260 IdToForm (
261 IN FORM_BROWSER_FORMSET *FormSet,
262 IN UINT16 FormId
263 );
264
265 #endif // _EXPRESSION_H