I want to propose adding summary providers for `std::*_ordering` types introduced in `C++20`. GDB already has pretty-printers for [them](https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/python/libstdcxx/v6/printers.py#L1788), so I think it will be useful.
98 lines
3.7 KiB
C++
98 lines
3.7 KiB
C++
//===-- LibStdcpp.h ---------------------------------------------*- C++ -*-===//
|
|
//
|
|
// 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
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLDB_SOURCE_PLUGINS_LANGUAGE_CPLUSPLUS_LIBSTDCPP_H
|
|
#define LLDB_SOURCE_PLUGINS_LANGUAGE_CPLUSPLUS_LIBSTDCPP_H
|
|
|
|
#include "lldb/DataFormatters/StringPrinter.h"
|
|
#include "lldb/DataFormatters/TypeSummary.h"
|
|
#include "lldb/DataFormatters/TypeSynthetic.h"
|
|
#include "lldb/Utility/Stream.h"
|
|
#include "lldb/ValueObject/ValueObject.h"
|
|
|
|
namespace lldb_private {
|
|
namespace formatters {
|
|
bool LibStdcppStringSummaryProvider(
|
|
ValueObject &valobj, Stream &stream,
|
|
const TypeSummaryOptions &options); // libstdc++ std::string
|
|
|
|
template <StringPrinter::StringElementType element_type>
|
|
bool LibStdcppStringViewSummaryProvider(
|
|
ValueObject &valobj, Stream &stream,
|
|
const TypeSummaryOptions
|
|
&options); // libstdc++ std::{u8,u16,u32}?string_view
|
|
|
|
bool LibStdcppWStringViewSummaryProvider(
|
|
ValueObject &valobj, Stream &stream,
|
|
const TypeSummaryOptions &options); // libstdc++ std::wstring_view
|
|
|
|
bool LibStdcppSmartPointerSummaryProvider(
|
|
ValueObject &valobj, Stream &stream,
|
|
const TypeSummaryOptions
|
|
&options); // libstdc++ std::shared_ptr<> and std::weak_ptr<>
|
|
|
|
bool LibStdcppUniquePointerSummaryProvider(
|
|
ValueObject &valobj, Stream &stream,
|
|
const TypeSummaryOptions &options); // libstdc++ std::unique_ptr<>
|
|
|
|
bool LibStdcppVariantSummaryProvider(
|
|
ValueObject &valobj, Stream &stream,
|
|
const TypeSummaryOptions &options); // libstdc++ std::variant<>
|
|
|
|
bool LibStdcppPartialOrderingSummaryProvider(
|
|
ValueObject &valobj, Stream &stream,
|
|
const TypeSummaryOptions &options); // libstdc++ std::partial_ordering
|
|
|
|
bool LibStdcppWeakOrderingSummaryProvider(
|
|
ValueObject &valobj, Stream &stream,
|
|
const TypeSummaryOptions &options); // libstdc++ std::weak_ordering
|
|
|
|
bool LibStdcppStrongOrderingSummaryProvider(
|
|
ValueObject &valobj, Stream &stream,
|
|
const TypeSummaryOptions &options); // libstdc++ std::strong_ordering
|
|
|
|
SyntheticChildrenFrontEnd *
|
|
LibstdcppMapIteratorSyntheticFrontEndCreator(CXXSyntheticChildren *,
|
|
lldb::ValueObjectSP);
|
|
|
|
SyntheticChildrenFrontEnd *
|
|
LibStdcppSpanSyntheticFrontEndCreator(CXXSyntheticChildren *,
|
|
lldb::ValueObjectSP);
|
|
|
|
SyntheticChildrenFrontEnd *
|
|
LibStdcppTupleSyntheticFrontEndCreator(CXXSyntheticChildren *,
|
|
lldb::ValueObjectSP);
|
|
|
|
SyntheticChildrenFrontEnd *
|
|
LibStdcppBitsetSyntheticFrontEndCreator(CXXSyntheticChildren *,
|
|
lldb::ValueObjectSP);
|
|
|
|
SyntheticChildrenFrontEnd *
|
|
LibStdcppOptionalSyntheticFrontEndCreator(CXXSyntheticChildren *,
|
|
lldb::ValueObjectSP);
|
|
|
|
SyntheticChildrenFrontEnd *
|
|
LibStdcppVectorIteratorSyntheticFrontEndCreator(CXXSyntheticChildren *,
|
|
lldb::ValueObjectSP);
|
|
|
|
SyntheticChildrenFrontEnd *
|
|
LibStdcppSharedPtrSyntheticFrontEndCreator(CXXSyntheticChildren *,
|
|
lldb::ValueObjectSP);
|
|
|
|
SyntheticChildrenFrontEnd *
|
|
LibStdcppUniquePtrSyntheticFrontEndCreator(CXXSyntheticChildren *,
|
|
lldb::ValueObjectSP);
|
|
|
|
bool LibStdcppVariantSummaryProvider(ValueObject &valobj, Stream &stream,
|
|
const TypeSummaryOptions &options);
|
|
|
|
} // namespace formatters
|
|
} // namespace lldb_private
|
|
|
|
#endif // LLDB_SOURCE_PLUGINS_LANGUAGE_CPLUSPLUS_LIBSTDCPP_H
|