LLDB mainline
MsvcStl.h
Go to the documentation of this file.
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
14#include "lldb/Utility/Stream.h"
16
17namespace lldb_private {
18namespace formatters {
19
20bool IsMsvcStlStringType(ValueObject &valobj);
21
22template <StringPrinter::StringElementType element_type>
24 ValueObject &valobj, Stream &stream,
26 &summary_options); // VC 2015+ std::string,u8string,u16string,u32string
27
29 ValueObject &valobj, Stream &stream,
30 const TypeSummaryOptions &options); // VC 2015+ std::wstring
31
32template <StringPrinter::StringElementType element_type>
34 ValueObject &valobj, Stream &stream,
35 const TypeSummaryOptions &summary_options); // std::{u8,u16,u32}?string_view
36
38 ValueObject &valobj, Stream &stream,
39 const TypeSummaryOptions &options); // std::wstring_view
40
41// MSVC STL std::shared_ptr<> and std::weak_ptr<>
44 const TypeSummaryOptions &options);
45
48
49// MSVC STL std::unique_ptr<>
52 const TypeSummaryOptions &options);
53
56
57// MSVC STL std::tuple<>
58bool IsMsvcStlTuple(ValueObject &valobj);
61 lldb::ValueObjectSP valobj_sp);
62
63// MSVC STL std::vector<>
67
68// MSVC STL std::list and std::forward_list
69bool IsMsvcStlList(ValueObject &valobj);
72 lldb::ValueObjectSP valobj_sp);
75 lldb::ValueObjectSP valobj_sp);
76
77// MSVC STL std::optional<>
78bool IsMsvcStlOptional(ValueObject &valobj);
81 lldb::ValueObjectSP valobj_sp);
82
83// MSVC STL std::variant<>
84bool IsMsvcStlVariant(ValueObject &valobj);
86 const TypeSummaryOptions &options);
89 lldb::ValueObjectSP valobj_sp);
90
91// MSVC STL std::atomic<>
93 const TypeSummaryOptions &options);
96 lldb::ValueObjectSP valobj_sp);
97
98// MSVC STL std::unordered_(multi){map|set}<>
102 lldb::ValueObjectSP valobj_sp);
103bool IsMsvcStlTreeIter(ValueObject &valobj);
105 const TypeSummaryOptions &options);
108 lldb::ValueObjectSP valobj_sp);
109
110// std::map,set,multimap,multiset
111bool IsMsvcStlMapLike(ValueObject &valobj);
114
115// MSVC STL std::deque<>
116bool IsMsvcStlDeque(ValueObject &valobj);
119 lldb::ValueObjectSP valobj_sp);
120
121} // namespace formatters
122} // namespace lldb_private
123
124#endif
A stream class that can stream formatted output to a file.
Definition Stream.h:28
bool IsMsvcStlDeque(ValueObject &valobj)
bool IsMsvcStlUnordered(ValueObject &valobj)
bool IsMsvcStlOptional(ValueObject &valobj)
bool IsMsvcStlStringType(ValueObject &valobj)
Definition MsvcStl.cpp:142
bool IsMsvcStlTuple(ValueObject &valobj)
lldb_private::SyntheticChildrenFrontEnd * MsvcStlVectorSyntheticFrontEndCreator(lldb::ValueObjectSP valobj_sp)
bool MsvcStlUniquePtrSummaryProvider(ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options)
SyntheticChildrenFrontEnd * MsvcStlListSyntheticFrontEndCreator(CXXSyntheticChildren *, lldb::ValueObjectSP valobj_sp)
SyntheticChildrenFrontEnd * MsvcStlForwardListSyntheticFrontEndCreator(CXXSyntheticChildren *, lldb::ValueObjectSP valobj_sp)
SyntheticChildrenFrontEnd * MsvcStlTupleSyntheticFrontEndCreator(CXXSyntheticChildren *, lldb::ValueObjectSP valobj_sp)
bool MsvcStlVariantSummaryProvider(ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options)
bool IsMsvcStlMapLike(ValueObject &valobj)
bool MsvcStlSmartPointerSummaryProvider(ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options)
lldb_private::SyntheticChildrenFrontEnd * MsvcStlMapLikeSyntheticFrontEndCreator(lldb::ValueObjectSP valobj_sp)
bool IsMsvcStlUniquePtr(ValueObject &valobj)
bool MsvcStlStringSummaryProvider(ValueObject &valobj, Stream &stream, const TypeSummaryOptions &summary_options)
SyntheticChildrenFrontEnd * MsvcStlOptionalSyntheticFrontEndCreator(CXXSyntheticChildren *, lldb::ValueObjectSP valobj_sp)
bool IsMsvcStlTreeIter(ValueObject &valobj)
SyntheticChildrenFrontEnd * MsvcStlVariantSyntheticFrontEndCreator(CXXSyntheticChildren *, lldb::ValueObjectSP valobj_sp)
bool MsvcStlTreeIterSummaryProvider(ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options)
bool MsvcStlStringViewSummaryProvider(ValueObject &valobj, Stream &stream, const TypeSummaryOptions &summary_options)
SyntheticChildrenFrontEnd * MsvcStlDequeSyntheticFrontEndCreator(CXXSyntheticChildren *, lldb::ValueObjectSP valobj_sp)
bool MsvcStlWStringViewSummaryProvider(ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options)
Definition MsvcStl.cpp:184
SyntheticChildrenFrontEnd * MsvcStlAtomicSyntheticFrontEndCreator(CXXSyntheticChildren *, lldb::ValueObjectSP valobj_sp)
SyntheticChildrenFrontEnd * MsvcStlUnorderedSyntheticFrontEndCreator(CXXSyntheticChildren *, lldb::ValueObjectSP valobj_sp)
bool IsMsvcStlList(ValueObject &valobj)
bool IsMsvcStlVector(ValueObject &valobj)
lldb_private::SyntheticChildrenFrontEnd * MsvcStlSmartPointerSyntheticFrontEndCreator(lldb::ValueObjectSP valobj_sp)
bool MsvcStlWStringSummaryProvider(ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options)
Definition MsvcStl.cpp:148
lldb_private::SyntheticChildrenFrontEnd * MsvcStlUniquePtrSyntheticFrontEndCreator(lldb::ValueObjectSP valobj_sp)
bool IsMsvcStlVariant(ValueObject &valobj)
lldb_private::SyntheticChildrenFrontEnd * MsvcStlTreeIterSyntheticFrontEndCreator(CXXSyntheticChildren *, lldb::ValueObjectSP valobj_sp)
bool IsMsvcStlSmartPointer(ValueObject &valobj)
bool MsvcStlAtomicSummaryProvider(ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options)
A class that represents a running process on the host machine.
std::shared_ptr< lldb_private::ValueObject > ValueObjectSP