Move ANGLE to Sources/ThirdParty
[WebKit.git] / Sources / ThirdParty / ANGLE / src / compiler / InfoSink.cpp
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 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
34 void TInfoSinkBase::location(TSourceLoc loc) {
35     int string = loc >> SourceLocStringShift;
36     int line = loc & SourceLocLineMask;
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
48 void TInfoSinkBase::message(TPrefixType message, const char* s) {
49     prefix(message);
50     sink.append(s);
51     sink.append("\n");
52 }
53
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 }