1//===-- LibStdcpp.h ---------------------------------------------*- 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-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef LLDB_SOURCE_PLUGINS_LANGUAGE_CPLUSPLUS_LIBSTDCPP_H
10#define LLDB_SOURCE_PLUGINS_LANGUAGE_CPLUSPLUS_LIBSTDCPP_H
11
12#include "lldb/Core/ValueObject.h"
13#include "lldb/DataFormatters/TypeSummary.h"
14#include "lldb/DataFormatters/TypeSynthetic.h"
15#include "lldb/Utility/Stream.h"
16
17namespace lldb_private {
18namespace formatters {
19bool LibStdcppStringSummaryProvider(
20    ValueObject &valobj, Stream &stream,
21    const TypeSummaryOptions &options); // libcstdc++ c++11 std::string
22
23bool LibStdcppWStringSummaryProvider(
24    ValueObject &valobj, Stream &stream,
25    const TypeSummaryOptions &options); // libcstdc++ c++11 std::wstring
26
27bool LibStdcppSmartPointerSummaryProvider(
28    ValueObject &valobj, Stream &stream,
29    const TypeSummaryOptions
30        &options); // libstdc++ std::shared_ptr<> and std::weak_ptr<>
31
32bool LibStdcppUniquePointerSummaryProvider(
33    ValueObject &valobj, Stream &stream,
34    const TypeSummaryOptions &options); // libstdc++ std::unique_ptr<>
35
36SyntheticChildrenFrontEnd *
37LibstdcppMapIteratorSyntheticFrontEndCreator(CXXSyntheticChildren *,
38                                             lldb::ValueObjectSP);
39
40SyntheticChildrenFrontEnd *
41LibStdcppTupleSyntheticFrontEndCreator(CXXSyntheticChildren *,
42                                       lldb::ValueObjectSP);
43
44SyntheticChildrenFrontEnd *
45LibStdcppVectorIteratorSyntheticFrontEndCreator(CXXSyntheticChildren *,
46                                                lldb::ValueObjectSP);
47
48SyntheticChildrenFrontEnd *
49LibStdcppSharedPtrSyntheticFrontEndCreator(CXXSyntheticChildren *,
50                                           lldb::ValueObjectSP);
51
52SyntheticChildrenFrontEnd *
53LibStdcppUniquePtrSyntheticFrontEndCreator(CXXSyntheticChildren *,
54                                           lldb::ValueObjectSP);
55
56} // namespace formatters
57} // namespace lldb_private
58
59#endif // LLDB_SOURCE_PLUGINS_LANGUAGE_CPLUSPLUS_LIBSTDCPP_H
60