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