brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · 1e5e1ee Raw
66 lines · cpp
1//===- FormatUtil.cpp ----------------------------------------- *- C++ --*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "FormatUtil.h"10#include "llvm/Support/Format.h"11#include "llvm/Support/FormatVariadic.h"12 13using namespace lldb_private;14using namespace llvm;15 16LinePrinter::Line::~Line() {17  if (P)18    P->NewLine();19}20 21LinePrinter::LinePrinter(int Indent, llvm::raw_ostream &Stream)22    : OS(Stream), IndentSpaces(Indent), CurrentIndent(0) {}23 24void LinePrinter::Indent(uint32_t Amount) {25  if (Amount == 0)26    Amount = IndentSpaces;27  CurrentIndent += Amount;28}29 30void LinePrinter::Unindent(uint32_t Amount) {31  if (Amount == 0)32    Amount = IndentSpaces;33  CurrentIndent = std::max<int>(0, CurrentIndent - Amount);34}35 36void LinePrinter::NewLine() {37  OS << "\n";38}39 40void LinePrinter::formatBinary(StringRef Label, ArrayRef<uint8_t> Data,41                               uint32_t StartOffset) {42  if (Data.empty()) {43    line() << Label << " ()";44    return;45  }46  line() << Label << " (";47  OS << format_bytes_with_ascii(Data, StartOffset, 32, 4,48                                CurrentIndent + IndentSpaces, true);49  NewLine();50  line() << ")";51}52 53void LinePrinter::formatBinary(StringRef Label, ArrayRef<uint8_t> Data,54                               uint64_t Base, uint32_t StartOffset) {55  if (Data.empty()) {56    line() << Label << " ()";57    return;58  }59  line() << Label << " (";60  Base += StartOffset;61  OS << format_bytes_with_ascii(Data, Base, 32, 4, CurrentIndent + IndentSpaces,62                                true);63  NewLine();64  line() << ")";65}66