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
65
66// MSVC STL std::unique_ptr<>
69 const TypeSummaryOptions &options);
70
73
74// MSVC STL std::tuple<>
75bool IsMsvcStlTuple(ValueObject &valobj);
78 lldb::ValueObjectSP valobj_sp);
79
80// MSVC STL std::vector<>
86 lldb::ValueObjectSP valobj_sp);
87
88// MSVC STL std::list and std::forward_list
89bool IsMsvcStlList(ValueObject &valobj);
92 lldb::ValueObjectSP valobj_sp);
95 lldb::ValueObjectSP valobj_sp);
96
97// MSVC STL std::optional<>
98bool IsMsvcStlOptional(ValueObject &valobj);
101 lldb::ValueObjectSP valobj_sp);
102
103// MSVC STL std::variant<>
104bool IsMsvcStlVariant(ValueObject &valobj);
106 const TypeSummaryOptions &options);
109 lldb::ValueObjectSP valobj_sp);
110
111// MSVC STL std::atomic<>
112bool IsMsvcStlAtomic(ValueObject &valobj);
114 const TypeSummaryOptions &options);
117 lldb::ValueObjectSP valobj_sp);
118
119// MSVC STL std::unordered_(multi){map|set}<>
120bool IsMsvcStlUnordered(ValueObject &valobj);
123 lldb::ValueObjectSP valobj_sp);
124bool IsMsvcStlTreeIter(ValueObject &valobj);
126 const TypeSummaryOptions &options);
129 lldb::ValueObjectSP valobj_sp);
130
131// std::map,set,multimap,multiset
132bool IsMsvcStlMapLike(ValueObject &valobj);
135
136// MSVC STL std::deque<>
137bool IsMsvcStlDeque(ValueObject &valobj);
140 lldb::ValueObjectSP valobj_sp);
141
142// MSVC STL std::span<>
143bool IsMsvcStlSpan(ValueObject &valobj);
146 lldb::ValueObjectSP valobj_sp);
147
148// MSVC STL std::bitset<>
149bool IsMsvcStlBitset(ValueObject &valobj);
152 lldb::ValueObjectSP valobj_sp);
153
154// MSVC STL std::expected<>
155bool IsMsvcStlExpected(ValueObject &valobj);
157 const TypeSummaryOptions &options);
160 lldb::ValueObjectSP valobj_sp);
161
162// MSVC STL std::valarray<>
163bool IsMsvcStlValarray(ValueObject &valobj);
166 lldb::ValueObjectSP valobj_sp);
167
168// MSVC STL std::source_location
171 const TypeSummaryOptions &options);
172
173} // namespace formatters
174} // namespace lldb_private
175
176#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 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 IsMsvcStlAtomic(ValueObject &valobj)
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)
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