+++ /dev/null
-/*++\r
-\r
-Copyright (c) 2004 - 2010, 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
-Module Name:\r
-\r
- StringDB.h\r
-\r
-Abstract:\r
-\r
- Common defines and prototypes for string database management\r
- \r
---*/\r
-\r
-#ifndef _STRING_DB_H_\r
-#define _STRING_DB_H_\r
-\r
-#define LANGUAGE_NAME_STRING_NAME L"$LANGUAGE_NAME"\r
-#define PRINTABLE_LANGUAGE_NAME_STRING_NAME L"$PRINTABLE_LANGUAGE_NAME"\r
-\r
-typedef CHAR16 WCHAR;\r
-\r
-#define NARROW_CHAR 0xFFF0\r
-#define WIDE_CHAR 0xFFF1\r
-#define NON_BREAKING_CHAR 0xFFF2\r
-#define GLYPH_WIDTH 8\r
-#define GLYPH_HEIGHT 19\r
-\r
-#define STRING_DB_KEY (('S' << 24) | ('D' << 16) | ('B' << 8) | 'K')\r
-//\r
-// Version supported by this tool\r
-//\r
-#define STRING_DB_VERSION 0x00010000\r
-\r
-#define STRING_DB_MAJOR_VERSION_MASK 0xFFFF0000\r
-#define STRING_DB_MINOR_VERSION_MASK 0x0000FFFF\r
-\r
-#define DEFINE_STR L"// #define"\r
-\r
-#define EFI_STRING_ID_BEGIN 0x01\r
-\r
-//\r
-// This is the header that gets written to the top of the\r
-// output binary database file.\r
-//\r
-typedef struct {\r
- UINT32 Key;\r
- UINT32 HeaderSize;\r
- UINT32 Version;\r
- UINT32 NumStringIdenfiers;\r
- UINT32 StringIdentifiersSize;\r
- UINT32 NumLanguages;\r
-} STRING_DB_HEADER;\r
-\r
-//\r
-// When we write out data to the database, we have a UINT16 identifier, which\r
-// indicates what follows, followed by the data. Here's the structure.\r
-//\r
-typedef struct {\r
- UINT16 DataType;\r
- UINT16 Reserved;\r
-} DB_DATA_ITEM_HEADER;\r
-\r
-#define DB_DATA_TYPE_INVALID 0x0000\r
-#define DB_DATA_TYPE_STRING_IDENTIFIER 0x0001\r
-#define DB_DATA_TYPE_LANGUAGE_DEFINITION 0x0002\r
-#define DB_DATA_TYPE_STRING_DEFINITION 0x0003\r
-#define DB_DATA_TYPE_LAST DB_DATA_TYPE_STRING_DEFINITION\r
-\r
-//\r
-// We have to keep track of a list of languages, each of which has its own\r
-// list of strings. Define a structure to keep track of all languages and\r
-// their list of strings.\r
-//\r
-typedef struct _STRING_LIST {\r
- struct _STRING_LIST *Next;\r
- UINT32 Size; // number of bytes in string, including null terminator\r
- WCHAR *LanguageName;\r
- WCHAR *StringName; // for example STR_ID_TEXT1\r
- WCHAR *Scope; //\r
- WCHAR *Str; // the actual string\r
- UINT16 Flags; // properties of this string (used, undefined)\r
-} STRING_LIST;\r
-\r
-typedef struct _LANGUAGE_LIST {\r
- struct _LANGUAGE_LIST *Next;\r
- WCHAR *LanguageName;\r
- WCHAR *PrintableLanguageName;\r
- WCHAR *SecondaryLanguageList;\r
- STRING_LIST *String;\r
- STRING_LIST *LastString;\r
-} LANGUAGE_LIST;\r
-\r
-//\r
-// We also keep track of all the string identifier names, which we assign unique\r
-// values to. Create a structure to keep track of them all.\r
-//\r
-typedef struct _STRING_IDENTIFIER {\r
- struct _STRING_IDENTIFIER *Next;\r
- UINT32 Index; // only need 16 bits, but makes it easier with UINT32\r
- WCHAR *StringName;\r
- UINT16 Flags; // if someone referenced it via STRING_TOKEN()\r
-} STRING_IDENTIFIER;\r
-//\r
-// Keep our globals in this structure to be as modular as possible.\r
-//\r
-typedef struct {\r
- FILE *StringDBFptr;\r
- LANGUAGE_LIST *LanguageList;\r
- LANGUAGE_LIST *LastLanguageList;\r
- LANGUAGE_LIST *CurrentLanguage; // keep track of the last language they used\r
- STRING_IDENTIFIER *StringIdentifier;\r
- STRING_IDENTIFIER *LastStringIdentifier;\r
- UINT8 *StringDBFileName;\r
- UINT32 NumStringIdentifiers;\r
- UINT32 NumStringIdentifiersReferenced;\r
- STRING_IDENTIFIER *CurrentStringIdentifier; // keep track of the last string identifier they added\r
- WCHAR *CurrentScope;\r
-} STRING_DB_DATA;\r
-\r
-typedef struct _SPkgBlkBuffer {\r
- UINT32 mBlkSize;\r
- VOID *mBlkBuffer;\r
- struct _SPkgBlkBuffer *mNext;\r
-} SPkgBlkBuffer;\r
-\r
-void\r
-StringDBConstructor (\r
- void\r
- )\r
-;\r
-void\r
-StringDBDestructor (\r
- void\r
- )\r
-;\r
-\r
-STATUS\r
-StringDBAddString (\r
- WCHAR *LanguageName,\r
- WCHAR *StringIdentifier,\r
- WCHAR *Scope,\r
- WCHAR *String,\r
- BOOLEAN Format,\r
- UINT16 Flags\r
- )\r
-;\r
-\r
-STATUS\r
-StringDBSetScope (\r
- WCHAR *Scope\r
- )\r
-;\r
-\r
-#define STRING_FLAGS_REFERENCED 0x0001 // if referenced somewhere\r
-#define STRING_FLAGS_UNDEFINED 0x0002 // if we added it for padding purposes\r
-#define STRING_FLAGS_INDEX_ASSIGNED 0x0004 // so don't change the index value\r
-#define STRING_ID_INVALID 0xFFFF\r
-#define STRING_ID_LANGUAGE_NAME 0x0000\r
-#define STRING_ID_PRINTABLE_LANGUAGE_NAME 0x0001\r
-\r
-STATUS\r
-StringDBAddStringIdentifier (\r
- WCHAR *StringIdentifier,\r
- UINT16 *NewId,\r
- UINT16 Flags\r
- )\r
-;\r
-\r
-STATUS\r
-StringDBReadDatabase (\r
- INT8 *DBFileName,\r
- BOOLEAN IgnoreIfNotExist,\r
- BOOLEAN Verbose\r
- )\r
-;\r
-\r
-STATUS\r
-StringDBWriteDatabase (\r
- INT8 *DBFileName,\r
- BOOLEAN Verbose\r
- )\r
-;\r
-\r
-STATUS\r
-StringDBDumpDatabase (\r
- INT8 *DBFileName,\r
- INT8 *OutputFileName,\r
- BOOLEAN Verbose\r
- )\r
-;\r
-\r
-STATUS\r
-StringDBAddLanguage (\r
- WCHAR *LanguageName,\r
- WCHAR *PrintableLanguageName,\r
- WCHAR *SecondaryLanguageList\r
- )\r
-;\r
-\r
-STATUS\r
-StringDBAddSecondaryLanguage (\r
- WCHAR *LanguageName,\r
- WCHAR *SecondaryLanguageList\r
- )\r
-;\r
-\r
-STATUS\r
-StringDBDumpCStrings (\r
- INT8 *BaseName,\r
- INT8 *FileName,\r
- WCHAR_STRING_LIST *LanguagesOfInterests\r
- )\r
-;\r
-\r
-STATUS\r
-StringDBCreateHiiExportPack (\r
- INT8 *OutputFileName,\r
- WCHAR_STRING_LIST *LanguagesOfInterests\r
- )\r
-;\r
-\r
-STATUS\r
-StringDBDumpStringDefines (\r
- INT8 *FileName,\r
- INT8 *BaseName\r
- )\r
-;\r
-\r
-STATUS\r
-StringDBSetCurrentLanguage (\r
- WCHAR *LanguageName\r
- )\r
-;\r
-\r
-STATUS\r
-StringDBSetStringReferenced (\r
- INT8 *StringIdentifierName,\r
- BOOLEAN IgnoreNotFound\r
- )\r
-;\r
-\r
-void\r
-StringDBFormatString (\r
- WCHAR *String\r
- )\r
-;\r
-\r
-LANGUAGE_LIST *\r
-StringDBFindLanguageList (\r
- WCHAR *LanguageName\r
- )\r
-;\r
-\r
-#endif // #ifndef _STRING_DB_H_\r