|  | // Copyright 2018 The Fuchsia Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #include "src/developer/debug/zxdb/console/string_util.h" | 
|  |  | 
|  | namespace zxdb { | 
|  |  | 
|  | std::string GetCurrentRowMarker() { | 
|  | // U+25B6 BLACK RIGHT-POINTING TRIANGLE. | 
|  | return std::string("\xe2\x96\xb6"); | 
|  | } | 
|  |  | 
|  | std::string GetBreakpointMarker() { | 
|  | // U+25C9 FISHEYE. | 
|  | // It might be nice to use U+1F534 LARGE RED CIRCLE which on Mac even has | 
|  | // cool shading. But the Mac terminal things it takes 2 characters of layout | 
|  | // which makes it hard to predict layout in a cross-platform way. | 
|  | return std::string("\xe2\x97\x89"); | 
|  | } | 
|  |  | 
|  | std::string GetDisabledBreakpointMarker() { | 
|  | // U+25EF LARGE CIRCLE | 
|  | return std::string("\xe2\x97\xaf"); | 
|  | } | 
|  |  | 
|  | std::string GetBullet() { | 
|  | // U+2022 BULLET | 
|  | return std::string("\xe2\x80\xa2"); | 
|  | } | 
|  |  | 
|  | std::string GetExclamation() { | 
|  | // U+26A0 WARNING SIGN, U+FE0F VARIATION SELECTOR 16 | 
|  | // (Without the variation selector this looks like a small black-and-white | 
|  | // version. The variation selector selects the colored emoji variant.) | 
|  | return std::string("⚠️ "); | 
|  | } | 
|  |  | 
|  | std::string GetRightArrow() { | 
|  | // U+2794 HEAVY WIDE-HEADED RIGHTWARDS ARROW | 
|  | // Note that U+1F87A (" 🡺 ")looks better on Linux but isn't supported on Mac or ChromeOS, and | 
|  | // we need to support at least ssh-ing from these platforms. | 
|  | return "➔"; | 
|  | } | 
|  |  | 
|  | std::optional<bool> StringToBool(std::string_view s) { | 
|  | if (s == "0" || s == "false") | 
|  | return false; | 
|  | else if (s == "1" || s == "true") | 
|  | return true; | 
|  | return std::nullopt; | 
|  | } | 
|  |  | 
|  | const char* BoolToString(bool b) { return b ? "true" : "false"; } | 
|  |  | 
|  | size_t UnicodeCharWidth(const std::string& str) { | 
|  | size_t result = 0; | 
|  |  | 
|  | for (size_t i = 0; i < str.size(); i++) { | 
|  | uint32_t code_point; | 
|  | // Don't care about the success of this since we just care about | 
|  | // incrementing the index. | 
|  | fxl::ReadUnicodeCharacter(str.data(), str.size(), &i, &code_point); | 
|  | result++; | 
|  | } | 
|  | return result; | 
|  | } | 
|  |  | 
|  | }  // namespace zxdb |