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 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 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 48void TInfoSinkBase::message(TPrefixType message, const char* s) { 49 prefix(message); 50 sink.append(s); 51 sink.append("\n"); 52} 53 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