blob: d12d55d13e2b1ac197ecb428c749805cc7187493 [file] [log] [blame] [edit]
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
file LICENSE.rst or https://cmake.org/licensing for details. */
#pragma once
#include "cmConfigure.h" // IWYU pragma: keep
#include <cstddef>
#include <cstdint>
#include <cm/string_view>
#include <cmext/enum_set>
namespace cm {
namespace StdIo {
class OStream;
/**
* Represent a text attribute.
*/
enum class TermAttr : std::uint8_t
{
Normal,
ForegroundBold,
ForegroundBlack,
ForegroundBlue,
ForegroundCyan,
ForegroundGreen,
ForegroundMagenta,
ForegroundRed,
ForegroundWhite,
ForegroundYellow,
BackgroundBold,
BackgroundBlack,
BackgroundBlue,
BackgroundCyan,
BackgroundGreen,
BackgroundMagenta,
BackgroundRed,
BackgroundWhite,
BackgroundYellow,
};
static constexpr std::size_t kTermAttrCount = 19;
/**
* Represent a set of text attributes.
*/
using TermAttrSet = cm::enum_set<TermAttr, kTermAttrCount>;
/**
* Print text to an output stream using a given set of color attributes.
*/
void Print(OStream& os, TermAttrSet const& attrs, cm::string_view text);
}
}