14f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com//
24f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
34f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com// Use of this source code is governed by a BSD-style license that can be
44f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com// found in the LICENSE file.
54f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com//
64f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com
7dcefb75e81f3eec28fb1d2d3b3847682659e7378Geoff Lang#include "compiler/translator/InfoSink.h"
84f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com
9b40ad5a418254a6cc0e68fe9854d7c0a980621f2shannonwoods@chromium.orgvoid TInfoSinkBase::prefix(TPrefixType p) {
10b40ad5a418254a6cc0e68fe9854d7c0a980621f2shannonwoods@chromium.org    switch(p) {
114e4facd4a1120f77e35b53cd4ba7d5a8adefddcfalokp@chromium.org        case EPrefixNone:
124e4facd4a1120f77e35b53cd4ba7d5a8adefddcfalokp@chromium.org            break;
134e4facd4a1120f77e35b53cd4ba7d5a8adefddcfalokp@chromium.org        case EPrefixWarning:
144e4facd4a1120f77e35b53cd4ba7d5a8adefddcfalokp@chromium.org            sink.append("WARNING: ");
154e4facd4a1120f77e35b53cd4ba7d5a8adefddcfalokp@chromium.org            break;
164e4facd4a1120f77e35b53cd4ba7d5a8adefddcfalokp@chromium.org        case EPrefixError:
174e4facd4a1120f77e35b53cd4ba7d5a8adefddcfalokp@chromium.org            sink.append("ERROR: ");
184e4facd4a1120f77e35b53cd4ba7d5a8adefddcfalokp@chromium.org            break;
194e4facd4a1120f77e35b53cd4ba7d5a8adefddcfalokp@chromium.org        case EPrefixInternalError:
204e4facd4a1120f77e35b53cd4ba7d5a8adefddcfalokp@chromium.org            sink.append("INTERNAL ERROR: ");
214e4facd4a1120f77e35b53cd4ba7d5a8adefddcfalokp@chromium.org            break;
224e4facd4a1120f77e35b53cd4ba7d5a8adefddcfalokp@chromium.org        case EPrefixUnimplemented:
234e4facd4a1120f77e35b53cd4ba7d5a8adefddcfalokp@chromium.org            sink.append("UNIMPLEMENTED: ");
244e4facd4a1120f77e35b53cd4ba7d5a8adefddcfalokp@chromium.org            break;
254e4facd4a1120f77e35b53cd4ba7d5a8adefddcfalokp@chromium.org        case EPrefixNote:
264e4facd4a1120f77e35b53cd4ba7d5a8adefddcfalokp@chromium.org            sink.append("NOTE: ");
274e4facd4a1120f77e35b53cd4ba7d5a8adefddcfalokp@chromium.org            break;
284e4facd4a1120f77e35b53cd4ba7d5a8adefddcfalokp@chromium.org        default:
294e4facd4a1120f77e35b53cd4ba7d5a8adefddcfalokp@chromium.org            sink.append("UNKOWN ERROR: ");
304e4facd4a1120f77e35b53cd4ba7d5a8adefddcfalokp@chromium.org            break;
314f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com    }
324f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com}
334f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com
34b40ad5a418254a6cc0e68fe9854d7c0a980621f2shannonwoods@chromium.orgvoid TInfoSinkBase::location(int file, int line) {
354e4facd4a1120f77e35b53cd4ba7d5a8adefddcfalokp@chromium.org    TPersistStringStream stream;
364e4facd4a1120f77e35b53cd4ba7d5a8adefddcfalokp@chromium.org    if (line)
37b40ad5a418254a6cc0e68fe9854d7c0a980621f2shannonwoods@chromium.org        stream << file << ":" << line;
384e4facd4a1120f77e35b53cd4ba7d5a8adefddcfalokp@chromium.org    else
39b40ad5a418254a6cc0e68fe9854d7c0a980621f2shannonwoods@chromium.org        stream << file << ":? ";
404e4facd4a1120f77e35b53cd4ba7d5a8adefddcfalokp@chromium.org    stream << ": ";
414f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com
424e4facd4a1120f77e35b53cd4ba7d5a8adefddcfalokp@chromium.org    sink.append(stream.str());
434f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com}
444f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com
45b40ad5a418254a6cc0e68fe9854d7c0a980621f2shannonwoods@chromium.orgvoid TInfoSinkBase::location(const TSourceLoc& loc) {
46b40ad5a418254a6cc0e68fe9854d7c0a980621f2shannonwoods@chromium.org    location(loc.first_file, loc.first_line);
474e4facd4a1120f77e35b53cd4ba7d5a8adefddcfalokp@chromium.org}
484f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com
49b40ad5a418254a6cc0e68fe9854d7c0a980621f2shannonwoods@chromium.orgvoid TInfoSinkBase::message(TPrefixType p, const TSourceLoc& loc, const char* m) {
50b40ad5a418254a6cc0e68fe9854d7c0a980621f2shannonwoods@chromium.org    prefix(p);
514e4facd4a1120f77e35b53cd4ba7d5a8adefddcfalokp@chromium.org    location(loc);
52b40ad5a418254a6cc0e68fe9854d7c0a980621f2shannonwoods@chromium.org    sink.append(m);
534e4facd4a1120f77e35b53cd4ba7d5a8adefddcfalokp@chromium.org    sink.append("\n");
544f39fd99568ce175f04b5ed72062bfed0fa41803daniel@transgaming.com}
55