#ifndef __HII_LIB_H__\r
#define __HII_LIB_H__\r
\r
-//\r
-// Limited buffer size recommended by RFC4646 (4.3. Length Considerations)\r
-// (42 characters plus a NULL terminator)\r
-//\r
+///\r
+/// Limited buffer size recommended by RFC4646 (4.3. Length Considerations)\r
+/// (42 characters plus a NULL terminator)\r
+///\r
#define RFC_3066_ENTRY_SIZE (42 + 1)\r
\r
#define ISO_639_2_ENTRY_SIZE 3\r
IN UINTN NumberOfPackages,\r
IN CONST EFI_GUID *GuidId,\r
...\r
- )\r
-;\r
+ );\r
\r
/**\r
This function allocates pool for an EFI_HII_PACKAGE_LIST structure\r
\r
If HiiHandle is NULL, then ASSERT.\r
\r
- @param NumberOfPackages The number of HII packages to register.\r
- @param GuidId Package List GUID ID.\r
- @param EFI_HANDLE Optional. If not NULL, the DriverHandle on which an instance of DEVICE_PATH_PROTOCOL is installed.\r
- This DriverHandle uniquely defines the device that the added packages are associated with.\r
- @param HiiHandle On output, the HiiHandle is update with the handle which can be used to retrieve the Package \r
- List later. If the functions failed to add the package to the default HII database, this value will\r
- be set to NULL.\r
- @param ... The variable argument list describing all HII Package.\r
+ @param NumberOfPackages The number of HII packages to register.\r
+ @param GuidId Package List GUID ID.\r
+ @param DriverHandle Optional. If not NULL, the DriverHandle on which an instance of DEVICE_PATH_PROTOCOL is installed.\r
+ This DriverHandle uniquely defines the device that the added packages are associated with.\r
+ @param HiiHandle On output, the HiiHandle is update with the handle which can be used to retrieve the Package \r
+ List later. If the functions failed to add the package to the default HII database, this value will\r
+ be set to NULL.\r
+ @param ... The variable argument list describing all HII Package.\r
\r
@return EFI_SUCCESS If the packages are successfully added to the default HII database.\r
@return EFI_OUT_OF_RESOURCE Not enough resource to complete the operation.\r
IN EFI_HANDLE DriverHandle, OPTIONAL\r
OUT EFI_HII_HANDLE *HiiHandle,\r
...\r
- )\r
-;\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-HiiLibAddFontPackageToHiiDatabase (\r
- IN UINTN FontSize,\r
- IN CONST UINT8 *FontBinary,\r
- IN CONST EFI_GUID *GuidId,\r
- OUT EFI_HII_HANDLE *HiiHandle OPTIONAL\r
- )\r
-;\r
+ );\r
\r
/**\r
Removes a package list from the default HII database.\r
@param HiiHandle The handle that was previously registered to the data base that is requested for removal.\r
List later.\r
\r
- @return VOID\r
-\r
**/\r
VOID\r
EFIAPI\r
HiiLibRemovePackages (\r
IN EFI_HII_HANDLE HiiHandle\r
- )\r
-;\r
+ );\r
\r
/**\r
This function adds the string into String Package of each language\r
IN EFI_HII_HANDLE PackageList,\r
OUT EFI_STRING_ID *StringId,\r
IN CONST EFI_STRING String\r
- )\r
-;\r
+ );\r
\r
/**\r
This function update the specified string in String Package of each language\r
IN EFI_HII_HANDLE PackageList,\r
IN EFI_STRING_ID StringId,\r
IN CONST EFI_STRING String\r
- )\r
-;\r
+ );\r
\r
/**\r
This function try to retrieve string from String package of current language.\r
If fails, it try to retrieve string from String package of first language it support.\r
\r
- If String is NULL, then ASSERT.\r
If StringSize is NULL, then ASSERT.\r
+ If String is NULL and *StringSize is not 0, then ASSERT.\r
If PackageList could not be found in the default HII database, then ASSERT.\r
If StringId is not found in PackageList, then ASSERT.\r
\r
@retval EFI_NOT_FOUND The string specified by StringId is not available.\r
@retval EFI_BUFFER_TOO_SMALL The buffer specified by StringLength is too small\r
to hold the string.\r
- @retval EFI_INVALID_PARAMETER The String or StringSize was NULL.\r
\r
**/\r
-\r
EFI_STATUS\r
EFIAPI\r
HiiLibGetString (\r
IN EFI_STRING_ID StringId,\r
OUT EFI_STRING String,\r
IN OUT UINTN *StringSize\r
- )\r
-;\r
+ );\r
\r
/**\r
Get string specified by StringId form the HiiHandle. The caller\r
IN EFI_HII_HANDLE HiiHandle,\r
IN EFI_STRING_ID StringId,\r
OUT EFI_STRING *String\r
- )\r
-;\r
+ );\r
\r
/**\r
Get the string given the StringId and String package Producer's Guid. The caller\r
IN EFI_GUID *ProducerGuid,\r
IN EFI_STRING_ID StringId,\r
OUT EFI_STRING *String\r
- )\r
-;\r
+ );\r
\r
/**\r
Determines the handles that are currently active in the database.\r
If HandleBufferLength is NULL, then ASSERT.\r
If HiiHandleBuffer is NULL, then ASSERT.\r
\r
- @param HiiDatabase A pointer to the EFI_HII_DATABASE_PROTOCOL\r
- instance.\r
@param HandleBufferLength On input, a pointer to the length of the handle\r
buffer. On output, the length of the handle buffer\r
that is required for the handles found.\r
HiiLibGetHiiHandles (\r
IN OUT UINTN *HandleBufferLength,\r
OUT EFI_HII_HANDLE **HiiHandleBuffer\r
- )\r
-;\r
+ );\r
\r
/**\r
Extract Hii package list GUID for given HII handle.\r
If HiiHandle could not be found in the default HII database, then ASSERT.\r
If Guid is NULL, then ASSERT.\r
\r
- @param HiiHandle Hii handle\r
- @param Guid Package list GUID\r
+ @param Handle Hii handle\r
+ @param Guid Package list GUID\r
\r
@retval EFI_SUCCESS Successfully extract GUID from Hii database.\r
\r
HiiLibExtractGuidFromHiiHandle (\r
IN EFI_HII_HANDLE Handle,\r
OUT EFI_GUID *Guid\r
- )\r
-;\r
+ );\r
\r
/**\r
Find HII Handle in the default HII database associated with given Device Path.\r
EFIAPI\r
HiiLibDevicePathToHiiHandle (\r
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
EFIAPI\r
HiiLibGetCurrentLanguage (\r
OUT CHAR8 *Lang\r
- )\r
-;\r
+ );\r
\r
/**\r
Get next language from language code list (with separator ';').\r
HiiLibGetNextLanguage (\r
IN OUT CHAR8 **LangCode,\r
OUT CHAR8 *Lang\r
- )\r
-;\r
+ );\r
\r
/**\r
This function returns the list of supported languages, in the format specified\r
in UEFI specification Appendix M.\r
\r
If HiiHandle is not a valid Handle in the default HII database, then ASSERT.\r
- If not enough resource to complete the operation, then ASSERT.\r
\r
@param HiiHandle The HII package list handle.\r
\r
- @return The supported languages.\r
+ @retval !NULL The supported languages.\r
+ @retval NULL If Supported Languages can not be retrived.\r
\r
**/\r
CHAR8 *\r
EFIAPI\r
HiiLibGetSupportedLanguages (\r
IN EFI_HII_HANDLE HiiHandle\r
- )\r
-;\r
+ );\r
+\r
+/**\r
+ This function returns the list of supported 2nd languages, in the format specified\r
+ in UEFI specification Appendix M.\r
+\r
+ If HiiHandle is not a valid Handle in the default HII database, then ASSERT.\r
+ If not enough resource to complete the operation, then ASSERT.\r
+\r
+ @param HiiHandle The HII package list handle.\r
+ @param FirstLanguage Pointer to language name buffer.\r
+ \r
+ @return The supported languages.\r
+\r
+**/\r
+CHAR8 *\r
+EFIAPI\r
+HiiLibGetSupportedSecondaryLanguages (\r
+ IN EFI_HII_HANDLE HiiHandle,\r
+ IN CONST CHAR8 *FirstLanguage\r
+ );\r
+\r
\r
/**\r
This function returns the number of supported languages on HiiHandle.\r
EFIAPI\r
HiiLibGetSupportedLanguageNumber (\r
IN EFI_HII_HANDLE HiiHandle\r
- )\r
-;\r
+ );\r
+\r
+/**\r
+ Exports the contents of one or all package lists in the HII database into a buffer.\r
+\r
+ If Handle is not NULL and not a valid EFI_HII_HANDLE registered in the database, \r
+ then ASSERT.\r
+ If PackageListHeader is NULL, then ASSERT.\r
+ If PackageListSize is NULL, then ASSERT.\r
+\r
+ @param Handle The HII Handle.\r
+ @param PackageListHeader A pointer to a buffer that will contain the results of \r
+ the export function.\r
+ @param PackageListSize On output, the length of the buffer that is required for the exported data.\r
+\r
+ @retval EFI_SUCCESS Package exported.\r
+\r
+ @retval EFI_OUT_OF_RESOURCES Not enought memory to complete the operations.\r
+\r
+**/\r
+EFI_STATUS \r
+EFIAPI\r
+HiiLibExportPackageLists (\r
+ IN EFI_HII_HANDLE Handle,\r
+ OUT EFI_HII_PACKAGE_LIST_HEADER **PackageListHeader,\r
+ OUT UINTN *PackageListSize\r
+ );\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+HiiLibListPackageLists (\r
+ IN UINT8 PackageType,\r
+ IN CONST EFI_GUID *PackageGuid,\r
+ IN OUT UINTN *HandleBufferLength,\r
+ OUT EFI_HII_HANDLE **Handle\r
+ );\r
\r
/**\r
Convert language code from RFC3066 to ISO639-2.\r
\r
+ LanguageRfc3066 contain a single RFC 3066 code such as\r
+ "en-US" or "fr-FR".\r
+\r
+ The LanguageRfc3066 must be a buffer large enough\r
+ for ISO_639_2_ENTRY_SIZE characters.\r
+\r
If LanguageRfc3066 is NULL, then ASSERT.\r
If LanguageIso639 is NULL, then ASSERT.\r
\r
EFI_STATUS\r
EFIAPI\r
ConvertRfc3066LanguageToIso639Language (\r
- CHAR8 *LanguageRfc3066,\r
- CHAR8 *LanguageIso639\r
- )\r
-;\r
+ IN CHAR8 *LanguageRfc3066,\r
+ OUT CHAR8 *LanguageIso639\r
+ );\r
+\r
+/**\r
+ Convert language code from ISO639-2 to RFC3066.\r
+\r
+ LanguageIso639 contain a single ISO639-2 code such as\r
+ "eng" or "fra".\r
+\r
+ The LanguageRfc3066 must be a buffer large enough\r
+ for RFC_3066_ENTRY_SIZE characters.\r
+\r
+ If LanguageIso639 is NULL, then ASSERT.\r
+ If LanguageRfc3066 is NULL, then ASSERT.\r
+\r
+ @param LanguageIso639 ISO639-2 language code.\r
+ @param LanguageRfc3066 RFC3066 language code.\r
+\r
+ @retval EFI_SUCCESS Language code converted.\r
+ @retval EFI_NOT_FOUND Language code not found.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+ConvertIso639LanguageToRfc3066Language (\r
+ IN CONST CHAR8 *LanguageIso639,\r
+ OUT CHAR8 *LanguageRfc3066\r
+ );\r
\r
/**\r
Convert language code list from RFC3066 to ISO639-2, e.g. "en-US;fr-FR" will\r
EFIAPI\r
Rfc3066ToIso639 (\r
CHAR8 *SupportedLanguages\r
- )\r
-;\r
+ );\r
\r
#endif\r