]> git.proxmox.com Git - mirror_edk2.git/blame - MdePkg/Include/Protocol/HiiString.h
Update the copyright notice format
[mirror_edk2.git] / MdePkg / Include / Protocol / HiiString.h
CommitLineData
d1f95000 1/** @file\r
2 The file provides services to manipulate string data.\r
3 \r
9df063a0 4Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
af2dc6a7 5This program and the accompanying materials are licensed and made available under \r
6the terms and conditions of the BSD License that accompanies this distribution. \r
7The full text of the license may be found at\r
8http://opensource.org/licenses/bsd-license.php. \r
9 \r
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
d1f95000 12\r
d1f95000 13**/\r
14\r
15#ifndef __HII_STRING_H__\r
16#define __HII_STRING_H__\r
17\r
7d582d6b 18#include <Protocol/HiiFont.h>\r
19\r
1e966f63 20#define EFI_HII_STRING_PROTOCOL_GUID \\r
21 { 0xfd96974, 0x23aa, 0x4cdc, { 0xb9, 0xcb, 0x98, 0xd1, 0x77, 0x50, 0x32, 0x2a } }\r
d1f95000 22\r
23typedef struct _EFI_HII_STRING_PROTOCOL EFI_HII_STRING_PROTOCOL;\r
24\r
d1f95000 25/**\r
4ca9b6c4 26 This function adds the string String to the group of strings owned by PackageList, with the\r
af2dc6a7 27 specified font information StringFontInfo, and returns a new string id.\r
d6a82eaf
LG
28 The new string identifier is guaranteed to be unique within the package list. \r
29 That new string identifier is reserved for all languages in the package list. \r
4ca9b6c4
LG
30\r
31 @param This A pointer to the EFI_HII_STRING_PROTOCOL instance.\r
af2dc6a7 32 @param PackageList The handle of the package list where this string will\r
4ca9b6c4
LG
33 be added.\r
34 @param StringId On return, contains the new strings id, which is\r
35 unique within PackageList.\r
36 @param Language Points to the language for the new string.\r
37 @param LanguageName Points to the printable language name to associate\r
38 with the passed in Language field.If LanguageName\r
39 is not NULL and the string package header's\r
40 LanguageName associated with a given Language is\r
af2dc6a7 41 not zero, the LanguageName being passed in will\r
4ca9b6c4
LG
42 be ignored.\r
43 @param String Points to the new null-terminated string.\r
44 @param StringFontInfo Points to the new string's font information or\r
45 NULL if the string should have the default system\r
46 font, size and style.\r
47\r
48 @retval EFI_SUCCESS The new string was added successfully.\r
49 @retval EFI_NOT_FOUND The specified PackageList could not be found in\r
50 database.\r
51 @retval EFI_OUT_OF_RESOURCES Could not add the string due to lack of resources.\r
af2dc6a7 52 @retval EFI_INVALID_PARAMETER String is NULL, or StringId is NULL, or Language is NULL.\r
4ca9b6c4
LG
53 @retval EFI_INVALID_PARAMETER The specified StringFontInfo does not exist in\r
54 current database.\r
d1f95000 55\r
56**/\r
57typedef\r
58EFI_STATUS\r
8b13229b 59(EFIAPI *EFI_HII_NEW_STRING)(\r
d1f95000 60 IN CONST EFI_HII_STRING_PROTOCOL *This,\r
7d582d6b 61 IN EFI_HII_HANDLE PackageList,\r
62 OUT EFI_STRING_ID *StringId,\r
d1f95000 63 IN CONST CHAR8 *Language,\r
7d582d6b 64 IN CONST CHAR16 *LanguageName, OPTIONAL \r
d1f95000 65 IN CONST EFI_STRING String,\r
7d582d6b 66 IN CONST EFI_FONT_INFO *StringFontInfo OPTIONAL\r
d1f95000 67);\r
68\r
69\r
70/**\r
4ca9b6c4
LG
71 This function retrieves the string specified by StringId which is associated\r
72 with the specified PackageList in the language Language and copies it into\r
73 the buffer specified by String.\r
74\r
75 @param This A pointer to the EFI_HII_STRING_PROTOCOL instance.\r
76 @param Language Points to the language for the retrieved string.\r
77 @param PackageList The package list in the HII database to search for\r
78 the specified string.\r
79 @param StringId The string's id, which is unique within\r
80 PackageList.\r
81 @param String Points to the new null-terminated string.\r
82 @param StringSize On entry, points to the size of the buffer pointed\r
83 to by String, in bytes. On return, points to the\r
84 length of the string, in bytes.\r
85 @param StringFontInfo If not NULL, points to the string's font\r
86 information. It's caller's responsibility to free\r
87 this buffer.\r
88\r
89 @retval EFI_SUCCESS The string was returned successfully.\r
90 @retval EFI_NOT_FOUND The string specified by StringId is not available.\r
91 @retval EFI_NOT_FOUND The string specified by StringId is available but\r
92 not in the specified language.\r
93 The specified PackageList is not in the database.\r
94 @retval EFI_BUFFER_TOO_SMALL The buffer specified by StringSize is too small to\r
95 hold the string.\r
96 @retval EFI_INVALID_PARAMETER The String or Language or StringSize was NULL.\r
97 @retval EFI_OUT_OF_RESOURCES There were insufficient resources to complete the\r
98 request.\r
d1f95000 99\r
d1f95000 100**/\r
101typedef\r
102EFI_STATUS\r
8b13229b 103(EFIAPI *EFI_HII_GET_STRING)(\r
d1f95000 104 IN CONST EFI_HII_STRING_PROTOCOL *This,\r
105 IN CONST CHAR8 *Language,\r
7d582d6b 106 IN EFI_HII_HANDLE PackageList,\r
107 IN EFI_STRING_ID StringId,\r
d1f95000 108 OUT EFI_STRING String,\r
7d582d6b 109 IN OUT UINTN *StringSize,\r
110 OUT EFI_FONT_INFO **StringFontInfo OPTIONAL\r
d1f95000 111);\r
112\r
113/**\r
4ca9b6c4
LG
114 This function updates the string specified by StringId in the specified PackageList to the text\r
115 specified by String and, optionally, the font information specified by StringFontInfo.\r
116\r
117 @param This A pointer to the EFI_HII_STRING_PROTOCOL instance.\r
118 @param PackageList The package list containing the strings.\r
119 @param StringId The string's id, which is unique within\r
120 PackageList.\r
121 @param Language Points to the language for the updated string.\r
122 @param String Points to the new null-terminated string.\r
123 @param StringFontInfo Points to the string's font information or NULL if\r
124 the string font information is not changed.\r
125\r
126 @retval EFI_SUCCESS The string was updated successfully.\r
127 @retval EFI_NOT_FOUND The string specified by StringId is not in the\r
128 database.\r
129 @retval EFI_INVALID_PARAMETER The String or Language was NULL.\r
130 @retval EFI_INVALID_PARAMETER The specified StringFontInfo does not exist in\r
131 current database.\r
132 @retval EFI_OUT_OF_RESOURCES The system is out of resources to accomplish the\r
133 task.\r
d1f95000 134\r
135**/\r
136typedef\r
137EFI_STATUS\r
8b13229b 138(EFIAPI *EFI_HII_SET_STRING)(\r
d1f95000 139 IN CONST EFI_HII_STRING_PROTOCOL *This,\r
7d582d6b 140 IN EFI_HII_HANDLE PackageList,\r
141 IN EFI_STRING_ID StringId,\r
d1f95000 142 IN CONST CHAR8 *Language,\r
7d582d6b 143 IN EFI_STRING String,\r
d1f95000 144 IN CONST EFI_FONT_INFO *StringFontInfo OPTIONAL\r
145);\r
146\r
147\r
148/**\r
d1f95000 149 This function returns the list of supported languages.\r
150\r
4ca9b6c4
LG
151 @param This A pointer to the EFI_HII_STRING_PROTOCOL instance.\r
152 @param PackageList The package list to examine.\r
153 @param Languages Points to the buffer to hold the returned string.\r
154 @param LanguagesSize On entry, points to the size of the buffer pointed\r
155 to by Languages, in bytes. On return, points to\r
156 the length of Languages, in bytes.\r
157\r
158 @retval EFI_SUCCESS The languages were returned successfully.\r
159 @retval EFI_INVALID_PARAMETER The Languages or LanguagesSize was NULL.\r
160 @retval EFI_BUFFER_TOO_SMALL The LanguagesSize is too small to hold the list of\r
161 supported languages. LanguageSize is updated to\r
162 contain the required size.\r
163 @retval EFI_NOT_FOUND Could not find string package in specified\r
164 packagelist.\r
d1f95000 165\r
166**/\r
167typedef\r
168EFI_STATUS\r
8b13229b 169(EFIAPI *EFI_HII_GET_LANGUAGES)(\r
7d582d6b 170 IN CONST EFI_HII_STRING_PROTOCOL *This,\r
171 IN EFI_HII_HANDLE PackageList,\r
d1f95000 172 IN OUT CHAR8 *Languages,\r
7d582d6b 173 IN OUT UINTN *LanguagesSize\r
d1f95000 174);\r
175\r
176\r
177/**\r
4ca9b6c4
LG
178 Each string package has associated with it a single primary language and zero\r
179 or more secondary languages. This routine returns the secondary languages\r
180 associated with a package list.\r
181\r
182 @param This A pointer to the EFI_HII_STRING_PROTOCOL instance.\r
183 @param PackageList The package list to examine.\r
184 @param FirstLanguage Points to the primary language.\r
185 @param SecondaryLanguages Points to the buffer to hold the returned list of\r
186 secondary languages for the specified\r
187 FirstLanguage. If there are no secondary\r
188 languages, the function returns successfully, but\r
189 this is set to NULL.\r
190 @param SecondaryLanguagesSize On entry, points to the size of the buffer pointed\r
191 to by SecondaryLanguages, in bytes. On return,\r
192 points to the length of SecondaryLanguages in bytes.\r
193\r
194 @retval EFI_SUCCESS Secondary languages were correctly returned.\r
195 @retval EFI_INVALID_PARAMETER FirstLanguage or SecondaryLanguages or\r
196 SecondaryLanguagesSize was NULL.\r
197 @retval EFI_BUFFER_TOO_SMALL The buffer specified by SecondaryLanguagesSize is\r
198 too small to hold the returned information.\r
199 SecondLanguageSize is updated to hold the size of\r
200 the buffer required.\r
201 @retval EFI_INVALID_LANGUAGE The language specified by FirstLanguage is not\r
202 present in the specified package list.\r
203 @retval EFI_NOT_FOUND The specified PackageList is not in the Database. \r
d1f95000 204\r
205**/\r
206typedef\r
207EFI_STATUS\r
8b13229b 208(EFIAPI *EFI_HII_GET_2ND_LANGUAGES)(\r
7d582d6b 209 IN CONST EFI_HII_STRING_PROTOCOL *This,\r
210 IN EFI_HII_HANDLE PackageList,\r
211 IN CONST CHAR8 *FirstLanguage,\r
d1f95000 212 IN OUT CHAR8 *SecondLanguages,\r
7d582d6b 213 IN OUT UINTN *SecondLanguagesSize\r
d1f95000 214);\r
215\r
216\r
44717a39 217///\r
218/// Services to manipulate the string.\r
219///\r
d1f95000 220struct _EFI_HII_STRING_PROTOCOL {\r
221 EFI_HII_NEW_STRING NewString;\r
222 EFI_HII_GET_STRING GetString;\r
223 EFI_HII_SET_STRING SetString;\r
224 EFI_HII_GET_LANGUAGES GetLanguages;\r
225 EFI_HII_GET_2ND_LANGUAGES GetSecondaryLanguages;\r
226};\r
227\r
228\r
229extern EFI_GUID gEfiHiiStringProtocolGuid;\r
230\r
231#endif\r
232\r
7d582d6b 233\r