]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkModulePkg/Library/EdkIfrSupportLib/IfrOnTheFly.c
Retiring the ANT/JAVA build and removing the older EDK II packages that required...
[mirror_edk2.git] / EdkModulePkg / Library / EdkIfrSupportLib / IfrOnTheFly.c
diff --git a/EdkModulePkg/Library/EdkIfrSupportLib/IfrOnTheFly.c b/EdkModulePkg/Library/EdkIfrSupportLib/IfrOnTheFly.c
deleted file mode 100644 (file)
index e3d1040..0000000
+++ /dev/null
@@ -1,972 +0,0 @@
-/*++\r
-Copyright (c) 2006, Intel Corporation                                                         \r
-All rights reserved. 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
-Module Name:\r
-  IfrOnTheFly.c\r
-\r
-Abstract:\r
-\r
-  Library Routines to create IFR on-the-fly\r
-\r
-Revision History:\r
-\r
---*/\r
-\r
-EFI_STATUS\r
-CreateFormSet (\r
-  IN      CHAR16              *FormSetTitle,\r
-  IN      EFI_GUID            *Guid,\r
-  IN      UINT8               Class,\r
-  IN      UINT8               SubClass,\r
-  IN OUT  VOID                **FormBuffer,\r
-  IN OUT  VOID                **StringBuffer\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Create a formset\r
-  \r
-Arguments:\r
-  \r
-  FormSetTitle        - Title of formset\r
-  \r
-  Guid                - Guid of formset\r
-  \r
-  Class               - Class of formset\r
-  \r
-  SubClass            - Sub class of formset\r
-  \r
-  FormBuffer          - Pointer of the formset created\r
-  \r
-  StringBuffer        - Pointer of FormSetTitile string created\r
-  \r
-Returns: \r
-\r
-  EFI_OUT_OF_RESOURCES    - No enough buffer to allocate\r
-  \r
-  EFI_SUCCESS             - Formset successfully created\r
-\r
---*/\r
-{\r
-  EFI_STATUS            Status;\r
-  EFI_HII_IFR_PACK      IfrPack;\r
-  EFI_IFR_FORM_SET      FormSet;\r
-  EFI_IFR_END_FORM_SET  EndFormSet;\r
-  UINT8                 *Destination;\r
-  CHAR16                CurrentLanguage[4];\r
-  STRING_REF            StringToken;\r
-\r
-  //\r
-  // Pre-allocate a buffer sufficient for us to work from.\r
-  //\r
-  FormBuffer = AllocateZeroPool (DEFAULT_FORM_BUFFER_SIZE);\r
-  if (FormBuffer == NULL) {\r
-    return EFI_OUT_OF_RESOURCES;\r
-  }\r
-\r
-  //\r
-  // Pre-allocate a buffer sufficient for us to work from.\r
-  //\r
-  StringBuffer = AllocateZeroPool (DEFAULT_STRING_BUFFER_SIZE);\r
-  if (StringBuffer == NULL) {\r
-    gBS->FreePool (FormBuffer);\r
-    return EFI_OUT_OF_RESOURCES;\r
-  }\r
-\r
-  //\r
-  // Obtain current language value\r
-  //\r
-  GetCurrentLanguage (CurrentLanguage);\r
-\r
-  //\r
-  // Add the FormSetTitle to the string buffer and get the StringToken\r
-  //\r
-  Status = AddString (*StringBuffer, CurrentLanguage, FormSetTitle, &StringToken);\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  //\r
-  // Initialize the Ifr Package header data\r
-  //\r
-  IfrPack.Header.Length = sizeof (EFI_HII_PACK_HEADER) + sizeof (EFI_IFR_FORM_SET) + sizeof (EFI_IFR_END_FORM_SET);\r
-  IfrPack.Header.Type   = EFI_HII_IFR;\r
-\r
-  //\r
-  // Initialize FormSet with the appropriate information\r
-  //\r
-  FormSet.Header.OpCode = EFI_IFR_FORM_SET_OP;\r
-  FormSet.Header.Length = sizeof (EFI_IFR_FORM_SET);\r
-  FormSet.FormSetTitle  = StringToken;\r
-  FormSet.Class         = Class;\r
-  FormSet.SubClass      = SubClass;\r
-  CopyMem (&FormSet.Guid, Guid, sizeof (EFI_GUID));\r
-\r
-  //\r
-  // Initialize the end formset data\r
-  //\r
-  EndFormSet.Header.Length  = sizeof (EFI_IFR_END_FORM_SET);\r
-  EndFormSet.Header.OpCode  = EFI_IFR_END_FORM_SET_OP;\r
-\r
-  Destination               = (UINT8 *) *FormBuffer;\r
-\r
-  //\r
-  // Copy the formset/endformset data to the form buffer\r
-  //\r
-  CopyMem (Destination, &IfrPack, sizeof (EFI_HII_PACK_HEADER));\r
-\r
-  Destination = Destination + sizeof (EFI_HII_PACK_HEADER);\r
-\r
-  CopyMem (Destination, &FormSet, sizeof (EFI_IFR_FORM_SET));\r
-\r
-  Destination = Destination + sizeof (EFI_IFR_FORM_SET);\r
-\r
-  CopyMem (Destination, &EndFormSet, sizeof (EFI_IFR_END_FORM_SET));\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-\r
-EFI_STATUS\r
-CreateForm (\r
-  IN      CHAR16              *FormTitle,\r
-  IN      UINT16              FormId,\r
-  IN OUT  VOID                *FormBuffer,\r
-  IN OUT  VOID                *StringBuffer\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Create a form\r
-  \r
-Arguments:\r
-  \r
-  FormTitle       - Title of the form\r
-  \r
-  FormId          - Id of the form\r
-  \r
-  FormBuffer          - Pointer of the form created\r
-  \r
-  StringBuffer        - Pointer of FormTitil string created\r
-  \r
-Returns: \r
-\r
-  EFI_SUCCESS     - Form successfully created\r
-\r
---*/\r
-{\r
-  EFI_STATUS        Status;\r
-  EFI_IFR_FORM      Form;\r
-  EFI_IFR_END_FORM  EndForm;\r
-  CHAR16            CurrentLanguage[4];\r
-  STRING_REF        StringToken;\r
-\r
-  //\r
-  // Obtain current language value\r
-  //\r
-  GetCurrentLanguage (CurrentLanguage);\r
-\r
-  Status = AddString (StringBuffer, CurrentLanguage, FormTitle, &StringToken);\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  Form.Header.OpCode  = EFI_IFR_FORM_OP;\r
-  Form.Header.Length  = sizeof (EFI_IFR_FORM);\r
-  Form.FormId         = FormId;\r
-  Form.FormTitle      = StringToken;\r
-\r
-  Status              = AddOpCode (FormBuffer, &Form);\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  EndForm.Header.OpCode = EFI_IFR_END_FORM_OP;\r
-  EndForm.Header.Length = sizeof (EFI_IFR_END_FORM);\r
-\r
-  Status                = AddOpCode (FormBuffer, &EndForm);\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-\r
-EFI_STATUS\r
-CreateSubTitle (\r
-  IN      CHAR16              *SubTitle,\r
-  IN OUT  VOID                *FormBuffer,\r
-  IN OUT  VOID                *StringBuffer\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Create a SubTitle\r
-  \r
-Arguments:\r
-  \r
-  SubTitle        - Sub title to be created\r
-  \r
-  FormBuffer      - Where this subtitle to add to\r
-  \r
-  StringBuffer    - String buffer created for subtitle\r
-  \r
-Returns: \r
-\r
-  EFI_SUCCESS     - Subtitle successfully created\r
-\r
---*/\r
-{\r
-  EFI_STATUS        Status;\r
-  EFI_IFR_SUBTITLE  Subtitle;\r
-  CHAR16            CurrentLanguage[4];\r
-  STRING_REF        StringToken;\r
-\r
-  //\r
-  // Obtain current language value\r
-  //\r
-  GetCurrentLanguage (CurrentLanguage);\r
-\r
-  Status = AddString (StringBuffer, CurrentLanguage, SubTitle, &StringToken);\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  Subtitle.Header.OpCode  = EFI_IFR_SUBTITLE_OP;\r
-  Subtitle.Header.Length  = sizeof (EFI_IFR_SUBTITLE);\r
-  Subtitle.SubTitle       = StringToken;\r
-\r
-  Status                  = AddOpCode (FormBuffer, &Subtitle);\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-\r
-EFI_STATUS\r
-CreateText (\r
-  IN      CHAR16              *String,\r
-  IN      CHAR16              *String2,\r
-  IN      CHAR16              *String3,\r
-  IN      UINT8               Flags,\r
-  IN      UINT16              Key,\r
-  IN OUT  VOID                *FormBuffer,\r
-  IN OUT  VOID                *StringBuffer\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Create a line of text\r
-  \r
-Arguments:\r
-  \r
-  String          - First string of the text\r
-  \r
-  String2         - Second string of the text\r
-  \r
-  String3         - Help string of the text\r
-  \r
-  Flags           - Flag of the text\r
-  \r
-  Key             - Key of the text\r
-  \r
-  FormBuffer      - The form where this text adds to\r
-  \r
-  StringBuffer    - String buffer created for String, String2 and String3\r
-  \r
-Returns: \r
-\r
-  EFI_SUCCESS     - Text successfully created\r
-\r
---*/\r
-{\r
-  EFI_STATUS    Status;\r
-  EFI_IFR_TEXT  Text;\r
-  CHAR16        CurrentLanguage[4];\r
-  STRING_REF    StringToken;\r
-\r
-  //\r
-  // Obtain current language value\r
-  //\r
-  GetCurrentLanguage (CurrentLanguage);\r
-\r
-  //\r
-  // Add first string, get first string's token\r
-  //\r
-  Status = AddString (StringBuffer, CurrentLanguage, String, &StringToken);\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  Text.Header.OpCode  = EFI_IFR_TEXT_OP;\r
-  Text.Header.Length  = sizeof (EFI_IFR_TEXT);\r
-  Text.Text           = StringToken;\r
-\r
-  //\r
-  // Add second string, get first string's token\r
-  //\r
-  Status = AddString (StringBuffer, CurrentLanguage, String2, &StringToken);\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  Text.TextTwo  = StringToken;\r
-\r
-  Text.Flags    = (UINT8) (Flags | EFI_IFR_FLAG_CREATED);\r
-  Text.Key      = Key;\r
-\r
-  //\r
-  // Add second string, get first string's token\r
-  //\r
-  Status = AddString (StringBuffer, CurrentLanguage, String3, &StringToken);\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  Text.Help = StringToken;\r
-\r
-  Status    = AddOpCode (FormBuffer, &Text);\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-\r
-EFI_STATUS\r
-CreateGoto (\r
-  IN      UINT16              FormId,\r
-  IN      CHAR16              *Prompt,\r
-  IN OUT  VOID                *FormBuffer,\r
-  IN OUT  VOID                *StringBuffer\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Create a hyperlink\r
-  \r
-Arguments:\r
-  \r
-  FormId        - Form ID of the hyperlink\r
-  \r
-  Prompt        - Prompt of the hyperlink\r
-  \r
-  FormBuffer    - The form where this hyperlink adds to\r
-  \r
-  StringBuffer  - String buffer created for Prompt\r
-  \r
-Returns: \r
-\r
-  EFI_SUCCESS     - Hyperlink successfully created\r
-\r
---*/\r
-{\r
-  EFI_STATUS  Status;\r
-  EFI_IFR_REF Hyperlink;\r
-  CHAR16      CurrentLanguage[4];\r
-  STRING_REF  StringToken;\r
-\r
-  //\r
-  // Obtain current language value\r
-  //\r
-  GetCurrentLanguage (CurrentLanguage);\r
-\r
-  Status = AddString (StringBuffer, CurrentLanguage, Prompt, &StringToken);\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  Hyperlink.Header.OpCode = EFI_IFR_REF_OP;\r
-  Hyperlink.Header.Length = sizeof (EFI_IFR_REF);\r
-  Hyperlink.FormId        = FormId;\r
-  Hyperlink.Prompt        = StringToken;\r
-\r
-  Status                  = AddOpCode (FormBuffer, &Hyperlink);\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-\r
-EFI_STATUS\r
-CreateOneOf (\r
-  IN      UINT16              QuestionId,\r
-  IN      UINT8               DataWidth,\r
-  IN      CHAR16              *Prompt,\r
-  IN      CHAR16              *Help,\r
-  IN      IFR_OPTION          *OptionsList,\r
-  IN      UINTN               OptionCount,\r
-  IN OUT  VOID                *FormBuffer,\r
-  IN OUT  VOID                *StringBuffer\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Create a one-of question with a set of options to choose from.  The\r
-  OptionsList is a pointer to a null-terminated list of option descriptions.\r
-  \r
-Arguments:\r
-  \r
-  QuestionId      - Question ID of the one-of box\r
-  \r
-  DataWidth       - DataWidth of the one-of box\r
-  \r
-  Prompt          - Prompt of the one-of box\r
-  \r
-  Help            - Help of the one-of box\r
-  \r
-  OptionsList     - Each string in it is an option of the one-of box\r
-  \r
-  OptionCount     - Option string count\r
-  \r
-  FormBuffer      - The form where this one-of box adds to\r
-  \r
-  StringBuffer    - String buffer created for Prompt, Help and Option strings\r
-  \r
-Returns: \r
-\r
-  EFI_DEVICE_ERROR    - DataWidth > 2\r
-\r
-  EFI_SUCCESS         - One-Of box successfully created.\r
-\r
---*/\r
-{\r
-  EFI_STATUS            Status;\r
-  UINTN                 Index;\r
-  EFI_IFR_ONE_OF        OneOf;\r
-  EFI_IFR_ONE_OF_OPTION OneOfOption;\r
-  EFI_IFR_END_ONE_OF    EndOneOf;\r
-  CHAR16                CurrentLanguage[4];\r
-  STRING_REF            StringToken;\r
-\r
-  //\r
-  // We do not create op-code storage widths for one-of in excess of 16 bits for now\r
-  //\r
-  if (DataWidth > 2) {\r
-    return EFI_DEVICE_ERROR;\r
-  }\r
-\r
-  //\r
-  // Obtain current language value\r
-  //\r
-  GetCurrentLanguage (CurrentLanguage);\r
-\r
-  //\r
-  // Add first string, get first string's token\r
-  //\r
-  Status = AddString (StringBuffer, CurrentLanguage, Prompt, &StringToken);\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  OneOf.Header.OpCode = EFI_IFR_ONE_OF_OP;\r
-  OneOf.Header.Length = sizeof (EFI_IFR_ONE_OF);\r
-  OneOf.QuestionId    = QuestionId;\r
-  OneOf.Width         = DataWidth;\r
-  OneOf.Prompt        = StringToken;\r
-\r
-  //\r
-  // Add second string, get first string's token\r
-  //\r
-  Status = AddString (StringBuffer, CurrentLanguage, Help, &StringToken);\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  OneOf.Help  = StringToken;\r
-\r
-  Status      = AddOpCode (FormBuffer, &OneOf);\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  for (Index = 0; Index < OptionCount; Index++) {\r
-    OneOfOption.Header.OpCode = EFI_IFR_ONE_OF_OPTION_OP;\r
-    OneOfOption.Header.Length = sizeof (EFI_IFR_ONE_OF_OPTION);\r
-\r
-    //\r
-    // Add string and get token back\r
-    //\r
-    Status              = AddString (StringBuffer, CurrentLanguage, OptionsList[Index].OptionString, &StringToken);\r
-\r
-    OneOfOption.Option  = StringToken;\r
-    OneOfOption.Value   = OptionsList[Index].Value;\r
-    OneOfOption.Flags   = (UINT8) (OptionsList[Index].Flags | EFI_IFR_FLAG_CREATED);\r
-    OneOfOption.Key     = OptionsList[Index].Key;\r
-\r
-    Status              = AddOpCode (FormBuffer, &OneOfOption);\r
-\r
-    if (EFI_ERROR (Status)) {\r
-      return Status;\r
-    }\r
-  }\r
-\r
-  EndOneOf.Header.Length  = sizeof (EFI_IFR_END_ONE_OF);\r
-  EndOneOf.Header.OpCode  = EFI_IFR_END_ONE_OF_OP;\r
-\r
-  Status                  = AddOpCode (FormBuffer, &EndOneOf);\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-EFI_STATUS\r
-CreateOrderedList (\r
-  IN      UINT16              QuestionId,\r
-  IN      UINT8               MaxEntries,\r
-  IN      CHAR16              *Prompt,\r
-  IN      CHAR16              *Help,\r
-  IN      IFR_OPTION          *OptionsList,\r
-  IN      UINTN               OptionCount,\r
-  IN OUT  VOID                *FormBuffer,\r
-  IN OUT  VOID                *StringBuffer\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Create a one-of question with a set of options to choose from.  The\r
-  OptionsList is a pointer to a null-terminated list of option descriptions.\r
-  \r
-Arguments:\r
-  \r
-  QuestionId      - Question ID of the ordered list\r
-  \r
-  MaxEntries      - MaxEntries of the ordered list\r
-  \r
-  Prompt          - Prompt of the ordered list\r
-  \r
-  Help            - Help of the ordered list\r
-  \r
-  OptionsList     - Each string in it is an option of the ordered list\r
-  \r
-  OptionCount     - Option string count\r
-  \r
-  FormBuffer      - The form where this ordered list adds to\r
-  \r
-  StringBuffer    - String buffer created for Prompt, Help and Option strings\r
-  \r
-Returns: \r
-\r
-  EFI_SUCCESS     - Ordered list successfully created.\r
-\r
---*/\r
-{\r
-  EFI_STATUS            Status;\r
-  UINTN                 Index;\r
-  EFI_IFR_ORDERED_LIST  OrderedList;\r
-  EFI_IFR_ONE_OF_OPTION OrderedListOption;\r
-  EFI_IFR_END_ONE_OF    EndOrderedList;\r
-  CHAR16                CurrentLanguage[4];\r
-  STRING_REF            StringToken;\r
-\r
-  //\r
-  // Obtain current language value\r
-  //\r
-  GetCurrentLanguage (CurrentLanguage);\r
-\r
-  //\r
-  // Add first string, get first string's token\r
-  //\r
-  Status = AddString (StringBuffer, CurrentLanguage, Prompt, &StringToken);\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  OrderedList.Header.OpCode = EFI_IFR_ORDERED_LIST_OP;\r
-  OrderedList.Header.Length = sizeof (EFI_IFR_ORDERED_LIST);\r
-  OrderedList.QuestionId    = QuestionId;\r
-  OrderedList.MaxEntries    = MaxEntries;\r
-  OrderedList.Prompt        = StringToken;\r
-\r
-  //\r
-  // Add second string, get first string's token\r
-  //\r
-  Status = AddString (StringBuffer, CurrentLanguage, Help, &StringToken);\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  OrderedList.Help  = StringToken;\r
-\r
-  Status            = AddOpCode (FormBuffer, &OrderedList);\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  for (Index = 0; Index < OptionCount; Index++) {\r
-    OrderedListOption.Header.OpCode = EFI_IFR_ONE_OF_OPTION_OP;\r
-    OrderedListOption.Header.Length = sizeof (EFI_IFR_ONE_OF_OPTION);\r
-\r
-    //\r
-    // Add string and get token back\r
-    //\r
-    Status                    = AddString (StringBuffer, CurrentLanguage, OptionsList[Index].OptionString, &StringToken);\r
-\r
-    OrderedListOption.Option  = StringToken;\r
-    OrderedListOption.Value   = OptionsList[Index].Value;\r
-    OrderedListOption.Flags   = (UINT8) (OptionsList[Index].Flags | EFI_IFR_FLAG_CREATED);\r
-    OrderedListOption.Key     = OptionsList[Index].Key;\r
-\r
-    Status                    = AddOpCode (FormBuffer, &OrderedListOption);\r
-\r
-    if (EFI_ERROR (Status)) {\r
-      return Status;\r
-    }\r
-  }\r
-\r
-  EndOrderedList.Header.Length  = sizeof (EFI_IFR_END_ONE_OF);\r
-  EndOrderedList.Header.OpCode  = EFI_IFR_END_ONE_OF_OP;\r
-\r
-  Status                        = AddOpCode (FormBuffer, &EndOrderedList);\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-\r
-EFI_STATUS\r
-CreateCheckBox (\r
-  IN      UINT16              QuestionId,\r
-  IN      UINT8               DataWidth,\r
-  IN      CHAR16              *Prompt,\r
-  IN      CHAR16              *Help,\r
-  IN      UINT8               Flags,\r
-  IN OUT  VOID                *FormBuffer,\r
-  IN OUT  VOID                *StringBuffer\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Create a checkbox\r
-  \r
-Arguments:\r
-  \r
-  QuestionId      - Question ID of the check box\r
-  \r
-  DataWidth       - DataWidth of the check box\r
-  \r
-  Prompt          - Prompt of the check box\r
-  \r
-  Help            - Help of the check box\r
-  \r
-  Flags           - Flags of the check box\r
-  \r
-  FormBuffer      - The form where this check box adds to\r
-  \r
-  StringBuffer    - String buffer created for Prompt and Help.\r
-  \r
-Returns: \r
-\r
-  EFI_DEVICE_ERROR    - DataWidth > 1\r
-\r
-  EFI_SUCCESS         - Check box successfully created\r
-\r
---*/\r
-{\r
-  EFI_STATUS        Status;\r
-  EFI_IFR_CHECKBOX  CheckBox;\r
-  CHAR16            CurrentLanguage[4];\r
-  STRING_REF        StringToken;\r
-\r
-  //\r
-  // We do not create op-code storage widths for checkbox in excess of 8 bits for now\r
-  //\r
-  if (DataWidth > 1) {\r
-    return EFI_DEVICE_ERROR;\r
-  }\r
-\r
-  //\r
-  // Obtain current language value\r
-  //\r
-  GetCurrentLanguage (CurrentLanguage);\r
-\r
-  //\r
-  // Add first string, get first string's token\r
-  //\r
-  Status = AddString (StringBuffer, CurrentLanguage, Prompt, &StringToken);\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  CheckBox.Header.OpCode  = EFI_IFR_CHECKBOX_OP;\r
-  CheckBox.Header.Length  = sizeof (EFI_IFR_CHECKBOX);\r
-  CheckBox.QuestionId     = QuestionId;\r
-  CheckBox.Width          = DataWidth;\r
-  CheckBox.Prompt         = StringToken;\r
-\r
-  //\r
-  // Add second string, get first string's token\r
-  //\r
-  Status = AddString (StringBuffer, CurrentLanguage, Help, &StringToken);\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  CheckBox.Help   = StringToken;\r
-  CheckBox.Flags  = (UINT8) (Flags | EFI_IFR_FLAG_CREATED);\r
-\r
-  Status          = AddOpCode (FormBuffer, &CheckBox);\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-\r
-EFI_STATUS\r
-CreateNumeric (\r
-  IN      UINT16              QuestionId,\r
-  IN      UINT8               DataWidth,\r
-  IN      CHAR16              *Prompt,\r
-  IN      CHAR16              *Help,\r
-  IN      UINT16              Minimum,\r
-  IN      UINT16              Maximum,\r
-  IN      UINT16              Step,\r
-  IN      UINT16              Default,\r
-  IN      UINT8               Flags,\r
-  IN      UINT16              Key,\r
-  IN OUT  VOID                *FormBuffer,\r
-  IN OUT  VOID                *StringBuffer\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Create a numeric\r
-  \r
-Arguments:\r
-  \r
-  QuestionId      - Question ID of the numeric\r
-  \r
-  DataWidth       - DataWidth of the numeric\r
-  \r
-  Prompt          - Prompt of the numeric\r
-  \r
-  Help            - Help of the numeric\r
-  \r
-  Minimum         - Minumun boundary of the numeric\r
-  \r
-  Maximum         - Maximum boundary of the numeric\r
-  \r
-  Step            - Step of the numeric\r
-  \r
-  Default         - Default value\r
-  \r
-  Flags           - Flags of the numeric\r
-  \r
-  Key             - Key of the numeric\r
-  \r
-  FormBuffer      - The form where this numeric adds to\r
-  \r
-  StringBuffer    - String buffer created for Prompt and Help.\r
-  \r
-Returns: \r
-\r
-  EFI_DEVICE_ERROR      - DataWidth > 2\r
-  \r
-  EFI_SUCCESS           - Numeric is successfully created\r
-\r
---*/\r
-{\r
-  EFI_STATUS      Status;\r
-  EFI_IFR_NUMERIC Numeric;\r
-  CHAR16          CurrentLanguage[4];\r
-  STRING_REF      StringToken;\r
-\r
-  //\r
-  // We do not create op-code storage widths for numerics in excess of 16 bits for now\r
-  //\r
-  if (DataWidth > 2) {\r
-    return EFI_DEVICE_ERROR;\r
-  }\r
-\r
-  //\r
-  // Obtain current language value\r
-  //\r
-  GetCurrentLanguage (CurrentLanguage);\r
-\r
-  //\r
-  // Add first string, get first string's token\r
-  //\r
-  Status = AddString (StringBuffer, CurrentLanguage, Prompt, &StringToken);\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  Numeric.Header.OpCode = EFI_IFR_NUMERIC_OP;\r
-  Numeric.Header.Length = sizeof (EFI_IFR_NUMERIC);\r
-  Numeric.QuestionId    = QuestionId;\r
-  Numeric.Width         = DataWidth;\r
-  Numeric.Prompt        = StringToken;\r
-\r
-  //\r
-  // Add second string, get first string's token\r
-  //\r
-  Status = AddString (StringBuffer, CurrentLanguage, Help, &StringToken);\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  Numeric.Help    = StringToken;\r
-  Numeric.Minimum = Minimum;\r
-  Numeric.Maximum = Maximum;\r
-  Numeric.Step    = Step;\r
-  Numeric.Default = Default;\r
-  Numeric.Flags   = (UINT8) (Flags | EFI_IFR_FLAG_CREATED);\r
-  Numeric.Key     = Key;\r
-\r
-  Status          = AddOpCode (FormBuffer, &Numeric);\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-\r
-EFI_STATUS\r
-CreateString (\r
-  IN      UINT16              QuestionId,\r
-  IN      UINT8               DataWidth,\r
-  IN      CHAR16              *Prompt,\r
-  IN      CHAR16              *Help,\r
-  IN      UINT8               MinSize,\r
-  IN      UINT8               MaxSize,\r
-  IN      UINT8               Flags,\r
-  IN      UINT16              Key,\r
-  IN OUT  VOID                *FormBuffer,\r
-  IN OUT  VOID                *StringBuffer\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Create a string\r
-  \r
-Arguments:\r
-  \r
-  QuestionId      - Question ID of the string\r
-  \r
-  DataWidth       - DataWidth of the string\r
-  \r
-  Prompt          - Prompt of the string\r
-  \r
-  Help            - Help of the string\r
-  \r
-  MinSize         - Min size boundary of the string\r
-  \r
-  MaxSize         - Max size boundary of the string\r
-    \r
-  Flags           - Flags of the string\r
-  \r
-  Key             - Key of the string\r
-  \r
-  FormBuffer      - The form where this string adds to\r
-  \r
-  StringBuffer    - String buffer created for Prompt and Help.\r
-  \r
-Returns: \r
-\r
-  EFI_SUCCESS     - String successfully created.\r
-\r
---*/\r
-{\r
-  EFI_STATUS      Status;\r
-  EFI_IFR_STRING  String;\r
-  CHAR16          CurrentLanguage[4];\r
-  STRING_REF      StringToken;\r
-\r
-  //\r
-  // Obtain current language value\r
-  //\r
-  GetCurrentLanguage (CurrentLanguage);\r
-\r
-  //\r
-  // Add first string, get first string's token\r
-  //\r
-  Status = AddString (StringBuffer, CurrentLanguage, Prompt, &StringToken);\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  String.Header.OpCode  = EFI_IFR_STRING_OP;\r
-  String.Header.Length  = sizeof (EFI_IFR_STRING);\r
-  String.QuestionId     = QuestionId;\r
-  String.Width          = DataWidth;\r
-  String.Prompt         = StringToken;\r
-\r
-  //\r
-  // Add second string, get first string's token\r
-  //\r
-  Status = AddString (StringBuffer, CurrentLanguage, Help, &StringToken);\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  String.Help     = StringToken;\r
-  String.MinSize  = MinSize;\r
-  String.MaxSize  = MaxSize;\r
-  String.Flags    = (UINT8) (Flags | EFI_IFR_FLAG_CREATED);\r
-  String.Key      = Key;\r
-\r
-  Status          = AddOpCode (FormBuffer, &String);\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  return EFI_SUCCESS;\r
-}\r