|
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 |
|
9 void TInfoSinkBase::prefix(TPrefixType p) { |
|
10 switch(p) { |
|
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 |
|
34 void TInfoSinkBase::location(int file, int line) { |
|
35 TPersistStringStream stream; |
|
36 if (line) |
|
37 stream << file << ":" << line; |
|
38 else |
|
39 stream << file << ":? "; |
|
40 stream << ": "; |
|
41 |
|
42 sink.append(stream.str()); |
|
43 } |
|
44 |
|
45 void TInfoSinkBase::location(const TSourceLoc& loc) { |
|
46 location(loc.first_file, loc.first_line); |
|
47 } |
|
48 |
|
49 void TInfoSinkBase::message(TPrefixType p, const TSourceLoc& loc, const char* m) { |
|
50 prefix(p); |
|
51 location(loc); |
|
52 sink.append(m); |
|
53 sink.append("\n"); |
|
54 } |