summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-rc/ResourceScriptStmt.cpp
diff options
context:
space:
mode:
authorMarek Sokolowski <mnbvmar@gmail.com>2017-09-29 17:46:32 +0000
committerMarek Sokolowski <mnbvmar@gmail.com>2017-09-29 17:46:32 +0000
commitc75a087c7a9beee1e0c23edf4c6ba173524c4773 (patch)
tree6481da56150164701e41b94a9284002bf6c952bd /llvm/tools/llvm-rc/ResourceScriptStmt.cpp
parentd06dd61292ef6d1a80ce8794d913c5cd414e3e6b (diff)
downloadbcm5719-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.cpp21
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;
OpenPOWER on IntegriCloud