]> git.proxmox.com Git - mirror_edk2.git/blame - EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/HiiDatabase.h
Fix ICC build break properly
[mirror_edk2.git] / EdkCompatibilityPkg / Compatibility / FrameworkHiiOnUefiHiiThunk / HiiDatabase.h
CommitLineData
4259256b 1/**@file\r
2\r
3 This file contains global defines and prototype definitions\r
a3318eaf 4 for the Framework HII to Uefi HII Thunk Module.\r
4259256b 5 \r
6Copyright (c) 2006 - 2008, Intel Corporation\r
7All rights reserved. This program and the accompanying materials\r
8are licensed and made available under the terms and conditions of the BSD License\r
9which accompanies this distribution. The full text of the license may be found at\r
10http://opensource.org/licenses/bsd-license.php\r
11\r
12THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
13WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
14\r
15**/\r
16\r
17#ifndef _HIIDATABASE_H\r
18#define _HIIDATABASE_H\r
19\r
20\r
21#include <FrameworkDxe.h>\r
22\r
23#include <Guid/GlobalVariable.h>\r
24#include <Protocol/FrameworkFormCallback.h>\r
25#include <Protocol/FrameworkHii.h>\r
137c54ac 26#include <Protocol/FrameworkFormBrowser.h>\r
4259256b 27\r
28//\r
29// UEFI HII Protocols\r
30//\r
31#include <Protocol/HiiFont.h>\r
32#include <Protocol/HiiImage.h>\r
33#include <Protocol/HiiString.h>\r
34#include <Protocol/HiiDatabase.h>\r
35#include <Protocol/HiiConfigRouting.h>\r
36#include <Protocol/HiiConfigAccess.h>\r
a235abd2 37#include <Protocol/UgaDraw.h>\r
4259256b 38\r
39\r
40#include <Library/BaseLib.h>\r
41#include <Library/DebugLib.h>\r
42#include <Library/UefiDriverEntryPoint.h>\r
43#include <Library/MemoryAllocationLib.h>\r
44#include <Library/BaseMemoryLib.h>\r
45#include <Library/UefiBootServicesTableLib.h>\r
46#include <Library/UefiRuntimeServicesTableLib.h>\r
4259256b 47#include <Library/HiiLib.h>\r
a235abd2 48#include <Library/UefiLib.h>\r
a235abd2 49#include <Library/PcdLib.h>\r
7c9d25ae 50#include <Library/LanguageLib.h>\r
99a83b4c 51\r
7e26c7e7 52#include <Guid/MdeModuleHii.h>\r
59336178 53\r
a9d85320 54#include "UefiIfrParser.h"\r
55\r
a3318eaf 56\r
57//\r
73d1dcbb 58// VARSTORE ID of 0 for Buffer Storage Type Storage is defined as invalid in UEFI 2.1 HII. VARSTORE ID\r
59// 0 is the default VarStore ID for storage without explicit declaration in Framework HII 0.92. EDK II UEFI VFR compiler\r
60// in compatible mode will assign 0x0001 as UEFI VARSTORE ID to this default storage id in Framework VFR without\r
61// VARSTORE declaration.\r
62// \r
63// In addition, the Name of Default VarStore is assumed to be L"Setup" for those storage without explicit VARSTORE declaration in the formset\r
64// by Framework HII. EDK II UEFI VFR compiler in compatible mode hard-coded L"Setup" as VARSTORE name.\r
a3318eaf 65//\r
a9d85320 66#define FRAMEWORK_RESERVED_VARSTORE_ID 0x0001\r
73d1dcbb 67#define FRAMEWORK_RESERVED_VARSTORE_NAME L"Setup"\r
a3318eaf 68\r
974a0271 69///\r
70/// The size of a 3 character ISO639 language code.\r
71///\r
72#define ISO_639_2_ENTRY_SIZE 3\r
73\r
88b6bcec 74#pragma pack (1)\r
4259256b 75typedef struct {\r
70d72ba9 76 EFI_HII_PACK_HEADER FrameworkPackageHeader;\r
4259256b 77 EFI_HII_PACKAGE_HEADER PackageHeader;\r
78} TIANO_AUTOGEN_PACKAGES_HEADER;\r
88b6bcec 79#pragma pack ()\r
4259256b 80\r
0368663f 81#define HII_THUNK_PRIVATE_DATA_FROM_THIS(Record) CR(Record, HII_THUNK_PRIVATE_DATA, Hii, HII_THUNK_PRIVATE_DATA_SIGNATURE)\r
a3a83173 82#define HII_THUNK_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('H', 'i', 'I', 'T')\r
4259256b 83typedef struct {\r
84 UINTN Signature;\r
85 EFI_HANDLE Handle;\r
86 EFI_HII_PROTOCOL Hii;\r
4259256b 87\r
88 //\r
0368663f 89 // The head of link list for all HII_THUNK_CONTEXT.\r
4259256b 90 //\r
0368663f 91 LIST_ENTRY ThunkContextListHead;\r
ea58467b 92\r
ea58467b 93 EFI_HANDLE RemovePackNotifyHandle;\r
94 EFI_HANDLE AddPackNotifyHandle;\r
0368663f 95} HII_THUNK_PRIVATE_DATA;\r
96\r
4259256b 97\r
98\r
0368663f 99\r
100\r
101#define QUESTION_ID_MAP_ENTRY_FROM_LINK(Record) CR(Record, QUESTION_ID_MAP_ENTRY, Link, QUESTION_ID_MAP_ENTRY_SIGNATURE)\r
a3a83173 102#define QUESTION_ID_MAP_ENTRY_SIGNATURE SIGNATURE_32 ('Q', 'I', 'M', 'E')\r
0368663f 103typedef struct {\r
104 UINT32 Signature;\r
105 LIST_ENTRY Link;\r
106 UINT16 FwQId;\r
107 EFI_QUESTION_ID UefiQid;\r
108} QUESTION_ID_MAP_ENTRY;\r
109\r
110\r
111\r
112#define QUESTION_ID_MAP_FROM_LINK(Record) CR(Record, QUESTION_ID_MAP, Link, QUESTION_ID_MAP_SIGNATURE)\r
a3a83173 113#define QUESTION_ID_MAP_SIGNATURE SIGNATURE_32 ('Q', 'I', 'M', 'P')\r
0368663f 114typedef struct {\r
115 UINT32 Signature;\r
116 LIST_ENTRY Link;\r
117 UINT16 VarStoreId;\r
118 UINTN VarSize;\r
119 LIST_ENTRY MapEntryListHead;\r
120} QUESTION_ID_MAP;\r
121\r
122\r
123\r
124#define HII_THUNK_CONTEXT_FROM_LINK(Record) CR(Record, HII_THUNK_CONTEXT, Link, HII_THUNK_CONTEXT_SIGNATURE)\r
a3a83173 125#define HII_THUNK_CONTEXT_SIGNATURE SIGNATURE_32 ('H', 'T', 'H', 'M')\r
0368663f 126typedef struct {\r
127 LIST_ENTRY Link;\r
4259256b 128 UINT32 Signature;\r
0368663f 129 FRAMEWORK_EFI_HII_HANDLE FwHiiHandle;\r
4259256b 130 EFI_HII_HANDLE UefiHiiHandle;\r
63dd6a96 131 EFI_HANDLE UefiHiiDriverHandle;\r
4259256b 132\r
0368663f 133 UINTN IfrPackageCount;\r
134 UINTN StringPackageCount;\r
135\r
d4775f2a 136 BOOLEAN ByFrameworkHiiNewPack;\r
137\r
4259256b 138 //\r
3321fa09 139 // HII Thunk will use TagGuid to associate the String Package and Form Package togehter.\r
140 // See description for TagGuid. This field is to record if either one of the following condition \r
141 // is TRUE:\r
142 // 1) if ((SharingStringPack == TRUE) && (StringPackageCount != 0 && IfrPackageCount == 0)), then this Package List only \r
143 /// has String Packages and provides Strings to other IFR package.\r
144 // 2) if ((SharingStringPack == TRUE) && (StringPackageCount == 0 && IfrPackageCount != 1)), then this Form Package\r
145 // copied String Packages from other Package List.\r
146 // 3) if ((SharingStringPack == FALSE)), this Package does not provide String Package or copy String Packages from other\r
147 // Package List.\r
148 //\r
149 //\r
150 // When a Hii->NewString() is called for this FwHiiHandle and SharingStringPack is TRUE, then all Package List that sharing\r
151 // the same TagGuid will update or create String in there respective String Packages. If SharingStringPack is FALSE, then\r
152 // only the String from String Packages in this Package List will be updated or created.\r
153 //\r
154 BOOLEAN SharingStringPack;\r
155\r
156 //\r
4259256b 157 // The HII 0.92 version of HII data implementation in EDK 1.03 and 1.04 make an the following assumption\r
158 // in both HII Database implementation and all modules that registering packages:\r
0368663f 159 // If a Package List has only IFR package and no String Package, the IFR package will reference \r
160 // String in another Package List registered with the HII database with the same EFI_HII_PACKAGES.GuidId.\r
161 // TagGuid is the used to record this GuidId.\r
4259256b 162 EFI_GUID TagGuid;\r
0368663f 163\r
0368663f 164 UINT8 *NvMapOverride;\r
165\r
a9d85320 166 FORM_BROWSER_FORMSET *FormSet;\r
167\r
0368663f 168} HII_THUNK_CONTEXT;\r
169\r
4259256b 170\r
0368663f 171\r
a3a83173 172#define BUFFER_STORAGE_ENTRY_SIGNATURE SIGNATURE_32 ('H', 'T', 's', 'k')\r
0368663f 173#define BUFFER_STORAGE_ENTRY_FROM_LINK(Record) CR(Record, BUFFER_STORAGE_ENTRY, Link, BUFFER_STORAGE_ENTRY_SIGNATURE)\r
ebbd2793 174typedef struct {\r
0368663f 175 LIST_ENTRY Link;\r
ebbd2793 176 UINT32 Signature;\r
177 EFI_GUID Guid;\r
178 CHAR16 *Name;\r
179 UINTN Size;\r
180 UINT16 VarStoreId;\r
0368663f 181} BUFFER_STORAGE_ENTRY;\r
182\r
f6f910dd 183#pragma pack(1)\r
6d931089
LG
184///\r
185/// HII specific Vendor Device Path Node definition.\r
186///\r
187typedef struct {\r
188 VENDOR_DEVICE_PATH VendorDevicePath;\r
189 UINT32 Reserved;\r
190 UINT64 UniqueId;\r
191} HII_VENDOR_DEVICE_PATH_NODE;\r
ebbd2793 192\r
f6f910dd 193///\r
194/// HII specific Vendor Device Path definition.\r
195///\r
196typedef struct {\r
6d931089 197 HII_VENDOR_DEVICE_PATH_NODE Node;\r
f6f910dd 198 EFI_DEVICE_PATH_PROTOCOL End;\r
199} HII_VENDOR_DEVICE_PATH;\r
f6f910dd 200#pragma pack()\r
0368663f 201\r
a3a83173 202#define CONFIG_ACCESS_PRIVATE_SIGNATURE SIGNATURE_32 ('H', 'T', 'c', 'a')\r
0368663f 203#define CONFIG_ACCESS_PRIVATE_FROM_PROTOCOL(Record) CR(Record, CONFIG_ACCESS_PRIVATE, ConfigAccessProtocol, CONFIG_ACCESS_PRIVATE_SIGNATURE)\r
ebbd2793 204typedef struct {\r
205 UINT32 Signature;\r
206 EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccessProtocol;\r
0368663f 207 //\r
208 // Framework's callback\r
209 //\r
210 EFI_FORM_CALLBACK_PROTOCOL *FormCallbackProtocol;\r
211\r
0368663f 212 HII_THUNK_CONTEXT *ThunkContext;\r
213} CONFIG_ACCESS_PRIVATE;\r
214\r
215\r
ebbd2793 216\r
a3a83173 217#define EFI_FORMBROWSER_THUNK_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('F', 'B', 'T', 'd')\r
0368663f 218#define EFI_FORMBROWSER_THUNK_PRIVATE_DATA_FROM_THIS(Record) CR(Record, EFI_FORMBROWSER_THUNK_PRIVATE_DATA, FormBrowser, EFI_FORMBROWSER_THUNK_PRIVATE_DATA_SIGNATURE)\r
137c54ac 219typedef struct {\r
220 UINTN Signature;\r
221 EFI_HANDLE Handle;\r
0368663f 222 HII_THUNK_PRIVATE_DATA *ThunkPrivate;\r
137c54ac 223 EFI_FORM_BROWSER_PROTOCOL FormBrowser;\r
224} EFI_FORMBROWSER_THUNK_PRIVATE_DATA;\r
225\r
226\r
4259256b 227//\r
228// Extern Variables\r
229//\r
59336178 230extern CONST EFI_HII_DATABASE_PROTOCOL *mHiiDatabase;\r
59336178 231extern CONST EFI_HII_IMAGE_PROTOCOL *mHiiImageProtocol;\r
232extern CONST EFI_HII_STRING_PROTOCOL *mHiiStringProtocol;\r
133a9dfb 233extern CONST EFI_HII_FONT_PROTOCOL *mHiiFontProtocol;\r
59336178 234extern CONST EFI_HII_CONFIG_ROUTING_PROTOCOL *mHiiConfigRoutingProtocol;\r
0368663f 235extern CONST EFI_FORM_BROWSER2_PROTOCOL *mFormBrowser2Protocol;\r
4259256b 236\r
0368663f 237extern HII_THUNK_PRIVATE_DATA *mHiiThunkPrivateData;\r
238\r
239extern BOOLEAN mInFrameworkUpdatePakcage;\r
ea58467b 240\r
241\r
4259256b 242EFI_STATUS\r
243EFIAPI\r
244HiiNewPack (\r
a3318eaf 245 IN EFI_HII_PROTOCOL *This,\r
246 IN EFI_HII_PACKAGES *PackageList,\r
247 OUT FRAMEWORK_EFI_HII_HANDLE *Handle\r
e00e1d46 248 );\r
4259256b 249\r
250EFI_STATUS\r
251EFIAPI\r
252HiiRemovePack (\r
a3318eaf 253 IN EFI_HII_PROTOCOL *This,\r
4259256b 254 IN FRAMEWORK_EFI_HII_HANDLE Handle\r
e00e1d46 255 );\r
4259256b 256\r
257EFI_STATUS\r
258EFIAPI\r
259HiiFindHandles (\r
a3318eaf 260 IN EFI_HII_PROTOCOL *This,\r
261 IN OUT UINT16 *HandleBufferLength,\r
262 OUT FRAMEWORK_EFI_HII_HANDLE *Handle\r
e00e1d46 263 );\r
4259256b 264\r
265EFI_STATUS\r
266EFIAPI\r
267HiiExportDatabase (\r
a3318eaf 268 IN EFI_HII_PROTOCOL *This,\r
269 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
270 IN OUT UINTN *BufferSize,\r
271 OUT VOID *Buffer\r
e00e1d46 272 );\r
4259256b 273\r
274EFI_STATUS\r
275EFIAPI\r
276HiiGetGlyph (\r
a3318eaf 277 IN EFI_HII_PROTOCOL *This,\r
278 IN CHAR16 *Source,\r
279 IN OUT UINT16 *Index,\r
280 OUT UINT8 **GlyphBuffer,\r
281 OUT UINT16 *BitWidth,\r
282 IN OUT UINT32 *InternalStatus\r
e00e1d46 283 );\r
4259256b 284\r
285EFI_STATUS\r
286EFIAPI\r
287HiiGlyphToBlt (\r
288 IN EFI_HII_PROTOCOL *This,\r
289 IN UINT8 *GlyphBuffer,\r
290 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Foreground,\r
291 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background,\r
292 IN UINTN Count,\r
293 IN UINTN Width,\r
294 IN UINTN Height,\r
295 IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer\r
e00e1d46 296 );\r
4259256b 297\r
298EFI_STATUS\r
299EFIAPI\r
300HiiNewString (\r
301 IN EFI_HII_PROTOCOL *This,\r
302 IN CHAR16 *Language,\r
303 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
304 IN OUT STRING_REF *Reference,\r
305 IN CHAR16 *NewString\r
e00e1d46 306 );\r
4259256b 307\r
308EFI_STATUS\r
309EFIAPI\r
cdaf7905 310HiiThunkGetString (\r
a3318eaf 311 IN EFI_HII_PROTOCOL *This,\r
312 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
313 IN STRING_REF Token,\r
314 IN BOOLEAN Raw,\r
315 IN CHAR16 *LanguageString,\r
316 IN OUT UINTN *BufferLength,\r
317 OUT EFI_STRING StringBuffer\r
e00e1d46 318 );\r
4259256b 319\r
320EFI_STATUS\r
321EFIAPI\r
322HiiResetStrings (\r
a3318eaf 323 IN EFI_HII_PROTOCOL *This,\r
324 IN FRAMEWORK_EFI_HII_HANDLE Handle\r
e00e1d46 325 );\r
4259256b 326\r
327EFI_STATUS\r
328EFIAPI\r
329HiiTestString (\r
a3318eaf 330 IN EFI_HII_PROTOCOL *This,\r
331 IN CHAR16 *StringToTest,\r
332 IN OUT UINT32 *FirstMissing,\r
333 OUT UINT32 *GlyphBufferSize\r
e00e1d46 334 );\r
4259256b 335\r
336EFI_STATUS\r
337EFIAPI\r
338HiiGetPrimaryLanguages (\r
a3318eaf 339 IN EFI_HII_PROTOCOL *This,\r
340 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
341 OUT EFI_STRING *LanguageString\r
e00e1d46 342 );\r
4259256b 343\r
344EFI_STATUS\r
345EFIAPI\r
346HiiGetSecondaryLanguages (\r
a3318eaf 347 IN EFI_HII_PROTOCOL *This,\r
348 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
349 IN CHAR16 *PrimaryLanguage,\r
350 OUT EFI_STRING *LanguageString\r
e00e1d46 351 );\r
4259256b 352\r
353EFI_STATUS\r
354EFIAPI\r
355HiiGetLine (\r
a3318eaf 356 IN EFI_HII_PROTOCOL *This,\r
4259256b 357 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
a3318eaf 358 IN STRING_REF Token,\r
359 IN OUT UINT16 *Index,\r
360 IN UINT16 LineWidth,\r
361 IN CHAR16 *LanguageString,\r
362 IN OUT UINT16 *BufferLength,\r
363 OUT EFI_STRING StringBuffer\r
e00e1d46 364 );\r
4259256b 365\r
366EFI_STATUS\r
367EFIAPI\r
368HiiGetForms (\r
a3318eaf 369 IN EFI_HII_PROTOCOL *This,\r
4259256b 370 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
a3318eaf 371 IN EFI_FORM_ID FormId,\r
372 IN OUT UINTN *BufferLength,\r
373 OUT UINT8 *Buffer\r
e00e1d46 374 );\r
4259256b 375\r
376EFI_STATUS\r
377EFIAPI\r
378HiiGetDefaultImage (\r
a3318eaf 379 IN EFI_HII_PROTOCOL *This,\r
380 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
381 IN UINTN DefaultMask,\r
382 OUT EFI_HII_VARIABLE_PACK_LIST **VariablePackList\r
e00e1d46 383 );\r
4259256b 384\r
385EFI_STATUS\r
386EFIAPI\r
cdaf7905 387HiiThunkUpdateForm (\r
a3318eaf 388 IN EFI_HII_PROTOCOL *This,\r
389 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
390 IN EFI_FORM_LABEL Label,\r
391 IN BOOLEAN AddData,\r
392 IN FRAMEWORK_EFI_HII_UPDATE_DATA *Data\r
e00e1d46 393 );\r
4259256b 394\r
395EFI_STATUS\r
396EFIAPI\r
397HiiGetKeyboardLayout (\r
a3318eaf 398 IN EFI_HII_PROTOCOL *This,\r
399 OUT UINT16 *DescriptorCount,\r
400 OUT FRAMEWORK_EFI_KEY_DESCRIPTOR *Descriptor\r
e00e1d46 401 );\r
4259256b 402\r
137c54ac 403EFI_STATUS\r
404EFIAPI \r
405ThunkSendForm (\r
406 IN EFI_FORM_BROWSER_PROTOCOL *This,\r
407 IN BOOLEAN UseDatabase,\r
408 IN FRAMEWORK_EFI_HII_HANDLE *Handle,\r
409 IN UINTN HandleCount,\r
a3318eaf 410 IN FRAMEWORK_EFI_IFR_PACKET *Packet, OPTIONAL\r
137c54ac 411 IN EFI_HANDLE CallbackHandle, OPTIONAL\r
412 IN UINT8 *NvMapOverride, OPTIONAL\r
a3318eaf 413 IN FRAMEWORK_EFI_SCREEN_DESCRIPTOR *ScreenDimensions, OPTIONAL\r
137c54ac 414 OUT BOOLEAN *ResetRequired OPTIONAL\r
e00e1d46 415 );\r
137c54ac 416\r
417EFI_STATUS\r
418EFIAPI \r
419ThunkCreatePopUp (\r
a5420536 420 IN UINTN LinesNumber,\r
137c54ac 421 IN BOOLEAN HotKey,\r
422 IN UINTN MaximumStringSize,\r
423 OUT CHAR16 *StringBuffer,\r
a5420536
LG
424 OUT EFI_INPUT_KEY *Key,\r
425 IN CHAR16 *FirstString,\r
137c54ac 426 ...\r
e00e1d46 427 );\r
137c54ac 428\r
0368663f 429EFI_STATUS\r
430EFIAPI\r
431RemovePackNotify (\r
432 IN UINT8 PackageType,\r
433 IN CONST EFI_GUID *PackageGuid,\r
434 IN CONST EFI_HII_PACKAGE_HEADER *Package,\r
435 IN EFI_HII_HANDLE Handle,\r
436 IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType\r
e00e1d46 437 );\r
0368663f 438\r
439EFI_STATUS\r
440EFIAPI\r
441NewOrAddPackNotify (\r
442 IN UINT8 PackageType,\r
443 IN CONST EFI_GUID *PackageGuid,\r
444 IN CONST EFI_HII_PACKAGE_HEADER *Package,\r
445 IN EFI_HII_HANDLE Handle,\r
446 IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType\r
e00e1d46 447 );\r
0368663f 448\r
03254710 449/**\r
a5420536 450 Create a Hii Update data Handle used to call IfrLibUpdateForm.\r
03254710 451\r
a5420536
LG
452 @param ThunkContext The HII Thunk Context.\r
453 @param FwUpdateData The Framework Update Data.\r
454 @param UefiOpCodeHandle The UEFI Update Data.\r
03254710 455\r
456 @retval EFI_SUCCESS The UEFI Update Data is created successfully.\r
457 @retval EFI_UNSUPPORTED There is unsupported opcode in FwUpdateData.\r
458 @retval EFI_OUT_OF_RESOURCES There is not enough resource.\r
459**/\r
460EFI_STATUS\r
461FwUpdateDataToUefiUpdateData (\r
462 IN HII_THUNK_CONTEXT *ThunkContext,\r
463 IN CONST FRAMEWORK_EFI_HII_UPDATE_DATA *FwUpdateData,\r
a5420536 464 IN VOID *UefiOpCodeHandle\r
03254710 465 )\r
466;\r
467\r
a235abd2 468/** \r
469\r
470 Initialize string packages in HII database.\r
471\r
472**/\r
473VOID\r
474InitSetBrowserStrings (\r
475 VOID\r
476 )\r
477;\r
478\r
ad5a96ab 479/**\r
8cf6dad8 480 Convert language code from RFC4646 to ISO639-2.\r
ad5a96ab 481\r
8cf6dad8 482 LanguageRfc4646 contain a single RFC 4646 code such as\r
ad5a96ab 483 "en-US" or "fr-FR".\r
484\r
8cf6dad8 485 The LanguageRfc4646 must be a buffer large enough\r
ad5a96ab 486 for ISO_639_2_ENTRY_SIZE characters.\r
487\r
8cf6dad8 488 If LanguageRfc4646 is NULL, then ASSERT.\r
ad5a96ab 489 If LanguageIso639 is NULL, then ASSERT.\r
490\r
8cf6dad8 491 @param LanguageRfc4646 RFC4646 language code.\r
ad5a96ab 492 @param LanguageIso639 ISO639-2 language code.\r
493\r
494 @retval EFI_SUCCESS Language code converted.\r
495 @retval EFI_NOT_FOUND Language code not found.\r
496\r
497**/\r
498EFI_STATUS\r
499EFIAPI\r
8cf6dad8 500ConvertRfc4646LanguageToIso639Language (\r
501 IN CHAR8 *LanguageRfc4646,\r
ad5a96ab 502 OUT CHAR8 *LanguageIso639\r
503 )\r
504;\r
505\r
506/**\r
8cf6dad8 507 Convert language code from ISO639-2 to RFC4646 and return the converted language.\r
ad5a96ab 508 Caller is responsible for freeing the allocated buffer.\r
509\r
510 LanguageIso639 contain a single ISO639-2 code such as\r
511 "eng" or "fra".\r
512\r
513 If LanguageIso639 is NULL, then ASSERT.\r
8cf6dad8 514 If LanguageRfc4646 is NULL, then ASSERT.\r
ad5a96ab 515\r
516 @param LanguageIso639 ISO639-2 language code.\r
517\r
518 @return the allocated buffer or NULL, if the language is not found.\r
519\r
520**/\r
521CHAR8*\r
522EFIAPI\r
8cf6dad8 523ConvertIso639LanguageToRfc4646Language (\r
ad5a96ab 524 IN CONST CHAR8 *LanguageIso639\r
525 )\r
526;\r
527\r
0f268521 528/**\r
529 Get next language from language code list (with separator ';').\r
530\r
531 If LangCode is NULL, then ASSERT.\r
532 If Lang is NULL, then ASSERT.\r
533\r
534 @param LangCode On input: point to first language in the list. On\r
535 output: point to next language in the list, or\r
536 NULL if no more language in the list.\r
537 @param Lang The first language in the list.\r
538\r
539**/\r
540VOID\r
541EFIAPI\r
542GetNextLanguage (\r
543 IN OUT CHAR8 **LangCode,\r
544 OUT CHAR8 *Lang\r
545 )\r
546;\r
547\r
ee3428bb 548#include "Utility.h"\r
ebbd2793 549#include "ConfigAccess.h"\r
ee3428bb 550\r
4259256b 551#endif\r