Home | History | Annotate | Download | only in compiler
      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 = 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 
     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 }
     60