+++ /dev/null
-/** @file\r
-Private structure, MACRO and function definitions for User Interface related functionalities.\r
-\r
-Copyright (c) 2004 - 2013, Intel Corporation. All rights reserved.<BR>\r
-This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution. The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-\r
-**/\r
-\r
-#ifndef _UI_H_\r
-#define _UI_H_\r
-\r
-//\r
-// Globals\r
-//\r
-#define REGULAR_NUMERIC 0\r
-#define TIME_NUMERIC 1\r
-#define DATE_NUMERIC 2\r
-\r
-#define SUBTITLE_INDENT 2\r
-\r
-\r
-//\r
-// It take 23 characters including the NULL to print a 64 bits number with "[" and "]".\r
-// pow(2, 64) = [18446744073709551616]\r
-//\r
-#define MAX_NUMERIC_INPUT_WIDTH 23\r
-\r
-typedef enum {\r
- UiNoOperation,\r
- UiSelect,\r
- UiUp,\r
- UiDown,\r
- UiLeft,\r
- UiRight,\r
- UiReset,\r
- UiPrevious,\r
- UiPageUp,\r
- UiPageDown,\r
- UiHotKey,\r
- UiMaxOperation\r
-} UI_SCREEN_OPERATION;\r
-\r
-typedef enum {\r
- CfInitialization,\r
- CfCheckSelection,\r
- CfRepaint,\r
- CfRefreshHighLight,\r
- CfUpdateHelpString,\r
- CfPrepareToReadKey,\r
- CfReadKey,\r
- CfScreenOperation,\r
- CfUiSelect,\r
- CfUiReset,\r
- CfUiLeft,\r
- CfUiRight,\r
- CfUiUp,\r
- CfUiPageUp,\r
- CfUiPageDown,\r
- CfUiDown,\r
- CfUiDefault,\r
- CfUiNoOperation,\r
- CfExit,\r
- CfUiHotKey,\r
- CfMaxControlFlag\r
-} UI_CONTROL_FLAG;\r
-\r
-#define UI_ACTION_NONE 0\r
-#define UI_ACTION_REFRESH_FORM 1\r
-#define UI_ACTION_REFRESH_FORMSET 2\r
-#define UI_ACTION_EXIT 3\r
-\r
-typedef struct _UI_MENU_LIST UI_MENU_LIST;\r
-\r
-typedef struct {\r
- EFI_HII_HANDLE Handle;\r
-\r
- //\r
- // Target formset/form/Question information\r
- //\r
- EFI_GUID FormSetGuid;\r
- UINT16 FormId;\r
- UINT16 QuestionId;\r
- UINTN Sequence; // used for time/date only.\r
-\r
- UINTN TopRow;\r
- UINTN BottomRow;\r
- UINTN PromptCol;\r
- UINTN OptionCol;\r
- UINTN CurrentRow;\r
-\r
- //\r
- // Ation for Browser to taken:\r
- // UI_ACTION_NONE - navigation inside a form\r
- // UI_ACTION_REFRESH_FORM - re-evaluate expressions and repaint form\r
- // UI_ACTION_REFRESH_FORMSET - re-parse formset IFR binary\r
- //\r
- UINTN Action;\r
-\r
- //\r
- // Current selected fomset/form/Question\r
- //\r
- FORM_BROWSER_FORMSET *FormSet;\r
- FORM_BROWSER_FORM *Form;\r
- FORM_BROWSER_STATEMENT *Statement;\r
-\r
- //\r
- // Whether the Form is editable\r
- //\r
- BOOLEAN FormEditable;\r
-\r
- UI_MENU_LIST *CurrentMenu;\r
-} UI_MENU_SELECTION;\r
-\r
-#define UI_MENU_OPTION_SIGNATURE SIGNATURE_32 ('u', 'i', 'm', 'm')\r
-#define UI_MENU_LIST_SIGNATURE SIGNATURE_32 ('u', 'i', 'm', 'l')\r
-\r
-typedef struct {\r
- UINTN Signature;\r
- LIST_ENTRY Link;\r
-\r
- EFI_HII_HANDLE Handle;\r
- FORM_BROWSER_STATEMENT *ThisTag;\r
- UINT16 EntryNumber;\r
-\r
- UINTN Row;\r
- UINTN Col;\r
- UINTN OptCol;\r
- CHAR16 *Description;\r
- UINTN Skip; // Number of lines\r
-\r
- //\r
- // Display item sequence for date/time\r
- // Date: Month/Day/Year\r
- // Sequence: 0 1 2\r
- //\r
- // Time: Hour : Minute : Second\r
- // Sequence: 0 1 2\r
- //\r
- //\r
- UINTN Sequence;\r
-\r
- BOOLEAN GrayOut;\r
- BOOLEAN ReadOnly;\r
-\r
- //\r
- // Whether user could change value of this item\r
- //\r
- BOOLEAN IsQuestion;\r
-} UI_MENU_OPTION;\r
-\r
-#define MENU_OPTION_FROM_LINK(a) CR (a, UI_MENU_OPTION, Link, UI_MENU_OPTION_SIGNATURE)\r
-\r
-struct _UI_MENU_LIST {\r
- UINTN Signature;\r
- LIST_ENTRY Link;\r
-\r
- EFI_HII_HANDLE HiiHandle;\r
- EFI_GUID FormSetGuid;\r
- UINT16 FormId;\r
- UINT16 QuestionId;\r
- UINTN Sequence; // used for time/date only.\r
-\r
- UI_MENU_LIST *Parent;\r
- LIST_ENTRY ChildListHead;\r
-};\r
-\r
-#define UI_MENU_LIST_FROM_LINK(a) CR (a, UI_MENU_LIST, Link, UI_MENU_LIST_SIGNATURE)\r
-\r
-typedef struct _MENU_REFRESH_ENTRY MENU_REFRESH_ENTRY;\r
-struct _MENU_REFRESH_ENTRY {\r
- MENU_REFRESH_ENTRY *Next;\r
- UI_MENU_OPTION *MenuOption; // Describes the entry needing an update\r
- UI_MENU_SELECTION *Selection;\r
- UINTN CurrentColumn;\r
- UINTN CurrentRow;\r
- UINTN CurrentAttribute;\r
- EFI_EVENT Event;\r
-};\r
-\r
-typedef struct {\r
- UINT16 ScanCode;\r
- UI_SCREEN_OPERATION ScreenOperation;\r
-} SCAN_CODE_TO_SCREEN_OPERATION;\r
-\r
-typedef struct {\r
- UI_SCREEN_OPERATION ScreenOperation;\r
- UI_CONTROL_FLAG ControlFlag;\r
-} SCREEN_OPERATION_T0_CONTROL_FLAG;\r
-\r
-\r
-extern LIST_ENTRY gMenuOption;\r
-extern LIST_ENTRY gMenuList;\r
-extern MENU_REFRESH_ENTRY *gMenuRefreshHead;\r
-extern UI_MENU_SELECTION *gCurrentSelection;\r
-extern BOOLEAN mHiiPackageListUpdated;\r
-\r
-//\r
-// Global Functions\r
-//\r
-/**\r
- Initialize Menu option list.\r
-\r
-**/\r
-VOID\r
-UiInitMenu (\r
- VOID\r
- );\r
-\r
-/**\r
- Initialize Menu option list.\r
-\r
-**/\r
-VOID\r
-UiInitMenuList (\r
- VOID\r
- );\r
-\r
-/**\r
- Free Menu option linked list.\r
-\r
-**/\r
-VOID\r
-UiFreeMenu (\r
- VOID\r
- );\r
-\r
-/**\r
- Create a menu with specified formset GUID and form ID, and add it as a child\r
- of the given parent menu.\r
-\r
- @param Parent The parent of menu to be added.\r
- @param HiiHandle Hii handle related to this formset.\r
- @param FormSetGuid The Formset Guid of menu to be added.\r
- @param FormId The Form ID of menu to be added.\r
-\r
- @return A pointer to the newly added menu or NULL if memory is insufficient.\r
-\r
-**/\r
-UI_MENU_LIST *\r
-UiAddMenuList (\r
- IN OUT UI_MENU_LIST *Parent,\r
- IN EFI_HII_HANDLE HiiHandle,\r
- IN EFI_GUID *FormSetGuid,\r
- IN UINT16 FormId\r
- );\r
-\r
-/**\r
- Search Menu with given FormId, FormSetGuid and Handle in all cached menu list.\r
-\r
- @param Parent The parent of menu to search.\r
- @param Handle Hii handle related to this formset.\r
- @param FormSetGuid The Formset GUID of the menu to search. \r
- @param FormId The Form ID of menu to search.\r
-\r
- @return A pointer to menu found or NULL if not found.\r
-\r
-**/\r
-UI_MENU_LIST *\r
-UiFindChildMenuList (\r
- IN UI_MENU_LIST *Parent,\r
- IN EFI_HII_HANDLE Handle,\r
- IN EFI_GUID *FormSetGuid, \r
- IN UINT16 FormId\r
- );\r
-\r
-/**\r
- Search Menu with given Handle, FormSetGuid and FormId in all cached menu list.\r
-\r
- @param Handle Hii handle related to this formset.\r
- @param FormSetGuid The Formset GUID of the menu to search.\r
- @param FormId The Form ID of menu to search.\r
-\r
- @return A pointer to menu found or NULL if not found.\r
-\r
-**/\r
-UI_MENU_LIST *\r
-UiFindMenuList (\r
- IN EFI_HII_HANDLE Handle,\r
- IN EFI_GUID *FormSetGuid,\r
- IN UINT16 FormId\r
- );\r
-\r
-/**\r
- Free Menu list linked list.\r
-\r
- @param MenuListHead One Menu list point in the menu list.\r
-\r
-**/\r
-VOID\r
-UiFreeMenuList (\r
- LIST_ENTRY *MenuListHead\r
- );\r
-\r
-/**\r
- Free Menu option linked list.\r
-\r
-**/\r
-VOID\r
-UiFreeRefreshList (\r
- VOID\r
- );\r
-\r
-/**\r
- Add one menu option by specified description and context.\r
-\r
- @param String String description for this option.\r
- @param Handle Hii handle for the package list.\r
- @param Form The form this statement belong to.\r
- @param Statement Statement of this Menu Option.\r
- @param NumberOfLines Display lines for this Menu Option.\r
- @param MenuItemCount The index for this Option in the Menu.\r
-\r
- @retval Pointer Pointer to the added Menu Option.\r
-\r
-**/\r
-UI_MENU_OPTION *\r
-UiAddMenuOption (\r
- IN CHAR16 *String,\r
- IN EFI_HII_HANDLE Handle,\r
- IN FORM_BROWSER_FORM *Form,\r
- IN FORM_BROWSER_STATEMENT *Statement,\r
- IN UINT16 NumberOfLines,\r
- IN UINT16 MenuItemCount\r
- );\r
-\r
-/**\r
- Display menu and wait for user to select one menu option, then return it.\r
- If AutoBoot is enabled, then if user doesn't select any option,\r
- after period of time, it will automatically return the first menu option.\r
-\r
- @param Selection Menu selection.\r
-\r
- @return Return the pointer of the menu which selected,\r
- @return otherwise return NULL.\r
-\r
-**/\r
-EFI_STATUS\r
-UiDisplayMenu (\r
- IN OUT UI_MENU_SELECTION *Selection\r
- );\r
-\r
-/**\r
- Free up the resource allocated for all strings required\r
- by Setup Browser.\r
-\r
-**/\r
-VOID\r
-FreeBrowserStrings (\r
- VOID\r
- );\r
-\r
-/**\r
- Process the goto op code, update the info in the selection structure.\r
-\r
- @param Statement The statement belong to goto op code.\r
- @param Selection The selection info.\r
- @param Repaint Whether need to repaint the menu.\r
- @param NewLine Whether need to create new line.\r
-\r
- @retval EFI_SUCCESS The menu process successfully.\r
- @return Other value if the process failed.\r
-**/\r
-EFI_STATUS\r
-ProcessGotoOpCode (\r
- IN OUT FORM_BROWSER_STATEMENT *Statement,\r
- IN OUT UI_MENU_SELECTION *Selection,\r
- OUT BOOLEAN *Repaint,\r
- OUT BOOLEAN *NewLine\r
- );\r
-\r
-\r
-/**\r
- The worker function that send the displays to the screen. On output,\r
- the selection made by user is returned.\r
-\r
- @param Selection On input, Selection tell setup browser the information\r
- about the Selection, form and formset to be displayed.\r
- On output, Selection return the screen item that is selected\r
- by user.\r
-\r
- @retval EFI_SUCCESS The page is displayed successfully.\r
- @return Other value if the page failed to be diplayed.\r
-\r
-**/\r
-EFI_STATUS\r
-SetupBrowser (\r
- IN OUT UI_MENU_SELECTION *Selection\r
- );\r
-\r
-/**\r
- Set Buffer to Value for Size bytes.\r
-\r
- @param Buffer Memory to set.\r
- @param Size Number of bytes to set\r
- @param Value Value of the set operation.\r
-\r
-**/\r
-VOID\r
-SetUnicodeMem (\r
- IN VOID *Buffer,\r
- IN UINTN Size,\r
- IN CHAR16 Value\r
- );\r
-\r
-/**\r
- Wait for a given event to fire, or for an optional timeout to expire.\r
-\r
- @param Event The event to wait for\r
- @param Timeout An optional timeout value in 100 ns units.\r
- @param RefreshInterval Menu refresh interval (in seconds).\r
-\r
- @retval EFI_SUCCESS Event fired before Timeout expired.\r
- @retval EFI_TIME_OUT Timout expired before Event fired.\r
-\r
-**/\r
-EFI_STATUS\r
-UiWaitForSingleEvent (\r
- IN EFI_EVENT Event,\r
- IN UINT64 Timeout, OPTIONAL\r
- IN UINT8 RefreshInterval OPTIONAL\r
- );\r
-\r
-/**\r
- Draw a pop up windows based on the dimension, number of lines and\r
- strings specified.\r
-\r
- @param ScreenWidth The width of the pop-up.\r
- @param NumberOfLines The number of lines.\r
- @param ... A series of text strings that displayed in the pop-up.\r
-\r
-**/\r
-VOID\r
-EFIAPI\r
-CreateMultiStringPopUp (\r
- IN UINTN ScreenWidth,\r
- IN UINTN NumberOfLines,\r
- ...\r
- );\r
-\r
-/**\r
- Get string or password input from user.\r
-\r
- @param MenuOption Pointer to the current input menu.\r
- @param Prompt The prompt string shown on popup window.\r
- @param StringPtr Old user input and destination for use input string.\r
-\r
- @retval EFI_SUCCESS If string input is read successfully\r
- @retval EFI_DEVICE_ERROR If operation fails\r
-\r
-**/\r
-EFI_STATUS\r
-ReadString (\r
- IN UI_MENU_OPTION *MenuOption,\r
- IN CHAR16 *Prompt,\r
- IN OUT CHAR16 *StringPtr\r
- );\r
-\r
-/**\r
- Get selection for OneOf and OrderedList (Left/Right will be ignored).\r
-\r
- @param Selection Pointer to current selection.\r
- @param MenuOption Pointer to the current input menu.\r
-\r
- @retval EFI_SUCCESS If Option input is processed successfully\r
- @retval EFI_DEVICE_ERROR If operation fails\r
-\r
-**/\r
-EFI_STATUS\r
-GetSelectionInputPopUp (\r
- IN UI_MENU_SELECTION *Selection,\r
- IN UI_MENU_OPTION *MenuOption\r
- );\r
-\r
-/**\r
- This routine reads a numeric value from the user input.\r
-\r
- @param Selection Pointer to current selection.\r
- @param MenuOption Pointer to the current input menu.\r
-\r
- @retval EFI_SUCCESS If numerical input is read successfully\r
- @retval EFI_DEVICE_ERROR If operation fails\r
-\r
-**/\r
-EFI_STATUS\r
-GetNumericInput (\r
- IN UI_MENU_SELECTION *Selection,\r
- IN UI_MENU_OPTION *MenuOption\r
- );\r
-\r
-/**\r
- Update status bar on the bottom of menu.\r
-\r
- @param Selection Current selection info.\r
- @param MessageType The type of message to be shown.\r
- @param Flags The flags in Question header.\r
- @param State Set or clear.\r
-\r
-**/\r
-VOID\r
-UpdateStatusBar (\r
- IN UI_MENU_SELECTION *Selection,\r
- IN UINTN MessageType,\r
- IN UINT8 Flags,\r
- IN BOOLEAN State\r
- );\r
-\r
-/**\r
- Process Question Config.\r
-\r
- @param Selection The UI menu selection.\r
- @param Question The Question to be peocessed.\r
-\r
- @retval EFI_SUCCESS Question Config process success.\r
- @retval Other Question Config process fail.\r
-\r
-**/\r
-EFI_STATUS\r
-ProcessQuestionConfig (\r
- IN UI_MENU_SELECTION *Selection,\r
- IN FORM_BROWSER_STATEMENT *Question\r
- );\r
-\r
-/**\r
- Print Question Value according to it's storage width and display attributes.\r
-\r
- @param Question The Question to be printed.\r
- @param FormattedNumber Buffer for output string.\r
- @param BufferSize The FormattedNumber buffer size in bytes.\r
-\r
- @retval EFI_SUCCESS Print success.\r
- @retval EFI_BUFFER_TOO_SMALL Buffer size is not enough for formatted number.\r
-\r
-**/\r
-EFI_STATUS\r
-PrintFormattedNumber (\r
- IN FORM_BROWSER_STATEMENT *Question,\r
- IN OUT CHAR16 *FormattedNumber,\r
- IN UINTN BufferSize\r
- );\r
-\r
-/**\r
- Search an Option of a Question by its value.\r
-\r
- @param Question The Question\r
- @param OptionValue Value for Option to be searched.\r
-\r
- @retval Pointer Pointer to the found Option.\r
- @retval NULL Option not found.\r
-\r
-**/\r
-QUESTION_OPTION *\r
-ValueToOption (\r
- IN FORM_BROWSER_STATEMENT *Question,\r
- IN EFI_HII_VALUE *OptionValue\r
- );\r
-\r
-/**\r
- Return data element in an Array by its Index.\r
-\r
- @param Array The data array.\r
- @param Type Type of the data in this array.\r
- @param Index Zero based index for data in this array.\r
-\r
- @retval Value The data to be returned\r
-\r
-**/\r
-UINT64\r
-GetArrayData (\r
- IN VOID *Array,\r
- IN UINT8 Type,\r
- IN UINTN Index\r
- );\r
-\r
-/**\r
- Set value of a data element in an Array by its Index.\r
-\r
- @param Array The data array.\r
- @param Type Type of the data in this array.\r
- @param Index Zero based index for data in this array.\r
- @param Value The value to be set.\r
-\r
-**/\r
-VOID\r
-SetArrayData (\r
- IN VOID *Array,\r
- IN UINT8 Type,\r
- IN UINTN Index,\r
- IN UINT64 Value\r
- );\r
-\r
-/**\r
- Check whether this value already in the array, if yes, return the index.\r
-\r
- @param Array The data array.\r
- @param Type Type of the data in this array.\r
- @param Value The value to be find.\r
- @param Index The index in the array which has same value with Value.\r
- \r
- @retval TRUE Found the value in the array.\r
- @retval FALSE Not found the value.\r
-\r
-**/\r
-BOOLEAN \r
-FindArrayData (\r
- IN VOID *Array,\r
- IN UINT8 Type,\r
- IN UINT64 Value,\r
- OUT UINTN *Index OPTIONAL\r
- );\r
-\r
-/**\r
- Process a Question's Option (whether selected or un-selected).\r
-\r
- @param Selection Pointer to UI_MENU_SELECTION.\r
- @param MenuOption The MenuOption for this Question.\r
- @param Selected TRUE: if Question is selected.\r
- @param OptionString Pointer of the Option String to be displayed.\r
-\r
- @retval EFI_SUCCESS Question Option process success.\r
- @retval Other Question Option process fail.\r
-\r
-**/\r
-EFI_STATUS\r
-ProcessOptions (\r
- IN UI_MENU_SELECTION *Selection,\r
- IN UI_MENU_OPTION *MenuOption,\r
- IN BOOLEAN Selected,\r
- OUT CHAR16 **OptionString\r
- );\r
-\r
-/**\r
- Process the help string: Split StringPtr to several lines of strings stored in\r
- FormattedString and the glyph width of each line cannot exceed gHelpBlockWidth.\r
-\r
- @param StringPtr The entire help string.\r
- @param FormattedString The oupput formatted string.\r
- @param EachLineWidth The string length of each line in the formatted string.\r
- @param RowCount TRUE: if Question is selected.\r
-\r
-**/\r
-UINTN\r
-ProcessHelpString (\r
- IN CHAR16 *StringPtr,\r
- OUT CHAR16 **FormattedString,\r
- OUT UINT16 *EachLineWidth,\r
- IN UINTN RowCount\r
- );\r
-\r
-/**\r
- Update key's help imformation.\r
-\r
- @param Selection Tell setup browser the information about the Selection\r
- @param MenuOption The Menu option\r
- @param Selected Whether or not a tag be selected\r
-\r
-**/\r
-VOID\r
-UpdateKeyHelp (\r
- IN UI_MENU_SELECTION *Selection,\r
- IN UI_MENU_OPTION *MenuOption,\r
- IN BOOLEAN Selected\r
- );\r
-\r
-/**\r
- Clear retangle with specified text attribute.\r
-\r
- @param LeftColumn Left column of retangle.\r
- @param RightColumn Right column of retangle.\r
- @param TopRow Start row of retangle.\r
- @param BottomRow End row of retangle.\r
- @param TextAttribute The character foreground and background.\r
-\r
-**/\r
-VOID\r
-ClearLines (\r
- IN UINTN LeftColumn,\r
- IN UINTN RightColumn,\r
- IN UINTN TopRow,\r
- IN UINTN BottomRow,\r
- IN UINTN TextAttribute\r
- );\r
-\r
-/**\r
- Count the storage space of a Unicode string.\r
-\r
- This function handles the Unicode string with NARROW_CHAR\r
- and WIDE_CHAR control characters. NARROW_HCAR and WIDE_CHAR\r
- does not count in the resultant output. If a WIDE_CHAR is\r
- hit, then 2 Unicode character will consume an output storage\r
- space with size of CHAR16 till a NARROW_CHAR is hit.\r
-\r
- If String is NULL, then ASSERT ().\r
-\r
- @param String The input string to be counted.\r
-\r
- @return Storage space for the input string.\r
-\r
-**/\r
-UINTN\r
-GetStringWidth (\r
- IN CHAR16 *String\r
- );\r
-\r
-/**\r
- Will copy LineWidth amount of a string in the OutputString buffer and return the\r
- number of CHAR16 characters that were copied into the OutputString buffer.\r
- In the code, it deals \r,\n,\r\n same as \n\r, also it not process the \r or \g.\r
-\r
- @param InputString String description for this option.\r
- @param LineWidth Width of the desired string to extract in CHAR16\r
- characters\r
- @param GlyphWidth The glyph width of the beging char in the string.\r
- @param Index Where in InputString to start the copy process\r
- @param OutputString Buffer to copy the string into\r
-\r
- @return Returns the number of CHAR16 characters that were copied into the OutputString buffer.\r
-\r
-**/\r
-UINT16\r
-GetLineByWidth (\r
- IN CHAR16 *InputString,\r
- IN UINT16 LineWidth,\r
- IN OUT UINT16 *GlyphWidth,\r
- IN OUT UINTN *Index,\r
- OUT CHAR16 **OutputString\r
- );\r
-\r
-/**\r
- Get the supported width for a particular op-code\r
-\r
- @param Statement The FORM_BROWSER_STATEMENT structure passed in.\r
- @param Handle The handle in the HII database being used\r
-\r
- @return Returns the number of CHAR16 characters that is support.\r
-\r
-**/\r
-UINT16\r
-GetWidth (\r
- IN FORM_BROWSER_STATEMENT *Statement,\r
- IN EFI_HII_HANDLE Handle\r
- );\r
-\r
-/**\r
- Concatenate a narrow string to another string.\r
-\r
- @param Destination The destination string.\r
- @param Source The source string. The string to be concatenated.\r
- to the end of Destination.\r
-\r
-**/\r
-VOID\r
-NewStrCat (\r
- IN OUT CHAR16 *Destination,\r
- IN CHAR16 *Source\r
- );\r
-\r
-/**\r
- Wait for a key to be pressed by user.\r
-\r
- @param Key The key which is pressed by user.\r
-\r
- @retval EFI_SUCCESS The function always completed successfully.\r
-\r
-**/\r
-EFI_STATUS\r
-WaitForKeyStroke (\r
- OUT EFI_INPUT_KEY *Key\r
- );\r
-\r
-/**\r
- Reset stack pointer to begin of the stack.\r
-\r
-**/\r
-VOID\r
-ResetScopeStack (\r
- VOID\r
- );\r
-\r
-/**\r
- Push the expression options onto the Stack.\r
-\r
- @param Pointer Pointer to the current expression.\r
- @param Level Which type this expression belong to. Form, \r
- statement or option?\r
-\r
- @retval EFI_SUCCESS The value was pushed onto the stack.\r
- @retval EFI_OUT_OF_RESOURCES There is not enough system memory to grow the stack.\r
-\r
-**/\r
-EFI_STATUS\r
-PushConditionalExpression (\r
- IN FORM_EXPRESSION *Pointer,\r
- IN EXPRESS_LEVEL Level\r
- );\r
-\r
-/**\r
- Pop the expression options from the Stack\r
-\r
- @param Level Which type this expression belong to. Form, \r
- statement or option?\r
-\r
- @retval EFI_SUCCESS The value was pushed onto the stack.\r
- @retval EFI_OUT_OF_RESOURCES There is not enough system memory to grow the stack.\r
-\r
-**/\r
-EFI_STATUS\r
-PopConditionalExpression (\r
- IN EXPRESS_LEVEL Level\r
- );\r
- \r
-/**\r
- Get the expression Buffer pointer.\r
- \r
- @param Level Which type this expression belong to. Form, \r
- statement or option?\r
-\r
- @retval The start pointer of the expression buffer or NULL.\r
-\r
-**/\r
-FORM_EXPRESSION **\r
-GetConditionalExpressionList (\r
- IN EXPRESS_LEVEL Level\r
- );\r
-\r
-/**\r
- Get the expression list count.\r
- \r
- @param Level Which type this expression belong to. Form, \r
- statement or option?\r
-\r
- @retval >=0 The expression count\r
- @retval -1 Input parameter error.\r
-\r
-**/\r
-INTN \r
-GetConditionalExpressionCount (\r
- IN EXPRESS_LEVEL Level\r
- );\r
-\r
-/**\r
- Push an Operand onto the Stack\r
-\r
- @param Operand Operand to push.\r
-\r
- @retval EFI_SUCCESS The value was pushed onto the stack.\r
- @retval EFI_OUT_OF_RESOURCES There is not enough system memory to grow the\r
- stack.\r
-\r
-**/\r
-EFI_STATUS\r
-PushScope (\r
- IN UINT8 Operand\r
- );\r
-\r
-/**\r
- Pop an Operand from the Stack\r
-\r
- @param Operand Operand to pop.\r
-\r
- @retval EFI_SUCCESS The value was pushed onto the stack.\r
- @retval EFI_OUT_OF_RESOURCES There is not enough system memory to grow the\r
- stack.\r
-\r
-**/\r
-EFI_STATUS\r
-PopScope (\r
- OUT UINT8 *Operand\r
- );\r
-\r
-/**\r
- Reset stack pointer to begin of the stack.\r
-\r
-**/\r
-VOID\r
-ResetCurrentExpressionStack (\r
- VOID\r
- );\r
-\r
-/**\r
- Push current expression onto the Stack\r
-\r
- @param Pointer Pointer to current expression.\r
-\r
- @retval EFI_SUCCESS The value was pushed onto the stack.\r
- @retval EFI_OUT_OF_RESOURCES There is not enough system memory to grow the stack.\r
-\r
-**/\r
-EFI_STATUS\r
-PushCurrentExpression (\r
- IN VOID *Pointer\r
- );\r
-\r
-/**\r
- Pop current expression from the Stack\r
-\r
- @param Pointer Pointer to current expression to be pop.\r
-\r
- @retval EFI_SUCCESS The value was pushed onto the stack.\r
- @retval EFI_OUT_OF_RESOURCES There is not enough system memory to grow the stack.\r
-\r
-**/\r
-EFI_STATUS\r
-PopCurrentExpression (\r
- OUT VOID **Pointer\r
- );\r
-\r
-/**\r
- Reset stack pointer to begin of the stack.\r
-\r
-**/\r
-VOID\r
-ResetMapExpressionListStack (\r
- VOID\r
- );\r
-\r
-/**\r
- Push the list of map expression onto the Stack\r
-\r
- @param Pointer Pointer to the list of map expression to be pushed.\r
-\r
- @retval EFI_SUCCESS The value was pushed onto the stack.\r
- @retval EFI_OUT_OF_RESOURCES There is not enough system memory to grow the stack.\r
-\r
-**/\r
-EFI_STATUS\r
-PushMapExpressionList (\r
- IN VOID *Pointer\r
- );\r
-\r
-/**\r
- Pop the list of map expression from the Stack\r
-\r
- @param Pointer Pointer to the list of map expression to be pop.\r
-\r
- @retval EFI_SUCCESS The value was pushed onto the stack.\r
- @retval EFI_OUT_OF_RESOURCES There is not enough system memory to grow the stack.\r
-\r
-**/\r
-EFI_STATUS\r
-PopMapExpressionList (\r
- OUT VOID **Pointer\r
- );\r
-\r
-/**\r
- Get Form given its FormId.\r
-\r
- @param FormSet The formset which contains this form.\r
- @param FormId Id of this form.\r
-\r
- @retval Pointer The form.\r
- @retval NULL Specified Form is not found in the formset.\r
-\r
-**/\r
-FORM_BROWSER_FORM *\r
-IdToForm (\r
- IN FORM_BROWSER_FORMSET *FormSet,\r
- IN UINT16 FormId\r
- );\r
-\r
-/**\r
- Search a Question in Formset scope using its QuestionId.\r
-\r
- @param FormSet The formset which contains this form.\r
- @param Form The form which contains this Question.\r
- @param QuestionId Id of this Question.\r
-\r
- @retval Pointer The Question.\r
- @retval NULL Specified Question not found in the form.\r
-\r
-**/\r
-FORM_BROWSER_STATEMENT *\r
-IdToQuestion (\r
- IN FORM_BROWSER_FORMSET *FormSet,\r
- IN FORM_BROWSER_FORM *Form,\r
- IN UINT16 QuestionId\r
- );\r
-\r
-/**\r
- Zero extend integer/boolean/date/time to UINT64 for comparing.\r
-\r
- @param Value HII Value to be converted.\r
-\r
-**/\r
-VOID\r
-ExtendValueToU64 (\r
- IN EFI_HII_VALUE *Value\r
- );\r
-\r
-/**\r
- Compare two Hii value.\r
-\r
- @param Value1 Expression value to compare on left-hand.\r
- @param Value2 Expression value to compare on right-hand.\r
- @param Result Return value after compare.\r
- retval 0 Two operators equal.\r
- return Positive value if Value1 is greater than Value2.\r
- retval Negative value if Value1 is less than Value2.\r
- @param HiiHandle Only required for string compare.\r
-\r
- @retval other Could not perform compare on two values.\r
- @retval EFI_SUCCESS Compare the value success.\r
-\r
-**/\r
-EFI_STATUS\r
-CompareHiiValue (\r
- IN EFI_HII_VALUE *Value1,\r
- IN EFI_HII_VALUE *Value2,\r
- OUT INTN *Result,\r
- IN EFI_HII_HANDLE HiiHandle OPTIONAL\r
- );\r
-\r
-/**\r
- Evaluate the result of a HII expression\r
-\r
- If Expression is NULL, then ASSERT.\r
-\r
- @param FormSet FormSet associated with this expression.\r
- @param Form Form associated with this expression.\r
- @param Expression Expression to be evaluated.\r
-\r
- @retval EFI_SUCCESS The expression evaluated successfuly\r
- @retval EFI_NOT_FOUND The Question which referenced by a QuestionId\r
- could not be found.\r
- @retval EFI_OUT_OF_RESOURCES There is not enough system memory to grow the\r
- stack.\r
- @retval EFI_ACCESS_DENIED The pop operation underflowed the stack\r
- @retval EFI_INVALID_PARAMETER Syntax error with the Expression\r
-\r
-**/\r
-EFI_STATUS\r
-EvaluateExpression (\r
- IN FORM_BROWSER_FORMSET *FormSet,\r
- IN FORM_BROWSER_FORM *Form,\r
- IN OUT FORM_EXPRESSION *Expression\r
- );\r
-\r
-/**\r
- Return the result of the expression list. Check the expression list and \r
- return the highest priority express result. \r
- Priority: DisableIf > SuppressIf > GrayOutIf > FALSE\r
-\r
- @param ExpList The input expression list.\r
- @param Evaluate Whether need to evaluate the expression first.\r
- @param FormSet FormSet associated with this expression. Only \r
- needed when Evaluate is TRUE\r
- @param Form Form associated with this expression. Only \r
- needed when Evaluate is TRUE \r
-\r
- @retval EXPRESS_RESULT Return the higher priority express result. \r
- DisableIf > SuppressIf > GrayOutIf > FALSE\r
-\r
-**/\r
-EXPRESS_RESULT \r
-EvaluateExpressionList (\r
- IN FORM_EXPRESSION_LIST *ExpList,\r
- IN BOOLEAN Evaluate,\r
- IN FORM_BROWSER_FORMSET *FormSet, OPTIONAL\r
- IN FORM_BROWSER_FORM *Form OPTIONAL\r
- );\r
-\r
-#endif // _UI_H\r