1 //===-- Cocoa.h ---------------------------------------------------*- C++ 2 //-*-===// 3 // 4 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5 // See https://llvm.org/LICENSE.txt for license information. 6 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7 // 8 //===----------------------------------------------------------------------===// 9 10 #ifndef LLDB_SOURCE_PLUGINS_LANGUAGE_OBJC_COCOA_H 11 #define LLDB_SOURCE_PLUGINS_LANGUAGE_OBJC_COCOA_H 12 13 #include "lldb/Core/ValueObject.h" 14 #include "lldb/DataFormatters/TypeSummary.h" 15 #include "lldb/DataFormatters/TypeSynthetic.h" 16 #include "lldb/Utility/Stream.h" 17 18 #include "Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h" 19 20 namespace lldb_private { 21 namespace formatters { 22 bool NSIndexSetSummaryProvider(ValueObject &valobj, Stream &stream, 23 const TypeSummaryOptions &options); 24 25 bool NSArraySummaryProvider(ValueObject &valobj, Stream &stream, 26 const TypeSummaryOptions &options); 27 28 template <bool needs_at> 29 bool NSDataSummaryProvider(ValueObject &valobj, Stream &stream, 30 const TypeSummaryOptions &options); 31 32 bool NSNumberSummaryProvider(ValueObject &valobj, Stream &stream, 33 const TypeSummaryOptions &options); 34 35 bool NSDecimalNumberSummaryProvider(ValueObject &valobj, Stream &stream, 36 const TypeSummaryOptions &options); 37 38 bool NSNotificationSummaryProvider(ValueObject &valobj, Stream &stream, 39 const TypeSummaryOptions &options); 40 41 bool NSTimeZoneSummaryProvider(ValueObject &valobj, Stream &stream, 42 const TypeSummaryOptions &options); 43 44 bool NSMachPortSummaryProvider(ValueObject &valobj, Stream &stream, 45 const TypeSummaryOptions &options); 46 47 bool NSDateSummaryProvider(ValueObject &valobj, Stream &stream, 48 const TypeSummaryOptions &options); 49 50 bool NSBundleSummaryProvider(ValueObject &valobj, Stream &stream, 51 const TypeSummaryOptions &options); 52 53 bool NSURLSummaryProvider(ValueObject &valobj, Stream &stream, 54 const TypeSummaryOptions &options); 55 56 extern template bool NSDataSummaryProvider<true>(ValueObject &, Stream &, 57 const TypeSummaryOptions &); 58 59 extern template bool NSDataSummaryProvider<false>(ValueObject &, Stream &, 60 const TypeSummaryOptions &); 61 62 SyntheticChildrenFrontEnd * 63 NSArraySyntheticFrontEndCreator(CXXSyntheticChildren *, lldb::ValueObjectSP); 64 65 SyntheticChildrenFrontEnd * 66 NSIndexPathSyntheticFrontEndCreator(CXXSyntheticChildren *, 67 lldb::ValueObjectSP); 68 69 bool ObjCClassSummaryProvider(ValueObject &valobj, Stream &stream, 70 const TypeSummaryOptions &options); 71 72 SyntheticChildrenFrontEnd * 73 ObjCClassSyntheticFrontEndCreator(CXXSyntheticChildren *, lldb::ValueObjectSP); 74 75 bool ObjCBOOLSummaryProvider(ValueObject &valobj, Stream &stream, 76 const TypeSummaryOptions &options); 77 78 bool ObjCBooleanSummaryProvider(ValueObject &valobj, Stream &stream, 79 const TypeSummaryOptions &options); 80 81 template <bool is_sel_ptr> 82 bool ObjCSELSummaryProvider(ValueObject &valobj, Stream &stream, 83 const TypeSummaryOptions &options); 84 85 extern template bool ObjCSELSummaryProvider<true>(ValueObject &, Stream &, 86 const TypeSummaryOptions &); 87 88 extern template bool ObjCSELSummaryProvider<false>(ValueObject &, Stream &, 89 const TypeSummaryOptions &); 90 91 bool NSError_SummaryProvider(ValueObject &valobj, Stream &stream, 92 const TypeSummaryOptions &options); 93 94 bool NSException_SummaryProvider(ValueObject &valobj, Stream &stream, 95 const TypeSummaryOptions &options); 96 97 SyntheticChildrenFrontEnd * 98 NSErrorSyntheticFrontEndCreator(CXXSyntheticChildren *, 99 lldb::ValueObjectSP valobj_sp); 100 101 SyntheticChildrenFrontEnd * 102 NSExceptionSyntheticFrontEndCreator(CXXSyntheticChildren *, 103 lldb::ValueObjectSP valobj_sp); 104 105 class NSArray_Additionals { 106 public: 107 static std::map<ConstString, CXXFunctionSummaryFormat::Callback> & 108 GetAdditionalSummaries(); 109 110 static std::map<ConstString, CXXSyntheticChildren::CreateFrontEndCallback> & 111 GetAdditionalSynthetics(); 112 }; 113 } // namespace formatters 114 } // namespace lldb_private 115 116 #endif // LLDB_SOURCE_PLUGINS_LANGUAGE_OBJC_COCOA_H 117