| //===-- MsvcStl.h -----------------------------------------------*- C++ -*-===// |
| // |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| // See https://llvm.org/LICENSE.txt for license information. |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef LLDB_SOURCE_PLUGINS_LANGUAGE_CPLUSPLUS_MSVCSTL_H |
| #define LLDB_SOURCE_PLUGINS_LANGUAGE_CPLUSPLUS_MSVCSTL_H |
| |
| #include "lldb/DataFormatters/StringPrinter.h" |
| #include "lldb/DataFormatters/TypeSummary.h" |
| #include "lldb/Utility/Stream.h" |
| #include "lldb/ValueObject/ValueObject.h" |
| |
| namespace lldb_private { |
| namespace formatters { |
| |
| bool IsMsvcStlStringType(ValueObject &valobj); |
| |
| template <StringPrinter::StringElementType element_type> |
| bool MsvcStlStringSummaryProvider( |
| ValueObject &valobj, Stream &stream, |
| const TypeSummaryOptions |
| &summary_options); // VC 2015+ std::string,u8string,u16string,u32string |
| |
| bool MsvcStlWStringSummaryProvider( |
| ValueObject &valobj, Stream &stream, |
| const TypeSummaryOptions &options); // VC 2015+ std::wstring |
| |
| template <StringPrinter::StringElementType element_type> |
| bool MsvcStlStringViewSummaryProvider( |
| ValueObject &valobj, Stream &stream, |
| const TypeSummaryOptions &summary_options); // std::{u8,u16,u32}?string_view |
| |
| bool MsvcStlWStringViewSummaryProvider( |
| ValueObject &valobj, Stream &stream, |
| const TypeSummaryOptions &options); // std::wstring_view |
| |
| // MSVC STL std::shared_ptr<> and std::weak_ptr<> |
| bool IsMsvcStlSmartPointer(ValueObject &valobj); |
| bool MsvcStlSmartPointerSummaryProvider(ValueObject &valobj, Stream &stream, |
| const TypeSummaryOptions &options); |
| |
| lldb_private::SyntheticChildrenFrontEnd * |
| MsvcStlSmartPointerSyntheticFrontEndCreator(lldb::ValueObjectSP valobj_sp); |
| |
| // MSVC STL std::unique_ptr<> |
| bool IsMsvcStlUniquePtr(ValueObject &valobj); |
| bool MsvcStlUniquePtrSummaryProvider(ValueObject &valobj, Stream &stream, |
| const TypeSummaryOptions &options); |
| |
| lldb_private::SyntheticChildrenFrontEnd * |
| MsvcStlUniquePtrSyntheticFrontEndCreator(lldb::ValueObjectSP valobj_sp); |
| |
| // MSVC STL std::tuple<> |
| bool IsMsvcStlTuple(ValueObject &valobj); |
| SyntheticChildrenFrontEnd * |
| MsvcStlTupleSyntheticFrontEndCreator(CXXSyntheticChildren *, |
| lldb::ValueObjectSP valobj_sp); |
| |
| // MSVC STL std::vector<> |
| bool IsMsvcStlVector(ValueObject &valobj); |
| lldb_private::SyntheticChildrenFrontEnd * |
| MsvcStlVectorSyntheticFrontEndCreator(lldb::ValueObjectSP valobj_sp); |
| |
| // MSVC STL std::list and std::forward_list |
| bool IsMsvcStlList(ValueObject &valobj); |
| SyntheticChildrenFrontEnd * |
| MsvcStlForwardListSyntheticFrontEndCreator(CXXSyntheticChildren *, |
| lldb::ValueObjectSP valobj_sp); |
| SyntheticChildrenFrontEnd * |
| MsvcStlListSyntheticFrontEndCreator(CXXSyntheticChildren *, |
| lldb::ValueObjectSP valobj_sp); |
| |
| // MSVC STL std::optional<> |
| bool IsMsvcStlOptional(ValueObject &valobj); |
| SyntheticChildrenFrontEnd * |
| MsvcStlOptionalSyntheticFrontEndCreator(CXXSyntheticChildren *, |
| lldb::ValueObjectSP valobj_sp); |
| |
| // MSVC STL std::variant<> |
| bool IsMsvcStlVariant(ValueObject &valobj); |
| bool MsvcStlVariantSummaryProvider(ValueObject &valobj, Stream &stream, |
| const TypeSummaryOptions &options); |
| SyntheticChildrenFrontEnd * |
| MsvcStlVariantSyntheticFrontEndCreator(CXXSyntheticChildren *, |
| lldb::ValueObjectSP valobj_sp); |
| |
| // MSVC STL std::atomic<> |
| bool MsvcStlAtomicSummaryProvider(ValueObject &valobj, Stream &stream, |
| const TypeSummaryOptions &options); |
| SyntheticChildrenFrontEnd * |
| MsvcStlAtomicSyntheticFrontEndCreator(CXXSyntheticChildren *, |
| lldb::ValueObjectSP valobj_sp); |
| |
| // MSVC STL std::unordered_(multi){map|set}<> |
| bool IsMsvcStlUnordered(ValueObject &valobj); |
| SyntheticChildrenFrontEnd * |
| MsvcStlUnorderedSyntheticFrontEndCreator(CXXSyntheticChildren *, |
| lldb::ValueObjectSP valobj_sp); |
| bool IsMsvcStlTreeIter(ValueObject &valobj); |
| bool MsvcStlTreeIterSummaryProvider(ValueObject &valobj, Stream &stream, |
| const TypeSummaryOptions &options); |
| lldb_private::SyntheticChildrenFrontEnd * |
| MsvcStlTreeIterSyntheticFrontEndCreator(CXXSyntheticChildren *, |
| lldb::ValueObjectSP valobj_sp); |
| |
| // std::map,set,multimap,multiset |
| bool IsMsvcStlMapLike(ValueObject &valobj); |
| lldb_private::SyntheticChildrenFrontEnd * |
| MsvcStlMapLikeSyntheticFrontEndCreator(lldb::ValueObjectSP valobj_sp); |
| |
| // MSVC STL std::deque<> |
| bool IsMsvcStlDeque(ValueObject &valobj); |
| SyntheticChildrenFrontEnd * |
| MsvcStlDequeSyntheticFrontEndCreator(CXXSyntheticChildren *, |
| lldb::ValueObjectSP valobj_sp); |
| |
| } // namespace formatters |
| } // namespace lldb_private |
| |
| #endif |