blob: a6b209417ff9d0c2167a02ff6a7573aac7448229 [file] [log] [blame]
//===--- Logging.h - --------------------------------------------*- C++ -*-===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_SOURCEKITD_LOGGING_H
#define LLVM_SOURCEKITD_LOGGING_H
#include "llvm/Support/raw_ostream.h"
namespace sourcekitd {
void enableLogging(llvm::StringRef LoggerName);
#define DEF_COLOR(NAME, COLOR)\
static const llvm::raw_ostream::Colors NAME##Color = llvm::raw_ostream::COLOR;
DEF_COLOR(DictKey, YELLOW)
DEF_COLOR(UID, CYAN)
#undef DEF_COLOR
class OSColor {
llvm::raw_ostream &OS;
bool HasColors;
public:
OSColor(llvm::raw_ostream &OS, llvm::raw_ostream::Colors Color) : OS(OS) {
HasColors = OS.has_colors();
if (HasColors)
OS.changeColor(Color);
}
~OSColor() {
if (HasColors)
OS.resetColor();
}
OSColor &operator<<(char C) { OS << C; return *this; }
OSColor &operator<<(llvm::StringRef Str) { OS << Str; return *this; }
};
} // namespace sourcekitd
#endif