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
22bool IsMsvcStlStringViewType(ValueObject &valobj);
23
24template <StringPrinter::StringElementType element_type>
26 ValueObject &valobj, Stream &stream,
28 &summary_options); // VC 2015+ std::string,u8string,u16string,u32string
29
31 ValueObject &valobj, Stream &stream,
32 const TypeSummaryOptions &options); // VC 2015+ std::wstring
33
34template <StringPrinter::StringElementType element_type>
36 ValueObject &valobj, Stream &stream,
37 const TypeSummaryOptions &summary_options); // std::{u8,u16,u32}?string_view
38
40 ValueObject &valobj, Stream &stream,
41 const TypeSummaryOptions &options); // std::wstring_view
42
43// MSVC STL std::*_ordering
44bool IsMsvcStlOrdering(ValueObject &valobj);
45
47 ValueObject &valobj, Stream &stream,
48 const TypeSummaryOptions &options); // std::partial_ordering
49
51 ValueObject &valobj, Stream &stream,
52 const TypeSummaryOptions &options); // std::weak_ordering
53
55 ValueObject &valobj, Stream &stream,
56 const TypeSummaryOptions &options); // std::strong_ordering
57
58// MSVC STL std::shared_ptr<> and std::weak_ptr<>
61 const TypeSummaryOptions &options);
62
64 uint64_t ctrl_addr, Stream &stream,
65 const TypeSummaryOptions &options);
66
69
70// MSVC STL std::unique_ptr<>
73 const TypeSummaryOptions &options);
74
77
78// MSVC STL std::tuple<>
79bool IsMsvcStlTuple(ValueObject &valobj);
82 lldb::ValueObjectSP valobj_sp);
83
84// MSVC STL std::vector<>
90 lldb::ValueObjectSP valobj_sp);
91
92// MSVC STL std::list and std::forward_list
93bool IsMsvcStlList(ValueObject &valobj);
96 lldb::ValueObjectSP valobj_sp);
99 lldb::ValueObjectSP valobj_sp);
100
101// MSVC STL std::optional<>
102bool IsMsvcStlOptional(ValueObject &valobj);
105 lldb::ValueObjectSP valobj_sp);
106
107// MSVC STL std::variant<>
108bool IsMsvcStlVariant(ValueObject &valobj);
110 const TypeSummaryOptions &options);
113 lldb::ValueObjectSP valobj_sp);
114
115// MSVC STL std::atomic<>
116bool IsMsvcStlAtomic(ValueObject &valobj, bool *is_smart_ptr = nullptr);
118 const TypeSummaryOptions &options);
121 lldb::ValueObjectSP valobj_sp);
122
123// MSVC STL std::unordered_(multi){map|set}<>
124bool IsMsvcStlUnordered(ValueObject &valobj);
127 lldb::ValueObjectSP valobj_sp);
128bool IsMsvcStlTreeIter(ValueObject &valobj);
130 const TypeSummaryOptions &options);
133 lldb::ValueObjectSP valobj_sp);
134
135// std::map,set,multimap,multiset
136bool IsMsvcStlMapLike(ValueObject &valobj);
139
140// MSVC STL std::deque<>
141bool IsMsvcStlDeque(ValueObject &valobj);
144 lldb::ValueObjectSP valobj_sp);
145
146// MSVC STL std::span<>
147bool IsMsvcStlSpan(ValueObject &valobj);
150 lldb::ValueObjectSP valobj_sp);
151
152// MSVC STL std::bitset<>
153bool IsMsvcStlBitset(ValueObject &valobj);
156 lldb::ValueObjectSP valobj_sp);
157
158// MSVC STL std::expected<>
159bool IsMsvcStlExpected(ValueObject &valobj);
161 const TypeSummaryOptions &options);
164 lldb::ValueObjectSP valobj_sp);
165
166// MSVC STL std::valarray<>
167bool IsMsvcStlValarray(ValueObject &valobj);
170 lldb::ValueObjectSP valobj_sp);
171
172// MSVC STL std::source_location
175 const TypeSummaryOptions &options);
176
177} // namespace formatters
178} // namespace lldb_private
179
180#endif
A stream class that can stream formatted output to a file.
Definition Stream.h:28
bool IsMsvcStlDeque(ValueObject &valobj)
SyntheticChildrenFrontEnd * MsvcStlValarraySyntheticFrontEndCreator(CXXSyntheticChildren *, lldb::ValueObjectSP valobj_sp)
bool DumpMsvcStlSmartPointerSummary(ValueObject &ptr, ValueObject &rep, uint64_t ctrl_addr, Stream &stream, const TypeSummaryOptions &options)
bool IsMsvcStlUnordered(ValueObject &valobj)
bool IsMsvcStlOptional(ValueObject &valobj)
bool IsMsvcStlStringType(ValueObject &valobj)
Definition MsvcStl.cpp:143
bool IsMsvcStlExpected(ValueObject &valobj)
bool IsMsvcStlTuple(ValueObject &valobj)
lldb_private::SyntheticChildrenFrontEnd * MsvcStlVectorSyntheticFrontEndCreator(lldb::ValueObjectSP valobj_sp)
bool MsvcStlExpectedSummaryProvider(ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options)
bool MsvcStlUniquePtrSummaryProvider(ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options)
SyntheticChildrenFrontEnd * MsvcStlListSyntheticFrontEndCreator(CXXSyntheticChildren *, lldb::ValueObjectSP valobj_sp)
bool MsvcStlPartialOrderingSummaryProvider(ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options)
Definition MsvcStl.cpp:244
bool MsvcStlWeakOrderingSummaryProvider(ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options)
Definition MsvcStl.cpp:268
bool IsMsvcStlSourceLocation(ValueObject &valobj)
Definition MsvcStl.cpp:310
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 MsvcStlStrongOrderingSummaryProvider(ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options)
Definition MsvcStl.cpp:289
bool MsvcStlSmartPointerSummaryProvider(ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options)
bool IsMsvcStlUniquePtr(ValueObject &valobj)
bool MsvcStlSourceLocationSummaryProvider(ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options)
Definition MsvcStl.cpp:316
bool MsvcStlStringSummaryProvider(ValueObject &valobj, Stream &stream, const TypeSummaryOptions &summary_options)
SyntheticChildrenFrontEnd * MsvcStlBitsetSyntheticFrontEndCreator(CXXSyntheticChildren *, lldb::ValueObjectSP valobj_sp)
SyntheticChildrenFrontEnd * MsvcStlOptionalSyntheticFrontEndCreator(CXXSyntheticChildren *, lldb::ValueObjectSP valobj_sp)
bool IsMsvcStlTreeIter(ValueObject &valobj)
SyntheticChildrenFrontEnd * MsvcStlVariantSyntheticFrontEndCreator(CXXSyntheticChildren *, lldb::ValueObjectSP valobj_sp)
lldb_private::SyntheticChildrenFrontEnd * MsvcStlMapLikeSyntheticFrontEndCreator(lldb::ValueObjectSP valobj_sp)
SyntheticChildrenFrontEnd * MsvcStlVectorIteratorSyntheticFrontEndCreator(CXXSyntheticChildren *, lldb::ValueObjectSP valobj_sp)
bool MsvcStlTreeIterSummaryProvider(ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options)
bool IsMsvcStlOrdering(ValueObject &valobj)
Definition MsvcStl.cpp:227
bool MsvcStlStringViewSummaryProvider(ValueObject &valobj, Stream &stream, const TypeSummaryOptions &summary_options)
bool IsMsvcStlStringViewType(ValueObject &valobj)
Definition MsvcStl.cpp:149
bool MsvcStlWStringViewSummaryProvider(ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options)
Definition MsvcStl.cpp:191
SyntheticChildrenFrontEnd * MsvcStlUnorderedSyntheticFrontEndCreator(CXXSyntheticChildren *, lldb::ValueObjectSP valobj_sp)
bool IsMsvcStlList(ValueObject &valobj)
bool IsMsvcStlVector(ValueObject &valobj)
bool IsMsvcStlSpan(ValueObject &valobj)
bool IsMsvcStlAtomic(ValueObject &valobj, bool *is_smart_ptr=nullptr)
SyntheticChildrenFrontEnd * MsvcStlSpanSyntheticFrontEndCreator(CXXSyntheticChildren *, lldb::ValueObjectSP valobj_sp)
SyntheticChildrenFrontEnd * MsvcStlDequeSyntheticFrontEndCreator(CXXSyntheticChildren *, lldb::ValueObjectSP valobj_sp)
bool IsMsvcStlValarray(ValueObject &valobj)
SyntheticChildrenFrontEnd * MsvcStlExpectedSyntheticFrontEndCreator(CXXSyntheticChildren *, lldb::ValueObjectSP valobj_sp)
lldb_private::SyntheticChildrenFrontEnd * MsvcStlTreeIterSyntheticFrontEndCreator(CXXSyntheticChildren *, lldb::ValueObjectSP valobj_sp)
lldb_private::SyntheticChildrenFrontEnd * MsvcStlSmartPointerSyntheticFrontEndCreator(lldb::ValueObjectSP valobj_sp)
bool MsvcStlWStringSummaryProvider(ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options)
Definition MsvcStl.cpp:155
lldb_private::SyntheticChildrenFrontEnd * MsvcStlUniquePtrSyntheticFrontEndCreator(lldb::ValueObjectSP valobj_sp)
bool IsMsvcStlVariant(ValueObject &valobj)
SyntheticChildrenFrontEnd * MsvcStlAtomicSyntheticFrontEndCreator(CXXSyntheticChildren *, lldb::ValueObjectSP valobj_sp)
bool IsMsvcStlBitset(ValueObject &valobj)
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