]> git.proxmox.com Git - mirror_edk2.git/blame - BaseTools/Source/C/VfrCompile/VfrUtilityLib.h
BaseTools VfrCompile GNU makefile: Replace CXX with BUILD_CXX
[mirror_edk2.git] / BaseTools / Source / C / VfrCompile / VfrUtilityLib.h
CommitLineData
30fdf114
LG
1/** @file\r
2 \r
3 Vfr common library functions.\r
4\r
74bbe31b 5Copyright (c) 2004 - 2016, Intel Corporation. All rights reserved.<BR>\r
40d841f6 6This program and the accompanying materials \r
30fdf114
LG
7are licensed and made available under the terms and conditions of the BSD License \r
8which accompanies this distribution. The full text of the license may be found at \r
9http://opensource.org/licenses/bsd-license.php \r
10 \r
11THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
12WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
13\r
14**/\r
15\r
16#ifndef _VFRUTILITYLIB_H_\r
17#define _VFRUTILITYLIB_H_\r
18\r
19#include "string.h"\r
20#include "Common/UefiBaseTypes.h"\r
21#include "EfiVfr.h"\r
22#include "VfrError.h"\r
23\r
24extern BOOLEAN VfrCompatibleMode;\r
25\r
26#define MAX_NAME_LEN 64\r
27#define MAX_STRING_LEN 0x100\r
28#define DEFAULT_ALIGN 1\r
29#define DEFAULT_PACK_ALIGN 0x8\r
30#define DEFAULT_NAME_TABLE_ITEMS 1024\r
31\r
32#define EFI_BITS_SHIFT_PER_UINT32 0x5\r
33#define EFI_BITS_PER_UINT32 (1 << EFI_BITS_SHIFT_PER_UINT32)\r
34\r
35#define BUFFER_SAFE_FREE(Buf) do { if ((Buf) != NULL) { delete (Buf); } } while (0);\r
36\r
37class CVfrBinaryOutput {\r
38public:\r
52302d4d
LG
39 virtual VOID WriteLine (IN FILE *, IN UINT32, IN CONST CHAR8 *, IN CHAR8 *, IN UINT32);\r
40 virtual VOID WriteEnd (IN FILE *, IN UINT32, IN CONST CHAR8 *, IN CHAR8 *, IN UINT32);\r
30fdf114
LG
41};\r
42\r
43UINT32\r
44_STR2U32 (\r
45 IN CHAR8 *Str\r
46 );\r
47\r
48struct SConfigInfo {\r
49 UINT16 mOffset;\r
50 UINT16 mWidth;\r
51 UINT8 *mValue;\r
52 SConfigInfo *mNext;\r
53\r
54 SConfigInfo (IN UINT8, IN UINT16, IN UINT32, IN EFI_IFR_TYPE_VALUE);\r
55 ~SConfigInfo (VOID);\r
56};\r
57\r
58struct SConfigItem {\r
59 CHAR8 *mName; // varstore name\r
4afd3d04
LG
60 EFI_GUID *mGuid; // varstore guid, varstore name + guid deside one varstore\r
61 CHAR8 *mId; // default ID\r
30fdf114
LG
62 SConfigInfo *mInfoStrList; // list of Offset/Value in the varstore\r
63 SConfigItem *mNext;\r
64\r
65public:\r
4afd3d04
LG
66 SConfigItem (IN CHAR8 *, IN EFI_GUID *, IN CHAR8 *);\r
67 SConfigItem (IN CHAR8 *, IN EFI_GUID *, IN CHAR8 *, IN UINT8, IN UINT16, IN UINT16, IN EFI_IFR_TYPE_VALUE);\r
30fdf114
LG
68 virtual ~SConfigItem ();\r
69};\r
70\r
71class CVfrBufferConfig {\r
72private:\r
73 SConfigItem *mItemListHead;\r
74 SConfigItem *mItemListTail;\r
75 SConfigItem *mItemListPos;\r
76\r
77public:\r
78 CVfrBufferConfig (VOID);\r
79 virtual ~CVfrBufferConfig (VOID);\r
80\r
4afd3d04 81 virtual UINT8 Register (IN CHAR8 *, IN EFI_GUID *,IN CHAR8 *Info = NULL);\r
30fdf114
LG
82 virtual VOID Open (VOID);\r
83 virtual BOOLEAN Eof(VOID);\r
4afd3d04
LG
84 virtual UINT8 Select (IN CHAR8 *, IN EFI_GUID *, IN CHAR8 *Info = NULL);\r
85 virtual UINT8 Write (IN CONST CHAR8, IN CHAR8 *, IN EFI_GUID *, IN CHAR8 *, IN UINT8, IN UINT16, IN UINT32, IN EFI_IFR_TYPE_VALUE);\r
30fdf114
LG
86#if 0\r
87 virtual UINT8 Read (OUT CHAR8 **, OUT CHAR8 **, OUT CHAR8 **, OUT CHAR8 **, OUT CHAR8 **);\r
88#endif\r
89 virtual VOID Close (VOID);\r
90 virtual VOID OutputCFile (IN FILE *, IN CHAR8 *);\r
91};\r
92\r
93extern CVfrBufferConfig gCVfrBufferConfig;\r
94\r
95#define ALIGN_STUFF(Size, Align) ((Align) - (Size) % (Align))\r
96#define INVALID_ARRAY_INDEX 0xFFFFFFFF\r
97\r
98struct SVfrDataType;\r
99\r
100struct SVfrDataField {\r
101 CHAR8 mFieldName[MAX_NAME_LEN];\r
102 SVfrDataType *mFieldType;\r
103 UINT32 mOffset;\r
104 UINT32 mArrayNum;\r
105 SVfrDataField *mNext;\r
106};\r
107\r
108struct SVfrDataType {\r
109 CHAR8 mTypeName[MAX_NAME_LEN];\r
110 UINT8 mType;\r
111 UINT32 mAlign;\r
112 UINT32 mTotalSize;\r
113 SVfrDataField *mMembers;\r
114 SVfrDataType *mNext;\r
115};\r
116\r
117#define VFR_PACK_ASSIGN 0x01\r
118#define VFR_PACK_SHOW 0x02\r
119#define VFR_PACK_PUSH 0x04\r
120#define VFR_PACK_POP 0x08\r
121\r
122#define PACKSTACK_MAX_SIZE 0x400\r
123\r
124struct SVfrPackStackNode {\r
125 CHAR8 *mIdentifier;\r
126 UINT32 mNumber;\r
127 SVfrPackStackNode *mNext;\r
128\r
129 SVfrPackStackNode (IN CHAR8 *Identifier, IN UINT32 Number) {\r
130 mIdentifier = NULL;\r
131 mNumber = Number;\r
132 mNext = NULL;\r
133\r
134 if (Identifier != NULL) {\r
135 mIdentifier = new CHAR8[strlen (Identifier) + 1];\r
136 strcpy (mIdentifier, Identifier);\r
137 }\r
138 }\r
139\r
140 ~SVfrPackStackNode (VOID) {\r
141 if (mIdentifier != NULL) {\r
142 delete mIdentifier;\r
143 }\r
144 mNext = NULL;\r
145 }\r
146\r
147 bool Match (IN CHAR8 *Identifier) {\r
148 if (Identifier == NULL) {\r
149 return TRUE;\r
150 } else if (mIdentifier == NULL) {\r
151 return FALSE;\r
152 } else if (strcmp (Identifier, mIdentifier) == 0) {\r
153 return TRUE;\r
154 } else {\r
155 return FALSE;\r
156 }\r
157 }\r
158};\r
159\r
160class CVfrVarDataTypeDB {\r
161private:\r
162 UINT32 mPackAlign;\r
163 SVfrPackStackNode *mPackStack;\r
164\r
165public:\r
166 EFI_VFR_RETURN_CODE Pack (IN UINT32, IN UINT8, IN CHAR8 *Identifier = NULL, IN UINT32 Number = DEFAULT_PACK_ALIGN);\r
167\r
168private:\r
169 SVfrDataType *mDataTypeList;\r
170\r
171 SVfrDataType *mNewDataType;\r
172 SVfrDataType *mCurrDataType;\r
173 SVfrDataField *mCurrDataField;\r
174\r
175 VOID InternalTypesListInit (VOID);\r
176 VOID RegisterNewType (IN SVfrDataType *);\r
177\r
178 EFI_VFR_RETURN_CODE ExtractStructTypeName (IN CHAR8 *&, OUT CHAR8 *);\r
4234283c 179 EFI_VFR_RETURN_CODE GetTypeField (IN CONST CHAR8 *, IN SVfrDataType *, IN SVfrDataField *&);\r
30fdf114
LG
180 EFI_VFR_RETURN_CODE GetFieldOffset (IN SVfrDataField *, IN UINT32, OUT UINT32 &);\r
181 UINT8 GetFieldWidth (IN SVfrDataField *);\r
182 UINT32 GetFieldSize (IN SVfrDataField *, IN UINT32);\r
183\r
184public:\r
185 CVfrVarDataTypeDB (VOID);\r
186 ~CVfrVarDataTypeDB (VOID);\r
187\r
188 VOID DeclareDataTypeBegin (VOID);\r
189 EFI_VFR_RETURN_CODE SetNewTypeName (IN CHAR8 *);\r
190 EFI_VFR_RETURN_CODE DataTypeAddField (IN CHAR8 *, IN CHAR8 *, IN UINT32);\r
191 VOID DeclareDataTypeEnd (VOID);\r
192\r
193 EFI_VFR_RETURN_CODE GetDataType (IN CHAR8 *, OUT SVfrDataType **);\r
194 EFI_VFR_RETURN_CODE GetDataTypeSize (IN CHAR8 *, OUT UINT32 *);\r
195 EFI_VFR_RETURN_CODE GetDataTypeSize (IN UINT8, OUT UINT32 *);\r
196 EFI_VFR_RETURN_CODE GetDataFieldInfo (IN CHAR8 *, OUT UINT16 &, OUT UINT8 &, OUT UINT32 &);\r
197\r
198 EFI_VFR_RETURN_CODE GetUserDefinedTypeNameList (OUT CHAR8 ***, OUT UINT32 *);\r
199 EFI_VFR_RETURN_CODE ExtractFieldNameAndArrary (IN CHAR8 *&, OUT CHAR8 *, OUT UINT32 &);\r
200\r
201 BOOLEAN IsTypeNameDefined (IN CHAR8 *);\r
202\r
203 VOID Dump(IN FILE *);\r
204 //\r
205 // First the declared \r
206 //\r
207 CHAR8 *mFirstNewDataTypeName;\r
208#ifdef CVFR_VARDATATYPEDB_DEBUG\r
209 VOID ParserDB ();\r
210#endif\r
211};\r
212\r
213extern CVfrVarDataTypeDB gCVfrVarDataTypeDB;\r
214\r
215typedef enum {\r
216 EFI_VFR_VARSTORE_INVALID,\r
217 EFI_VFR_VARSTORE_BUFFER,\r
218 EFI_VFR_VARSTORE_EFI,\r
219 EFI_VFR_VARSTORE_NAME\r
220} EFI_VFR_VARSTORE_TYPE;\r
221\r
222struct SVfrVarStorageNode {\r
223 EFI_GUID mGuid;\r
224 CHAR8 *mVarStoreName;\r
225 EFI_VARSTORE_ID mVarStoreId;\r
226 BOOLEAN mAssignedFlag; //Create varstore opcode\r
227 struct SVfrVarStorageNode *mNext;\r
228\r
229 EFI_VFR_VARSTORE_TYPE mVarStoreType;\r
230 union {\r
231 // EFI Variable\r
232 struct {\r
233 EFI_STRING_ID mEfiVarName;\r
234 UINT32 mEfiVarSize;\r
235 } mEfiVar;\r
236\r
237 // Buffer Storage\r
238 SVfrDataType *mDataType;\r
239\r
240 // NameValue Storage\r
241 struct {\r
242 EFI_STRING_ID *mNameTable;\r
243 UINT32 mTableSize;\r
244 } mNameSpace;\r
245 } mStorageInfo;\r
246\r
247public:\r
248 SVfrVarStorageNode (IN EFI_GUID *, IN CHAR8 *, IN EFI_VARSTORE_ID, IN EFI_STRING_ID, IN UINT32, IN BOOLEAN Flag = TRUE);\r
249 SVfrVarStorageNode (IN EFI_GUID *, IN CHAR8 *, IN EFI_VARSTORE_ID, IN SVfrDataType *, IN BOOLEAN Flag = TRUE);\r
250 SVfrVarStorageNode (IN CHAR8 *, IN EFI_VARSTORE_ID);\r
251 ~SVfrVarStorageNode (VOID);\r
252};\r
253\r
254struct EFI_VARSTORE_INFO {\r
255 EFI_VARSTORE_ID mVarStoreId;\r
256 union {\r
257 EFI_STRING_ID mVarName;\r
258 UINT16 mVarOffset;\r
259 } mInfo;\r
260 UINT8 mVarType;\r
261 UINT32 mVarTotalSize;\r
262\r
263 EFI_VARSTORE_INFO (VOID);\r
264 EFI_VARSTORE_INFO (IN EFI_VARSTORE_INFO &);\r
265 BOOLEAN operator == (IN EFI_VARSTORE_INFO *);\r
266};\r
267\r
74bbe31b
DB
268struct BufferVarStoreFieldInfoNode {\r
269 EFI_VARSTORE_INFO mVarStoreInfo;\r
270 struct BufferVarStoreFieldInfoNode *mNext;\r
271\r
272 BufferVarStoreFieldInfoNode( IN EFI_VARSTORE_INFO *Info );\r
273 ~BufferVarStoreFieldInfoNode ();\r
274};\r
275\r
30fdf114
LG
276#define EFI_VARSTORE_ID_MAX 0xFFFF\r
277#define EFI_FREE_VARSTORE_ID_BITMAP_SIZE ((EFI_VARSTORE_ID_MAX + 1) / EFI_BITS_PER_UINT32)\r
278\r
279class CVfrDataStorage {\r
280private:\r
281 UINT32 mFreeVarStoreIdBitMap[EFI_FREE_VARSTORE_ID_BITMAP_SIZE];\r
282\r
283 struct SVfrVarStorageNode *mBufferVarStoreList;\r
284 struct SVfrVarStorageNode *mEfiVarStoreList;\r
285 struct SVfrVarStorageNode *mNameVarStoreList;\r
286\r
287 struct SVfrVarStorageNode *mCurrVarStorageNode;\r
288 struct SVfrVarStorageNode *mNewVarStorageNode;\r
74bbe31b
DB
289 BufferVarStoreFieldInfoNode *mBufferFieldInfoListHead;\r
290 BufferVarStoreFieldInfoNode *mBufferFieldInfoListTail;\r
30fdf114
LG
291\r
292private:\r
293\r
294 EFI_VARSTORE_ID GetFreeVarStoreId (EFI_VFR_VARSTORE_TYPE VarType = EFI_VFR_VARSTORE_BUFFER);\r
295 BOOLEAN ChekVarStoreIdFree (IN EFI_VARSTORE_ID);\r
296 VOID MarkVarStoreIdUsed (IN EFI_VARSTORE_ID);\r
297 VOID MarkVarStoreIdUnused (IN EFI_VARSTORE_ID);\r
4afd3d04
LG
298 EFI_VARSTORE_ID CheckGuidField (IN SVfrVarStorageNode *, \r
299 IN EFI_GUID *, \r
300 IN BOOLEAN *, \r
301 OUT EFI_VFR_RETURN_CODE *);\r
30fdf114
LG
302\r
303public:\r
304 CVfrDataStorage ();\r
305 ~CVfrDataStorage ();\r
306 \r
307 SVfrVarStorageNode * GetBufferVarStoreList () {\r
308 return mBufferVarStoreList;\r
309 }\r
310 SVfrVarStorageNode * GetEfiVarStoreList () {\r
311 return mEfiVarStoreList;\r
312 }\r
e8a47801 313 EFI_VFR_RETURN_CODE DeclareNameVarStoreBegin (CHAR8 *, EFI_VARSTORE_ID);\r
30fdf114
LG
314 EFI_VFR_RETURN_CODE NameTableAddItem (EFI_STRING_ID);\r
315 EFI_VFR_RETURN_CODE DeclareNameVarStoreEnd (EFI_GUID *);\r
316\r
317 EFI_VFR_RETURN_CODE DeclareEfiVarStore (IN CHAR8 *, IN EFI_GUID *, IN EFI_STRING_ID, IN UINT32, IN BOOLEAN Flag = TRUE);\r
318\r
319 EFI_VFR_RETURN_CODE DeclareBufferVarStore (IN CHAR8 *, IN EFI_GUID *, IN CVfrVarDataTypeDB *, IN CHAR8 *, IN EFI_VARSTORE_ID, IN BOOLEAN Flag = TRUE);\r
320\r
4afd3d04 321 EFI_VFR_RETURN_CODE GetVarStoreId (IN CHAR8 *, OUT EFI_VARSTORE_ID *, IN EFI_GUID *VarGuid = NULL);\r
30fdf114 322 EFI_VFR_VARSTORE_TYPE GetVarStoreType (IN EFI_VARSTORE_ID);\r
4afd3d04 323 EFI_GUID * GetVarStoreGuid (IN EFI_VARSTORE_ID);\r
30fdf114 324 EFI_VFR_RETURN_CODE GetVarStoreName (IN EFI_VARSTORE_ID, OUT CHAR8 **);\r
4afd3d04 325 EFI_VFR_RETURN_CODE GetVarStoreByDataType (IN CHAR8 *, OUT SVfrVarStorageNode **, IN EFI_GUID *VarGuid = NULL);\r
30fdf114 326\r
4afd3d04 327 EFI_VFR_RETURN_CODE GetBufferVarStoreDataTypeName (IN EFI_VARSTORE_ID, OUT CHAR8 **);\r
30fdf114
LG
328 EFI_VFR_RETURN_CODE GetEfiVarStoreInfo (IN EFI_VARSTORE_INFO *);\r
329 EFI_VFR_RETURN_CODE GetNameVarStoreInfo (IN EFI_VARSTORE_INFO *, IN UINT32);\r
74bbe31b
DB
330 EFI_VFR_RETURN_CODE AddBufferVarStoreFieldInfo (IN EFI_VARSTORE_INFO *);\r
331 EFI_VFR_RETURN_CODE GetBufferVarStoreFieldInfo (IN OUT EFI_VARSTORE_INFO *);\r
30fdf114
LG
332};\r
333\r
74bbe31b
DB
334extern CVfrDataStorage gCVfrDataStorage;\r
335\r
30fdf114
LG
336#define EFI_QUESTION_ID_MAX 0xFFFF\r
337#define EFI_FREE_QUESTION_ID_BITMAP_SIZE ((EFI_QUESTION_ID_MAX + 1) / EFI_BITS_PER_UINT32)\r
338#define EFI_QUESTION_ID_INVALID 0x0\r
339\r
340#define DATE_YEAR_BITMASK 0x0000FFFF\r
341#define DATE_MONTH_BITMASK 0x00FF0000\r
342#define DATE_DAY_BITMASK 0xFF000000\r
343#define TIME_HOUR_BITMASK 0x000000FF\r
344#define TIME_MINUTE_BITMASK 0x0000FF00\r
345#define TIME_SECOND_BITMASK 0x00FF0000\r
346\r
347struct SVfrQuestionNode {\r
348 CHAR8 *mName;\r
349 CHAR8 *mVarIdStr;\r
350 EFI_QUESTION_ID mQuestionId;\r
351 UINT32 mBitMask;\r
352 SVfrQuestionNode *mNext;\r
52302d4d 353 EFI_QUESION_TYPE mQtype;\r
30fdf114
LG
354\r
355 SVfrQuestionNode (IN CHAR8 *, IN CHAR8 *, IN UINT32 BitMask = 0);\r
356 ~SVfrQuestionNode ();\r
357};\r
358\r
359class CVfrQuestionDB {\r
360private:\r
361 SVfrQuestionNode *mQuestionList;\r
362 UINT32 mFreeQIdBitMap[EFI_FREE_QUESTION_ID_BITMAP_SIZE];\r
363\r
364private:\r
365 EFI_QUESTION_ID GetFreeQuestionId (VOID);\r
366 BOOLEAN ChekQuestionIdFree (IN EFI_QUESTION_ID);\r
367 VOID MarkQuestionIdUsed (IN EFI_QUESTION_ID);\r
368 VOID MarkQuestionIdUnused (IN EFI_QUESTION_ID);\r
369\r
370public:\r
371 CVfrQuestionDB ();\r
372 ~CVfrQuestionDB();\r
373\r
374 EFI_VFR_RETURN_CODE RegisterQuestion (IN CHAR8 *, IN CHAR8 *, IN OUT EFI_QUESTION_ID &);\r
375 VOID RegisterOldDateQuestion (IN CHAR8 *, IN CHAR8 *, IN CHAR8 *, IN OUT EFI_QUESTION_ID &);\r
376 VOID RegisterNewDateQuestion (IN CHAR8 *, IN CHAR8 *, IN OUT EFI_QUESTION_ID &);\r
377 VOID RegisterOldTimeQuestion (IN CHAR8 *, IN CHAR8 *, IN CHAR8 *, IN OUT EFI_QUESTION_ID &);\r
378 VOID RegisterNewTimeQuestion (IN CHAR8 *, IN CHAR8 *, IN OUT EFI_QUESTION_ID &);\r
4234283c 379 VOID RegisterRefQuestion (IN CHAR8 *, IN CHAR8 *, IN OUT EFI_QUESTION_ID &); \r
30fdf114 380 EFI_VFR_RETURN_CODE UpdateQuestionId (IN EFI_QUESTION_ID, IN EFI_QUESTION_ID);\r
52302d4d 381 VOID GetQuestionId (IN CHAR8 *, IN CHAR8 *, OUT EFI_QUESTION_ID &, OUT UINT32 &, OUT EFI_QUESION_TYPE *QType = NULL);\r
30fdf114
LG
382 EFI_VFR_RETURN_CODE FindQuestion (IN EFI_QUESTION_ID);\r
383 EFI_VFR_RETURN_CODE FindQuestion (IN CHAR8 *);\r
384 VOID PrintAllQuestion (IN VOID);\r
385 VOID ResetInit (IN VOID); \r
386\r
387 VOID SetCompatibleMode (IN BOOLEAN Mode) {\r
388 VfrCompatibleMode = Mode;\r
389 }\r
390};\r
391\r
392struct SVfrDefaultStoreNode {\r
393 EFI_IFR_DEFAULTSTORE *mObjBinAddr;\r
394 CHAR8 *mRefName;\r
395 EFI_STRING_ID mDefaultStoreNameId;\r
396 UINT16 mDefaultId;\r
397\r
398 SVfrDefaultStoreNode *mNext;\r
399\r
400 SVfrDefaultStoreNode (IN EFI_IFR_DEFAULTSTORE *, IN CHAR8 *, IN EFI_STRING_ID, IN UINT16);\r
401 ~SVfrDefaultStoreNode();\r
402};\r
403\r
404class CVfrDefaultStore {\r
405private:\r
406 SVfrDefaultStoreNode *mDefaultStoreList;\r
407\r
408public:\r
409 CVfrDefaultStore ();\r
410 ~CVfrDefaultStore ();\r
411\r
412 EFI_VFR_RETURN_CODE RegisterDefaultStore (IN CHAR8 *, IN CHAR8 *, IN EFI_STRING_ID, IN UINT16);\r
413 EFI_VFR_RETURN_CODE ReRegisterDefaultStoreById (IN UINT16, IN CHAR8 *, IN EFI_STRING_ID);\r
414 BOOLEAN DefaultIdRegistered (IN UINT16);\r
415 EFI_VFR_RETURN_CODE GetDefaultId (IN CHAR8 *, OUT UINT16 *);\r
4afd3d04 416 EFI_VFR_RETURN_CODE BufferVarStoreAltConfigAdd (IN EFI_VARSTORE_ID, IN EFI_VARSTORE_INFO &, IN CHAR8 *, IN EFI_GUID *, IN UINT8, IN EFI_IFR_TYPE_VALUE);\r
30fdf114
LG
417};\r
418\r
74bbe31b
DB
419extern CVfrDefaultStore gCVfrDefaultStore;\r
420\r
30fdf114
LG
421#define EFI_RULE_ID_START 0x01\r
422#define EFI_RULE_ID_INVALID 0x00\r
423\r
424struct SVfrRuleNode {\r
425 UINT8 mRuleId;\r
426 CHAR8 *mRuleName;\r
427 SVfrRuleNode *mNext;\r
428\r
429 SVfrRuleNode(IN CHAR8 *, IN UINT8);\r
430 ~SVfrRuleNode();\r
431};\r
432\r
433class CVfrRulesDB {\r
434private:\r
435 SVfrRuleNode *mRuleList;\r
436 UINT8 mFreeRuleId;\r
437\r
438public:\r
439 CVfrRulesDB ();\r
440 ~CVfrRulesDB();\r
441\r
442 VOID RegisterRule (IN CHAR8 *);\r
443 UINT8 GetRuleId (IN CHAR8 *);\r
444};\r
445\r
4234283c
LG
446class CVfrStringDB {\r
447private:\r
448 CHAR8 *mStringFileName;\r
449\r
450 EFI_STATUS FindStringBlock (\r
451 IN UINT8 *StringData,\r
452 IN EFI_STRING_ID StringId,\r
453 OUT UINT32 *StringTextOffset,\r
454 OUT UINT8 *BlockType\r
455 );\r
456\r
457 UINT32 GetUnicodeStringTextSize (\r
458 IN UINT8 *StringSrc\r
459 );\r
64b2609f
LG
460 \r
461 BOOLEAN GetBestLanguage (\r
462 IN CONST CHAR8 *SupportedLanguages,\r
463 IN CHAR8 *Language\r
464 );\r
4234283c
LG
465\r
466public:\r
467 CVfrStringDB ();\r
468 ~CVfrStringDB ();\r
469\r
470 VOID SetStringFileName (\r
471 IN CHAR8 *StringFileName\r
472 );\r
473\r
474 CHAR8 * GetVarStoreNameFormStringId (\r
475 IN EFI_STRING_ID StringId\r
476 );\r
477\r
478};\r
479\r
30fdf114 480#endif\r