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::shared_ptr<> and std::weak_ptr<>
46 const TypeSummaryOptions &options);
47
50
51// MSVC STL std::unique_ptr<>
54 const TypeSummaryOptions &options);
55
58
59// MSVC STL std::tuple<>
60bool IsMsvcStlTuple(ValueObject &valobj);
63 lldb::ValueObjectSP valobj_sp);
64
65// MSVC STL std::vector<>
69
70// MSVC STL std::list and std::forward_list
71bool IsMsvcStlList(ValueObject &valobj);
74 lldb::ValueObjectSP valobj_sp);
77 lldb::ValueObjectSP valobj_sp);
78
79// MSVC STL std::optional<>
80bool IsMsvcStlOptional(ValueObject &valobj);
83 lldb::ValueObjectSP valobj_sp);
84
85// MSVC STL std::variant<>
86bool IsMsvcStlVariant(ValueObject &valobj);
88 const TypeSummaryOptions &options);
91 lldb::ValueObjectSP valobj_sp);
92
93// MSVC STL std::atomic<>
94bool IsMsvcStlAtomic(ValueObject &valobj);
96 const TypeSummaryOptions &options);
99 lldb::ValueObjectSP valobj_sp);
100
101// MSVC STL std::unordered_(multi){map|set}<>
102bool IsMsvcStlUnordered(ValueObject &valobj);
105 lldb::ValueObjectSP valobj_sp);
106bool IsMsvcStlTreeIter(ValueObject &valobj);
108 const TypeSummaryOptions &options);
111 lldb::ValueObjectSP valobj_sp);
112
113// std::map,set,multimap,multiset
114bool IsMsvcStlMapLike(ValueObject &valobj);
117
118// MSVC STL std::deque<>
119bool IsMsvcStlDeque(ValueObject &valobj);
122 lldb::ValueObjectSP valobj_sp);
123
124// MSVC STL std::span<>
125bool IsMsvcStlSpan(ValueObject &valobj);
128 lldb::ValueObjectSP valobj_sp);
129
130} // namespace formatters
131} // namespace lldb_private
132
133#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)
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)
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 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