xref: /llvm-project/llvm/tools/llvm-rc/ResourceScriptStmt.cpp (revision 5cd3d5c8d63bd1070da792fe06b4dc4401a20d06)
1 //
2 //                     The LLVM Compiler Infrastructure
3 //
4 // This file is distributed under the University of Illinois Open Source
5 // License. See LICENSE.TXT for details.
6 //
7 //===---------------------------------------------------------------------===//
8 //
9 // This implements methods defined in ResourceScriptStmt.h.
10 //
11 // Ref: msdn.microsoft.com/en-us/library/windows/desktop/aa380599(v=vs.85).aspx
12 //
13 //===---------------------------------------------------------------------===//
14 
15 #include "ResourceScriptStmt.h"
16 
17 namespace llvm {
18 namespace rc {
19 
20 raw_ostream &operator<<(raw_ostream &OS, const IntOrString &Item) {
21   if (Item.IsInt)
22     return OS << Item.Data.Int;
23   else
24     return OS << Item.Data.String;
25 }
26 
27 raw_ostream &OptionalStmtList::log(raw_ostream &OS) const {
28   for (const auto &Stmt : Statements) {
29     OS << "  Option: ";
30     Stmt->log(OS);
31   }
32   return OS;
33 }
34 
35 raw_ostream &LanguageResource::log(raw_ostream &OS) const {
36   return OS << "Language: " << Lang << ", Sublanguage: " << SubLang << "\n";
37 }
38 
39 raw_ostream &IconResource::log(raw_ostream &OS) const {
40   return OS << "Icon (" << ResName << "): " << IconLoc << "\n";
41 }
42 
43 raw_ostream &StringTableResource::log(raw_ostream &OS) const {
44   OS << "StringTable:\n";
45   OptStatements.log(OS);
46   for (const auto &String : Table)
47     OS << "  " << String.first << " => " << String.second << "\n";
48   return OS;
49 }
50 
51 raw_ostream &CharacteristicsStmt::log(raw_ostream &OS) const {
52   return OS << "Characteristics: " << Value << "\n";
53 }
54 
55 raw_ostream &VersionStmt::log(raw_ostream &OS) const {
56   return OS << "Version: " << Value << "\n";
57 }
58 
59 } // namespace rc
60 } // namespace llvm
61