• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //
2 // Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
5 //
6 
7 #include "compiler/InfoSink.h"
8 
prefix(TPrefixType message)9 void TInfoSinkBase::prefix(TPrefixType message) {
10     switch(message) {
11         case EPrefixNone:
12             break;
13         case EPrefixWarning:
14             sink.append("WARNING: ");
15             break;
16         case EPrefixError:
17             sink.append("ERROR: ");
18             break;
19         case EPrefixInternalError:
20             sink.append("INTERNAL ERROR: ");
21             break;
22         case EPrefixUnimplemented:
23             sink.append("UNIMPLEMENTED: ");
24             break;
25         case EPrefixNote:
26             sink.append("NOTE: ");
27             break;
28         default:
29             sink.append("UNKOWN ERROR: ");
30             break;
31     }
32 }
33 
location(TSourceLoc loc)34 void TInfoSinkBase::location(TSourceLoc loc) {
35     int string = 0, line = 0;
36     DecodeSourceLoc(loc, &string, &line);
37 
38     TPersistStringStream stream;
39     if (line)
40         stream << string << ":" << line;
41     else
42         stream << string << ":? ";
43     stream << ": ";
44 
45     sink.append(stream.str());
46 }
47 
message(TPrefixType message,const char * s)48 void TInfoSinkBase::message(TPrefixType message, const char* s) {
49     prefix(message);
50     sink.append(s);
51     sink.append("\n");
52 }
53 
message(TPrefixType message,const char * s,TSourceLoc loc)54 void TInfoSinkBase::message(TPrefixType message, const char* s, TSourceLoc loc) {
55     prefix(message);
56     location(loc);
57     sink.append(s);
58     sink.append("\n");
59 }
60