1//===-- MsvcStl.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_MSVCSTL_H
10#define LLDB_SOURCE_PLUGINS_LANGUAGE_CPLUSPLUS_MSVCSTL_H
11
12#include "lldb/DataFormatters/StringPrinter.h"
13#include "lldb/DataFormatters/TypeSummary.h"
14#include "lldb/Utility/Stream.h"
15#include "lldb/ValueObject/ValueObject.h"
16
17namespace lldb_private {
18namespace formatters {
19
20bool IsMsvcStlStringType(ValueObject &valobj);
21
22template <StringPrinter::StringElementType element_type>
23bool MsvcStlStringSummaryProvider(
24 ValueObject &valobj, Stream &stream,
25 const TypeSummaryOptions
26 &summary_options); // VC 2015+ std::string,u8string,u16string,u32string
27
28bool MsvcStlWStringSummaryProvider(
29 ValueObject &valobj, Stream &stream,
30 const TypeSummaryOptions &options); // VC 2015+ std::wstring
31
32// MSVC STL std::shared_ptr<> and std::weak_ptr<>
33bool IsMsvcStlSmartPointer(ValueObject &valobj);
34bool MsvcStlSmartPointerSummaryProvider(ValueObject &valobj, Stream &stream,
35 const TypeSummaryOptions &options);
36
37lldb_private::SyntheticChildrenFrontEnd *
38MsvcStlSmartPointerSyntheticFrontEndCreator(lldb::ValueObjectSP valobj_sp);
39
40// MSVC STL std::unique_ptr<>
41bool IsMsvcStlUniquePtr(ValueObject &valobj);
42bool MsvcStlUniquePtrSummaryProvider(ValueObject &valobj, Stream &stream,
43 const TypeSummaryOptions &options);
44
45lldb_private::SyntheticChildrenFrontEnd *
46MsvcStlUniquePtrSyntheticFrontEndCreator(lldb::ValueObjectSP valobj_sp);
47
48} // namespace formatters
49} // namespace lldb_private
50
51#endif
52

source code of lldb/source/Plugins/Language/CPlusPlus/MsvcStl.h