diff options
Diffstat (limited to 'chromium/third_party/angle/src/compiler/InfoSink.h')
-rw-r--r-- | chromium/third_party/angle/src/compiler/InfoSink.h | 116 |
1 files changed, 0 insertions, 116 deletions
diff --git a/chromium/third_party/angle/src/compiler/InfoSink.h b/chromium/third_party/angle/src/compiler/InfoSink.h deleted file mode 100644 index be0ddffe31f..00000000000 --- a/chromium/third_party/angle/src/compiler/InfoSink.h +++ /dev/null @@ -1,116 +0,0 @@ -// -// 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. -// - -#ifndef _INFOSINK_INCLUDED_ -#define _INFOSINK_INCLUDED_ - -#include <math.h> -#include <stdlib.h> -#include "compiler/Common.h" - -// Returns the fractional part of the given floating-point number. -inline float fractionalPart(float f) { - float intPart = 0.0f; - return modff(f, &intPart); -} - -// -// TPrefixType is used to centralize how info log messages start. -// See below. -// -enum TPrefixType { - EPrefixNone, - EPrefixWarning, - EPrefixError, - EPrefixInternalError, - EPrefixUnimplemented, - EPrefixNote -}; - -// -// Encapsulate info logs for all objects that have them. -// -// The methods are a general set of tools for getting a variety of -// messages and types inserted into the log. -// -class TInfoSinkBase { -public: - TInfoSinkBase() {} - - template <typename T> - TInfoSinkBase& operator<<(const T& t) { - TPersistStringStream stream; - stream << t; - sink.append(stream.str()); - return *this; - } - // Override << operator for specific types. It is faster to append strings - // and characters directly to the sink. - TInfoSinkBase& operator<<(char c) { - sink.append(1, c); - return *this; - } - TInfoSinkBase& operator<<(const char* str) { - sink.append(str); - return *this; - } - TInfoSinkBase& operator<<(const TPersistString& str) { - sink.append(str); - return *this; - } - TInfoSinkBase& operator<<(const TString& str) { - sink.append(str.c_str()); - return *this; - } - // Make sure floats are written with correct precision. - TInfoSinkBase& operator<<(float f) { - // Make sure that at least one decimal point is written. If a number - // does not have a fractional part, the default precision format does - // not write the decimal portion which gets interpreted as integer by - // the compiler. - TPersistStringStream stream; - if (fractionalPart(f) == 0.0f) { - stream.precision(1); - stream << std::showpoint << std::fixed << f; - } else { - stream.unsetf(std::ios::fixed); - stream.unsetf(std::ios::scientific); - stream.precision(8); - stream << f; - } - sink.append(stream.str()); - return *this; - } - // Write boolean values as their names instead of integral value. - TInfoSinkBase& operator<<(bool b) { - const char* str = b ? "true" : "false"; - sink.append(str); - return *this; - } - - void erase() { sink.clear(); } - int size() { return static_cast<int>(sink.size()); } - - const TPersistString& str() const { return sink; } - const char* c_str() const { return sink.c_str(); } - - void prefix(TPrefixType p); - void location(int file, int line); - void location(const TSourceLoc& loc); - void message(TPrefixType p, const TSourceLoc& loc, const char* m); - -private: - TPersistString sink; -}; - -class TInfoSink { -public: - TInfoSinkBase info; - TInfoSinkBase debug; - TInfoSinkBase obj; -}; - -#endif // _INFOSINK_INCLUDED_ |