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)9void 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)34void 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)48void 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)54void 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