brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.0 KiB · e818b88 Raw
126 lines · c
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-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLDB_SOURCE_PLUGINS_LANGUAGE_CPLUSPLUS_MSVCSTL_H10#define LLDB_SOURCE_PLUGINS_LANGUAGE_CPLUSPLUS_MSVCSTL_H11 12#include "lldb/DataFormatters/StringPrinter.h"13#include "lldb/DataFormatters/TypeSummary.h"14#include "lldb/Utility/Stream.h"15#include "lldb/ValueObject/ValueObject.h"16 17namespace lldb_private {18namespace formatters {19 20bool IsMsvcStlStringType(ValueObject &valobj);21 22template <StringPrinter::StringElementType element_type>23bool MsvcStlStringSummaryProvider(24    ValueObject &valobj, Stream &stream,25    const TypeSummaryOptions26        &summary_options); // VC 2015+ std::string,u8string,u16string,u32string27 28bool MsvcStlWStringSummaryProvider(29    ValueObject &valobj, Stream &stream,30    const TypeSummaryOptions &options); // VC 2015+ std::wstring31 32template <StringPrinter::StringElementType element_type>33bool MsvcStlStringViewSummaryProvider(34    ValueObject &valobj, Stream &stream,35    const TypeSummaryOptions &summary_options); // std::{u8,u16,u32}?string_view36 37bool MsvcStlWStringViewSummaryProvider(38    ValueObject &valobj, Stream &stream,39    const TypeSummaryOptions &options); // std::wstring_view40 41// MSVC STL std::shared_ptr<> and std::weak_ptr<>42bool IsMsvcStlSmartPointer(ValueObject &valobj);43bool MsvcStlSmartPointerSummaryProvider(ValueObject &valobj, Stream &stream,44                                        const TypeSummaryOptions &options);45 46lldb_private::SyntheticChildrenFrontEnd *47MsvcStlSmartPointerSyntheticFrontEndCreator(lldb::ValueObjectSP valobj_sp);48 49// MSVC STL std::unique_ptr<>50bool IsMsvcStlUniquePtr(ValueObject &valobj);51bool MsvcStlUniquePtrSummaryProvider(ValueObject &valobj, Stream &stream,52                                     const TypeSummaryOptions &options);53 54lldb_private::SyntheticChildrenFrontEnd *55MsvcStlUniquePtrSyntheticFrontEndCreator(lldb::ValueObjectSP valobj_sp);56 57// MSVC STL std::tuple<>58bool IsMsvcStlTuple(ValueObject &valobj);59SyntheticChildrenFrontEnd *60MsvcStlTupleSyntheticFrontEndCreator(CXXSyntheticChildren *,61                                     lldb::ValueObjectSP valobj_sp);62 63// MSVC STL std::vector<>64bool IsMsvcStlVector(ValueObject &valobj);65lldb_private::SyntheticChildrenFrontEnd *66MsvcStlVectorSyntheticFrontEndCreator(lldb::ValueObjectSP valobj_sp);67 68// MSVC STL std::list and std::forward_list69bool IsMsvcStlList(ValueObject &valobj);70SyntheticChildrenFrontEnd *71MsvcStlForwardListSyntheticFrontEndCreator(CXXSyntheticChildren *,72                                           lldb::ValueObjectSP valobj_sp);73SyntheticChildrenFrontEnd *74MsvcStlListSyntheticFrontEndCreator(CXXSyntheticChildren *,75                                    lldb::ValueObjectSP valobj_sp);76 77// MSVC STL std::optional<>78bool IsMsvcStlOptional(ValueObject &valobj);79SyntheticChildrenFrontEnd *80MsvcStlOptionalSyntheticFrontEndCreator(CXXSyntheticChildren *,81                                        lldb::ValueObjectSP valobj_sp);82 83// MSVC STL std::variant<>84bool IsMsvcStlVariant(ValueObject &valobj);85bool MsvcStlVariantSummaryProvider(ValueObject &valobj, Stream &stream,86                                   const TypeSummaryOptions &options);87SyntheticChildrenFrontEnd *88MsvcStlVariantSyntheticFrontEndCreator(CXXSyntheticChildren *,89                                       lldb::ValueObjectSP valobj_sp);90 91// MSVC STL std::atomic<>92bool IsMsvcStlAtomic(ValueObject &valobj);93bool MsvcStlAtomicSummaryProvider(ValueObject &valobj, Stream &stream,94                                  const TypeSummaryOptions &options);95SyntheticChildrenFrontEnd *96MsvcStlAtomicSyntheticFrontEndCreator(CXXSyntheticChildren *,97                                      lldb::ValueObjectSP valobj_sp);98 99// MSVC STL std::unordered_(multi){map|set}<>100bool IsMsvcStlUnordered(ValueObject &valobj);101SyntheticChildrenFrontEnd *102MsvcStlUnorderedSyntheticFrontEndCreator(CXXSyntheticChildren *,103                                         lldb::ValueObjectSP valobj_sp);104bool IsMsvcStlTreeIter(ValueObject &valobj);105bool MsvcStlTreeIterSummaryProvider(ValueObject &valobj, Stream &stream,106                                    const TypeSummaryOptions &options);107lldb_private::SyntheticChildrenFrontEnd *108MsvcStlTreeIterSyntheticFrontEndCreator(CXXSyntheticChildren *,109                                        lldb::ValueObjectSP valobj_sp);110 111// std::map,set,multimap,multiset112bool IsMsvcStlMapLike(ValueObject &valobj);113lldb_private::SyntheticChildrenFrontEnd *114MsvcStlMapLikeSyntheticFrontEndCreator(lldb::ValueObjectSP valobj_sp);115 116// MSVC STL std::deque<>117bool IsMsvcStlDeque(ValueObject &valobj);118SyntheticChildrenFrontEnd *119MsvcStlDequeSyntheticFrontEndCreator(CXXSyntheticChildren *,120                                     lldb::ValueObjectSP valobj_sp);121 122} // namespace formatters123} // namespace lldb_private124 125#endif126