diff options
author | Marek Sokolowski <mnbvmar@gmail.com> | 2017-09-29 17:46:32 +0000 |
---|---|---|
committer | Marek Sokolowski <mnbvmar@gmail.com> | 2017-09-29 17:46:32 +0000 |
commit | c75a087c7a9beee1e0c23edf4c6ba173524c4773 (patch) | |
tree | 6481da56150164701e41b94a9284002bf6c952bd /llvm/tools/llvm-rc/ResourceScriptStmt.cpp | |
parent | d06dd61292ef6d1a80ce8794d913c5cd414e3e6b (diff) | |
download | bcm5719-llvm-c75a087c7a9beee1e0c23edf4c6ba173524c4773.tar.gz bcm5719-llvm-c75a087c7a9beee1e0c23edf4c6ba173524c4773.zip |
[llvm-rc] Refactoring needed for ACCELERATORS and MENU resources.
This is a part of llvm-rc serialization patch set (serialization, pt 1.5).
This:
* Unifies the internal representation of flags in ACCELERATORS and MENU
with the corresponding representation in .res files (noticed in
https://reviews.llvm.org/D37828#inline-329828).
* Creates an RCResource subclass, OptStatementsRCResource, describing
resource statements that can declare resource-local optional statements
(proposed in https://reviews.llvm.org/D37824#inline-329775).
These modifications don't fit to any of the current patches, so I'm
submitting them as a separate patch.
Differential Revision: https://reviews.llvm.org/D37841
llvm-svn: 314541
Diffstat (limited to 'llvm/tools/llvm-rc/ResourceScriptStmt.cpp')
-rw-r--r-- | llvm/tools/llvm-rc/ResourceScriptStmt.cpp | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/llvm/tools/llvm-rc/ResourceScriptStmt.cpp b/llvm/tools/llvm-rc/ResourceScriptStmt.cpp index 792ac40e55d..3e5a0e4d32b 100644 --- a/llvm/tools/llvm-rc/ResourceScriptStmt.cpp +++ b/llvm/tools/llvm-rc/ResourceScriptStmt.cpp @@ -40,13 +40,17 @@ StringRef AcceleratorsResource::Accelerator::OptionsStr [AcceleratorsResource::Accelerator::NumFlags] = { "ASCII", "VIRTKEY", "NOINVERT", "ALT", "SHIFT", "CONTROL"}; +uint32_t AcceleratorsResource::Accelerator::OptionsFlags + [AcceleratorsResource::Accelerator::NumFlags] = {ASCII, VIRTKEY, NOINVERT, + ALT, SHIFT, CONTROL}; + raw_ostream &AcceleratorsResource::log(raw_ostream &OS) const { OS << "Accelerators (" << ResName << "): \n"; - OptStatements.log(OS); + OptStatements->log(OS); for (const auto &Acc : Accelerators) { OS << " Accelerator: " << Acc.Event << " " << Acc.Id; for (size_t i = 0; i < Accelerator::NumFlags; ++i) - if (Acc.Flags & (1U << i)) + if (Acc.Flags & Accelerator::OptionsFlags[i]) OS << " " << Accelerator::OptionsStr[i]; OS << "\n"; } @@ -68,9 +72,12 @@ raw_ostream &HTMLResource::log(raw_ostream &OS) const { StringRef MenuDefinition::OptionsStr[MenuDefinition::NumFlags] = { "CHECKED", "GRAYED", "HELP", "INACTIVE", "MENUBARBREAK", "MENUBREAK"}; -raw_ostream &MenuDefinition::logFlags(raw_ostream &OS, uint8_t Flags) { +uint32_t MenuDefinition::OptionsFlags[MenuDefinition::NumFlags] = { + CHECKED, GRAYED, HELP, INACTIVE, MENUBARBREAK, MENUBREAK}; + +raw_ostream &MenuDefinition::logFlags(raw_ostream &OS, uint16_t Flags) { for (size_t i = 0; i < NumFlags; ++i) - if (Flags & (1U << i)) + if (Flags & OptionsFlags[i]) OS << " " << OptionsStr[i]; return OS; } @@ -101,13 +108,13 @@ raw_ostream &PopupItem::log(raw_ostream &OS) const { raw_ostream &MenuResource::log(raw_ostream &OS) const { OS << "Menu (" << ResName << "):\n"; - OptStatements.log(OS); + OptStatements->log(OS); return Elements.log(OS); } raw_ostream &StringTableResource::log(raw_ostream &OS) const { OS << "StringTable:\n"; - OptStatements.log(OS); + OptStatements->log(OS); for (const auto &String : Table) OS << " " << String.first << " => " << String.second << "\n"; return OS; @@ -136,7 +143,7 @@ raw_ostream &DialogResource::log(raw_ostream &OS) const { OS << "Dialog" << (IsExtended ? "Ex" : "") << " (" << ResName << "): loc: (" << X << ", " << Y << "), size: [" << Width << ", " << Height << "], help ID: " << HelpID << "\n"; - OptStatements.log(OS); + OptStatements->log(OS); for (auto &Ctl : Controls) Ctl.log(OS); return OS; |