Paradox Game Engine  v1.0.0 beta06
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros Pages
LoggerResult.cs
Go to the documentation of this file.
1 // Copyright (c) 2014 Silicon Studio Corp. (http://siliconstudio.co.jp)
2 // This file is distributed under GPL v3. See LICENSE.md for details.
3 using System.Collections.Generic;
4 using System.IO;
5 using System.Text;
6 using SiliconStudio.Shaders.Ast;
7 
8 namespace SiliconStudio.Shaders.Utility
9 {
10  /// <summary>
11  /// A class to collect parsing/expression messages.
12  /// </summary>
13  public class LoggerResult
14  {
15  /// <summary>
16  /// Initializes a new instance of the <see cref="LoggerResult"/> class.
17  /// </summary>
18  public LoggerResult()
19  {
20  this.Messages = new List<ReportMessage>();
21  }
22 
23  /// <summary>
24  /// Gets or sets a value indicating whether this instance has errors.
25  /// </summary>
26  /// <value>
27  /// <c>true</c> if this instance has errors; otherwise, <c>false</c>.
28  /// </value>
29  public bool HasErrors { get; set; }
30 
31  /// <summary>
32  /// Gets or sets the messages.
33  /// </summary>
34  /// <value>
35  /// The messages.
36  /// </value>
37  public IList<ReportMessage> Messages { get; private set; }
38 
39  /// <summary>
40  /// Dumps the messages.
41  /// </summary>
42  /// <param name="level">The level.</param>
43  /// <param name="writer">The writer.</param>
44  public void DumpMessages(ReportMessageLevel level, TextWriter writer)
45  {
46  foreach (var reportMessage in this.Messages)
47  {
48  if (reportMessage.Level >= level)
49  {
50  writer.WriteLine(reportMessage);
51  }
52  }
53  }
54 
55  /// <summary>
56  /// Copies all messages to another instance.
57  /// </summary>
58  /// <param name="results">The results.</param>
59  public void CopyTo(LoggerResult results)
60  {
61  foreach (var reportMessage in this.Messages)
62  {
63  results.Messages.Add(reportMessage);
64  }
65 
66  if (HasErrors)
67  results.HasErrors = true;
68  }
69 
70  /// <summary>
71  /// Logs an Error with the specified message.
72  /// </summary>
73  /// <param name="message">The message.</param>
74  /// <param name="span">The span.</param>
75  public void Error(MessageCode message, SourceSpan span)
76  {
77  this.AddMessage(ReportMessageLevel.Error, message, span);
78  }
79 
80  /// <summary>
81  /// Logs an Error with the specified message.
82  /// </summary>
83  /// <param name="message">The message.</param>
84  /// <param name="span">The span.</param>
85  /// <param name="parameters">The parameters.</param>
86  public void Error(MessageCode message, SourceSpan span, params object[] parameters)
87  {
88  this.AddMessage(ReportMessageLevel.Error, message, span, parameters);
89  }
90 
91  /// <summary>
92  /// Logs an Info with the specified message.
93  /// </summary>
94  /// <param name="message">The message.</param>
95  /// <param name="span">The span.</param>
96  public void Info(MessageCode message, SourceSpan span)
97  {
98  this.AddMessage(ReportMessageLevel.Info, message, span);
99  }
100 
101  /// <summary>
102  /// Logs an Info with the specified message.
103  /// </summary>
104  /// <param name="message">The message.</param>
105  /// <param name="span">The span.</param>
106  /// <param name="parameters">The parameters.</param>
107  public void Info(MessageCode message, SourceSpan span, params object[] parameters)
108  {
109  this.AddMessage(ReportMessageLevel.Info, message, span, parameters);
110  }
111 
112  /// <summary>
113  /// Logs an Warning with the specified message.
114  /// </summary>
115  /// <param name="message">The message.</param>
116  /// <param name="span">The span.</param>
117  public void Warning(MessageCode message, SourceSpan span)
118  {
119  this.AddMessage(ReportMessageLevel.Warning, message, span);
120  }
121 
122  /// <summary>
123  /// Logs an Warning with the specified message.
124  /// </summary>
125  /// <param name="message">The message.</param>
126  /// <param name="span">The span.</param>
127  /// <param name="parameters">The parameters.</param>
128  public void Warning(MessageCode message, SourceSpan span, params object[] parameters)
129  {
130  this.AddMessage(ReportMessageLevel.Warning, message, span, parameters);
131  }
132 
133  /// <summary>
134  /// Adds the message.
135  /// </summary>
136  /// <param name="level">The type.</param>
137  /// <param name="message">The message.</param>
138  /// <param name="span">The span.</param>
139  protected void AddMessage(ReportMessageLevel level, MessageCode message, SourceSpan span)
140  {
141  if (level == ReportMessageLevel.Error) this.HasErrors = true;
142  this.Messages.Add(new ReportMessage(level, message.Code, message.Text, span));
143  }
144 
145  /// <summary>
146  /// Adds the message.
147  /// </summary>
148  /// <param name="level">The type.</param>
149  /// <param name="message">The message.</param>
150  /// <param name="span">The span.</param>
151  /// <param name="parameters">The parameters.</param>
152  protected void AddMessage(ReportMessageLevel level, MessageCode message, SourceSpan span, params object[] parameters)
153  {
154  if (level == ReportMessageLevel.Error) this.HasErrors = true;
155  this.Messages.Add(new ReportMessage(level, message.Code, string.Format(message.Text, parameters), span));
156  }
157 
158  public override string ToString()
159  {
160  var text = new StringBuilder();
161  if (HasErrors)
162  {
163  foreach (var reportMessage in Messages)
164  {
165  text.AppendLine(reportMessage.ToString());
166  }
167  }
168  else
169  {
170  text.AppendLine("Ok");
171  }
172  return text.ToString();
173  }
174  }
175 }
void CopyTo(LoggerResult results)
Copies all messages to another instance.
Definition: LoggerResult.cs:59
void Error(MessageCode message, SourceSpan span)
Logs an Error with the specified message.
Definition: LoggerResult.cs:75
A class to collect parsing/expression messages.
Definition: LoggerResult.cs:13
void AddMessage(ReportMessageLevel level, MessageCode message, SourceSpan span)
Adds the message.
void Warning(MessageCode message, SourceSpan span, params object[] parameters)
Logs an Warning with the specified message.
void Warning(MessageCode message, SourceSpan span)
Logs an Warning with the specified message.
ReportMessageLevel
Level of a ReportMessage.
void DumpMessages(ReportMessageLevel level, TextWriter writer)
Dumps the messages.
Definition: LoggerResult.cs:44
void Info(MessageCode message, SourceSpan span)
Logs an Info with the specified message.
Definition: LoggerResult.cs:96
void Info(MessageCode message, SourceSpan span, params object[] parameters)
Logs an Info with the specified message.
void AddMessage(ReportMessageLevel level, MessageCode message, SourceSpan span, params object[] parameters)
Adds the message.
LoggerResult()
Initializes a new instance of the LoggerResult class.
Definition: LoggerResult.cs:18
void Error(MessageCode message, SourceSpan span, params object[] parameters)
Logs an Error with the specified message.
Definition: LoggerResult.cs:86