blob: 7fb4cabc486e2e9dab6767540857cd7d6849dfdb [file] [log] [blame]
// 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.
#ifndef SRC_DEVELOPER_DEBUG_ZXDB_CONSOLE_STRING_UTIL_H_
#define SRC_DEVELOPER_DEBUG_ZXDB_CONSOLE_STRING_UTIL_H_
#include <optional>
#include <string_view>
#include "src/lib/fxl/strings/utf_codecs.h"
namespace zxdb {
// Returns a string containing the marker for marking the current line. May be UTF-8 so size() could
// be > 1, but it will only be one Unicode character.
std::string GetCurrentRowMarker();
// Returns a circle symbol suitable for marking breakpoints in code listings.
std::string GetBreakpointMarker();
std::string GetDisabledBreakpointMarker();
// Returns a Unicode bullet in UTF-8.
std::string GetBullet();
// Returns the exclamation-point-in-triangle emoji. This includes a space after it since this
// character is a wide emoji.
std::string GetExclamation();
// Rightward pointing arrow used for pointers and such.
std::string GetRightArrow();
// Converts to/from "0"/"1"/"true"/"false". This is used for formatting internal values like
// settings rather than language strings.
std::optional<bool> StringToBool(std::string_view);
const char* BoolToString(bool);
// Returns the number of Unicode characters in the given UTF-8 string. This attempts to predict how
// many spaces the given string will take up when printed to a Unicode-aware text console.
//
// NOTE: This function currently doesn't handle any combining accents which it seems modern Linux
// terminals do handle. It obviously doesn't handle complicated things like ligatures and Arabic
// which we assume you're not typing into the console and expecting to be aligned anyway.
size_t UnicodeCharWidth(const std::string& str);
} // namespace zxdb
#endif // SRC_DEVELOPER_DEBUG_ZXDB_CONSOLE_STRING_UTIL_H_