diff options
author | Marek Sokolowski <mnbvmar@gmail.com> | 2017-08-28 23:46:30 +0000 |
---|---|---|
committer | Marek Sokolowski <mnbvmar@gmail.com> | 2017-08-28 23:46:30 +0000 |
commit | 99ecb0ebcaa4b953fcc5e9fbf49b233ef1b9b294 (patch) | |
tree | d9bb28e179e99e08584bd940da9d4b21cf16f707 /llvm/tools/llvm-rc/ResourceScriptStmt.cpp | |
parent | 873a0746f124c47413407a7f767c906db17828db (diff) | |
download | bcm5719-llvm-99ecb0ebcaa4b953fcc5e9fbf49b233ef1b9b294.tar.gz bcm5719-llvm-99ecb0ebcaa4b953fcc5e9fbf49b233ef1b9b294.zip |
[llvm-rc] Add MENU parsing ability (parser, pt 4/8).
This extends llvm-rc parsing tool by MENU resource
(msdn.microsoft.com/en-us/library/windows/desktop/aa381025(v=vs.85).aspx).
As for now, MENUEX
(msdn.microsoft.com/en-us/library/windows/desktop/aa381023(v=vs.85).aspx)
seems unnecessary.
Thanks for Nico Weber for his original work in this area.
Differential Revision: https://reviews.llvm.org/D36898
llvm-svn: 311956
Diffstat (limited to 'llvm/tools/llvm-rc/ResourceScriptStmt.cpp')
-rw-r--r-- | llvm/tools/llvm-rc/ResourceScriptStmt.cpp | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/llvm/tools/llvm-rc/ResourceScriptStmt.cpp b/llvm/tools/llvm-rc/ResourceScriptStmt.cpp index 150b668bd91..9f61ce451de 100644 --- a/llvm/tools/llvm-rc/ResourceScriptStmt.cpp +++ b/llvm/tools/llvm-rc/ResourceScriptStmt.cpp @@ -65,6 +65,46 @@ raw_ostream &HTMLResource::log(raw_ostream &OS) const { return OS << "HTML (" << ResName << "): " << HTMLLoc << "\n"; } +StringRef MenuDefinition::OptionsStr[MenuDefinition::NumFlags] = { + "CHECKED", "GRAYED", "HELP", "INACTIVE", "MENUBARBREAK", "MENUBREAK"}; + +raw_ostream &MenuDefinition::logFlags(raw_ostream &OS, uint8_t Flags) { + for (size_t i = 0; i < NumFlags; ++i) + if (Flags & (1U << i)) + OS << " " << OptionsStr[i]; + return OS; +} + +raw_ostream &MenuDefinitionList::log(raw_ostream &OS) const { + OS << " Menu list starts\n"; + for (auto &Item : Definitions) + Item->log(OS); + return OS << " Menu list ends\n"; +} + +raw_ostream &MenuItem::log(raw_ostream &OS) const { + OS << " MenuItem (" << Name << "), ID = " << Id; + logFlags(OS, Flags); + return OS << "\n"; +} + +raw_ostream &MenuSeparator::log(raw_ostream &OS) const { + return OS << " Menu separator\n"; +} + +raw_ostream &PopupItem::log(raw_ostream &OS) const { + OS << " Popup (" << Name << ")"; + logFlags(OS, Flags); + OS << ":\n"; + return SubItems.log(OS); +} + +raw_ostream &MenuResource::log(raw_ostream &OS) const { + OS << "Menu (" << ResName << "):\n"; + OptStatements.log(OS); + return Elements.log(OS); +} + raw_ostream &StringTableResource::log(raw_ostream &OS) const { OS << "StringTable:\n"; OptStatements.log(OS); |