|  | /* 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); | 
|  |  | 
|  | } | 
|  | } |