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<>
84
85// MSVC STL std::list and std::forward_list
86bool IsMsvcStlList(ValueObject &valobj);
89 lldb::ValueObjectSP valobj_sp);
92 lldb::ValueObjectSP valobj_sp);
93
94// MSVC STL std::optional<>
95bool IsMsvcStlOptional(ValueObject &valobj);
98 lldb::ValueObjectSP valobj_sp);
99
100// MSVC STL std::variant<>
101bool IsMsvcStlVariant(ValueObject &valobj);
103 const TypeSummaryOptions &options);
106 lldb::ValueObjectSP valobj_sp);
107
108// MSVC STL std::atomic<>
109bool IsMsvcStlAtomic(ValueObject &valobj);
111 const TypeSummaryOptions &options);
114 lldb::ValueObjectSP valobj_sp);
115
116// MSVC STL std::unordered_(multi){map|set}<>
117bool IsMsvcStlUnordered(ValueObject &valobj);
120 lldb::ValueObjectSP valobj_sp);
121bool IsMsvcStlTreeIter(ValueObject &valobj);
123 const TypeSummaryOptions &options);
126 lldb::ValueObjectSP valobj_sp);
127
128// std::map,set,multimap,multiset
129bool IsMsvcStlMapLike(ValueObject &valobj);
132
133// MSVC STL std::deque<>
134bool IsMsvcStlDeque(ValueObject &valobj);
137 lldb::ValueObjectSP valobj_sp);
138
139// MSVC STL std::span<>
140bool IsMsvcStlSpan(ValueObject &valobj);
143 lldb::ValueObjectSP valobj_sp);
144
145} // namespace formatters
146} // namespace lldb_private
147
148#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 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:243
bool MsvcStlWeakOrderingSummaryProvider(ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options)
Definition MsvcStl.cpp:267
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:288
bool MsvcStlSmartPointerSummaryProvider(ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options)
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)
lldb_private::SyntheticChildrenFrontEnd * MsvcStlMapLikeSyntheticFrontEndCreator(lldb::ValueObjectSP valobj_sp)
bool MsvcStlTreeIterSummaryProvider(ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options)
bool IsMsvcStlOrdering(ValueObject &valobj)
Definition MsvcStl.cpp:226
bool MsvcStlStringViewSummaryProvider(ValueObject &valobj, Stream &stream, const TypeSummaryOptions &summary_options)
bool IsMsvcStlStringViewType(ValueObject &valobj)
Definition MsvcStl.cpp:148
bool MsvcStlWStringViewSummaryProvider(ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options)
Definition MsvcStl.cpp:190
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)
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:154
lldb_private::SyntheticChildrenFrontEnd * MsvcStlUniquePtrSyntheticFrontEndCreator(lldb::ValueObjectSP valobj_sp)
bool IsMsvcStlVariant(ValueObject &valobj)
SyntheticChildrenFrontEnd * MsvcStlAtomicSyntheticFrontEndCreator(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