// Copyright 2013 The Flutter 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 FLUTTER_IMPELLER_COMPILER_LOGGER_H_ #define FLUTTER_IMPELLER_COMPILER_LOGGER_H_ #include #include #include "flutter/fml/logging.h" namespace impeller { namespace compiler { class AutoLogger { public: explicit AutoLogger(std::stringstream& logger) : logger_(logger) {} ~AutoLogger() { logger_ << std::endl; logger_.flush(); } template AutoLogger& operator<<(const T& object) { logger_ << object; return *this; } private: std::stringstream& logger_; AutoLogger(const AutoLogger&) = delete; AutoLogger& operator=(const AutoLogger&) = delete; }; #define COMPILER_ERROR(stream) \ ::impeller::compiler::AutoLogger(stream) << GetSourcePrefix() #define COMPILER_ERROR_NO_PREFIX(stream) \ ::impeller::compiler::AutoLogger(stream) } // namespace compiler } // namespace impeller #endif // FLUTTER_IMPELLER_COMPILER_LOGGER_H_