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 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 34void 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 45void TInfoSinkBase::location(const TSourceLoc& loc) { 46 location(loc.first_file, loc.first_line); 47} 48 49void 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} 55