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