Edit

kc3-lang/angle/src/compiler/InfoSink.cpp

Branch :

  • Show log

    Commit

  • Author : alokp@chromium.org
    Date : 2010-11-12 15:42:16
    Hash : 044a5cf8
    Message : Refactored glslang grammar files to make: - lexer and parser reentrant - line number handling automatic Caveats: - The preprocessor is still not thread-safe and full of bugs. I have another not-yet-ready patch to replace the preprocessor. - The grammar files use options that are not supported by the old versions of flex and bison checked into compiler/tools. So I need to check-in the generated lexer-parser along with a shell script to generate them. Review URL: http://codereview.appspot.com/2992041 git-svn-id: https://angleproject.googlecode.com/svn/trunk@475 736b8ea6-26fd-11df-bfd4-992fa37f6226

  • src/compiler/InfoSink.cpp
  • //
    // Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
    // Use of this source code is governed by a BSD-style license that can be
    // found in the LICENSE file.
    //
    
    #include "compiler/InfoSink.h"
    
    void TInfoSinkBase::prefix(TPrefixType message) {
        switch(message) {
            case EPrefixNone:
                break;
            case EPrefixWarning:
                sink.append("WARNING: ");
                break;
            case EPrefixError:
                sink.append("ERROR: ");
                break;
            case EPrefixInternalError:
                sink.append("INTERNAL ERROR: ");
                break;
            case EPrefixUnimplemented:
                sink.append("UNIMPLEMENTED: ");
                break;
            case EPrefixNote:
                sink.append("NOTE: ");
                break;
            default:
                sink.append("UNKOWN ERROR: ");
                break;
        }
    }
    
    void TInfoSinkBase::location(TSourceLoc loc) {
        int string = 0, line = 0;
        DecodeSourceLoc(loc, &string, &line);
    
        TPersistStringStream stream;
        if (line)
            stream << string << ":" << line;
        else
            stream << string << ":? ";
        stream << ": ";
    
        sink.append(stream.str());
    }
    
    void TInfoSinkBase::message(TPrefixType message, const char* s) {
        prefix(message);
        sink.append(s);
        sink.append("\n");
    }
    
    void TInfoSinkBase::message(TPrefixType message, const char* s, TSourceLoc loc) {
        prefix(message);
        location(loc);
        sink.append(s);
        sink.append("\n");
    }