Summary: A *.cpp file header in LLDB (and in LLDB) should like this: ``` //===-- TestUtilities.cpp -------------------------------------------------===// ``` However in LLDB most of our source files have arbitrary changes to this format and these changes are spreading through LLDB as folks usually just use the existing source files as templates for their new files (most notably the unnecessary editor language indicator `-*- C++ -*-` is spreading and in every review someone is pointing out that this is wrong, resulting in people pointing out that this is done in the same way in other files). This patch removes most of these inconsistencies including the editor language indicators, all the different missing/additional '-' characters, files that center the file name, missing trailing `===//` (mostly caused by clang-format breaking the line). Reviewers: aprantl, espindola, jfb, shafik, JDevlieghere Reviewed By: JDevlieghere Subscribers: dexonsmith, wuzish, emaste, sdardis, nemanjai, kbarton, MaskRay, atanasyan, arphaman, jfb, abidh, jsji, JDevlieghere, usaxena95, lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D73258
99 lines
3.0 KiB
C++
99 lines
3.0 KiB
C++
//===-- CoreMedia.cpp -----------------------------------------------------===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "CoreMedia.h"
|
|
|
|
#include "lldb/Utility/Flags.h"
|
|
#include "lldb/Utility/Log.h"
|
|
|
|
#include "lldb/Symbol/TypeSystem.h"
|
|
#include "lldb/Target/Target.h"
|
|
#include <inttypes.h>
|
|
|
|
using namespace lldb;
|
|
using namespace lldb_private;
|
|
using namespace lldb_private::formatters;
|
|
|
|
bool lldb_private::formatters::CMTimeSummaryProvider(
|
|
ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options) {
|
|
CompilerType type = valobj.GetCompilerType();
|
|
if (!type.IsValid())
|
|
return false;
|
|
|
|
auto type_system_or_err =
|
|
valobj.GetExecutionContextRef()
|
|
.GetTargetSP()
|
|
->GetScratchTypeSystemForLanguage(lldb::eLanguageTypeC);
|
|
if (auto err = type_system_or_err.takeError()) {
|
|
LLDB_LOG_ERROR(
|
|
lldb_private::GetLogIfAnyCategoriesSet(LIBLLDB_LOG_DATAFORMATTERS),
|
|
std::move(err), "Failed to get scratch type system");
|
|
return false;
|
|
}
|
|
// fetch children by offset to compensate for potential lack of debug info
|
|
auto int64_ty = type_system_or_err->GetBuiltinTypeForEncodingAndBitSize(
|
|
eEncodingSint, 64);
|
|
auto int32_ty = type_system_or_err->GetBuiltinTypeForEncodingAndBitSize(
|
|
eEncodingSint, 32);
|
|
|
|
auto value_sp(valobj.GetSyntheticChildAtOffset(0, int64_ty, true));
|
|
auto timescale_sp(valobj.GetSyntheticChildAtOffset(8, int32_ty, true));
|
|
auto flags_sp(valobj.GetSyntheticChildAtOffset(12, int32_ty, true));
|
|
|
|
if (!value_sp || !timescale_sp || !flags_sp)
|
|
return false;
|
|
|
|
auto value = value_sp->GetValueAsUnsigned(0);
|
|
auto timescale = (int32_t)timescale_sp->GetValueAsUnsigned(
|
|
0); // the timescale specifies the fraction of a second each unit in the
|
|
// numerator occupies
|
|
auto flags = Flags(flags_sp->GetValueAsUnsigned(0) &
|
|
0x00000000000000FF); // the flags I need sit in the LSB
|
|
|
|
const unsigned int FlagPositiveInf = 4;
|
|
const unsigned int FlagNegativeInf = 8;
|
|
const unsigned int FlagIndefinite = 16;
|
|
|
|
if (flags.AnySet(FlagIndefinite)) {
|
|
stream.Printf("indefinite");
|
|
return true;
|
|
}
|
|
|
|
if (flags.AnySet(FlagPositiveInf)) {
|
|
stream.Printf("+oo");
|
|
return true;
|
|
}
|
|
|
|
if (flags.AnySet(FlagNegativeInf)) {
|
|
stream.Printf("-oo");
|
|
return true;
|
|
}
|
|
|
|
if (timescale == 0)
|
|
return false;
|
|
|
|
switch (timescale) {
|
|
case 0:
|
|
return false;
|
|
case 1:
|
|
stream.Printf("%" PRId64 " seconds", value);
|
|
return true;
|
|
case 2:
|
|
stream.Printf("%" PRId64 " half seconds", value);
|
|
return true;
|
|
case 3:
|
|
stream.Printf("%" PRId64 " third%sof a second", value,
|
|
value == 1 ? " " : "s ");
|
|
return true;
|
|
default:
|
|
stream.Printf("%" PRId64 " %" PRId32 "th%sof a second", value, timescale,
|
|
value == 1 ? " " : "s ");
|
|
return true;
|
|
}
|
|
}
|