1061da546Spatrick //===-- Cocoa.h ---------------------------------------------------*- C++ 2061da546Spatrick //-*-===// 3061da546Spatrick // 4061da546Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5061da546Spatrick // See https://llvm.org/LICENSE.txt for license information. 6061da546Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7061da546Spatrick // 8061da546Spatrick //===----------------------------------------------------------------------===// 9061da546Spatrick 10*dda28197Spatrick #ifndef LLDB_SOURCE_PLUGINS_LANGUAGE_OBJC_COCOA_H 11*dda28197Spatrick #define LLDB_SOURCE_PLUGINS_LANGUAGE_OBJC_COCOA_H 12061da546Spatrick 13061da546Spatrick #include "lldb/Core/ValueObject.h" 14061da546Spatrick #include "lldb/DataFormatters/TypeSummary.h" 15061da546Spatrick #include "lldb/DataFormatters/TypeSynthetic.h" 16061da546Spatrick #include "lldb/Utility/Stream.h" 17061da546Spatrick 18061da546Spatrick #include "Plugins/LanguageRuntime/ObjC/ObjCLanguageRuntime.h" 19061da546Spatrick 20061da546Spatrick namespace lldb_private { 21061da546Spatrick namespace formatters { 22061da546Spatrick bool NSIndexSetSummaryProvider(ValueObject &valobj, Stream &stream, 23061da546Spatrick const TypeSummaryOptions &options); 24061da546Spatrick 25061da546Spatrick bool NSArraySummaryProvider(ValueObject &valobj, Stream &stream, 26061da546Spatrick const TypeSummaryOptions &options); 27061da546Spatrick 28061da546Spatrick template <bool needs_at> 29061da546Spatrick bool NSDataSummaryProvider(ValueObject &valobj, Stream &stream, 30061da546Spatrick const TypeSummaryOptions &options); 31061da546Spatrick 32061da546Spatrick bool NSNumberSummaryProvider(ValueObject &valobj, Stream &stream, 33061da546Spatrick const TypeSummaryOptions &options); 34061da546Spatrick 35061da546Spatrick bool NSDecimalNumberSummaryProvider(ValueObject &valobj, Stream &stream, 36061da546Spatrick const TypeSummaryOptions &options); 37061da546Spatrick 38061da546Spatrick bool NSNotificationSummaryProvider(ValueObject &valobj, Stream &stream, 39061da546Spatrick const TypeSummaryOptions &options); 40061da546Spatrick 41061da546Spatrick bool NSTimeZoneSummaryProvider(ValueObject &valobj, Stream &stream, 42061da546Spatrick const TypeSummaryOptions &options); 43061da546Spatrick 44061da546Spatrick bool NSMachPortSummaryProvider(ValueObject &valobj, Stream &stream, 45061da546Spatrick const TypeSummaryOptions &options); 46061da546Spatrick 47061da546Spatrick bool NSDateSummaryProvider(ValueObject &valobj, Stream &stream, 48061da546Spatrick const TypeSummaryOptions &options); 49061da546Spatrick 50061da546Spatrick bool NSBundleSummaryProvider(ValueObject &valobj, Stream &stream, 51061da546Spatrick const TypeSummaryOptions &options); 52061da546Spatrick 53061da546Spatrick bool NSURLSummaryProvider(ValueObject &valobj, Stream &stream, 54061da546Spatrick const TypeSummaryOptions &options); 55061da546Spatrick 56061da546Spatrick extern template bool NSDataSummaryProvider<true>(ValueObject &, Stream &, 57061da546Spatrick const TypeSummaryOptions &); 58061da546Spatrick 59061da546Spatrick extern template bool NSDataSummaryProvider<false>(ValueObject &, Stream &, 60061da546Spatrick const TypeSummaryOptions &); 61061da546Spatrick 62061da546Spatrick SyntheticChildrenFrontEnd * 63061da546Spatrick NSArraySyntheticFrontEndCreator(CXXSyntheticChildren *, lldb::ValueObjectSP); 64061da546Spatrick 65061da546Spatrick SyntheticChildrenFrontEnd * 66061da546Spatrick NSIndexPathSyntheticFrontEndCreator(CXXSyntheticChildren *, 67061da546Spatrick lldb::ValueObjectSP); 68061da546Spatrick 69061da546Spatrick bool ObjCClassSummaryProvider(ValueObject &valobj, Stream &stream, 70061da546Spatrick const TypeSummaryOptions &options); 71061da546Spatrick 72061da546Spatrick SyntheticChildrenFrontEnd * 73061da546Spatrick ObjCClassSyntheticFrontEndCreator(CXXSyntheticChildren *, lldb::ValueObjectSP); 74061da546Spatrick 75061da546Spatrick bool ObjCBOOLSummaryProvider(ValueObject &valobj, Stream &stream, 76061da546Spatrick const TypeSummaryOptions &options); 77061da546Spatrick 78061da546Spatrick bool ObjCBooleanSummaryProvider(ValueObject &valobj, Stream &stream, 79061da546Spatrick const TypeSummaryOptions &options); 80061da546Spatrick 81061da546Spatrick template <bool is_sel_ptr> 82061da546Spatrick bool ObjCSELSummaryProvider(ValueObject &valobj, Stream &stream, 83061da546Spatrick const TypeSummaryOptions &options); 84061da546Spatrick 85061da546Spatrick extern template bool ObjCSELSummaryProvider<true>(ValueObject &, Stream &, 86061da546Spatrick const TypeSummaryOptions &); 87061da546Spatrick 88061da546Spatrick extern template bool ObjCSELSummaryProvider<false>(ValueObject &, Stream &, 89061da546Spatrick const TypeSummaryOptions &); 90061da546Spatrick 91061da546Spatrick bool NSError_SummaryProvider(ValueObject &valobj, Stream &stream, 92061da546Spatrick const TypeSummaryOptions &options); 93061da546Spatrick 94061da546Spatrick bool NSException_SummaryProvider(ValueObject &valobj, Stream &stream, 95061da546Spatrick const TypeSummaryOptions &options); 96061da546Spatrick 97061da546Spatrick SyntheticChildrenFrontEnd * 98061da546Spatrick NSErrorSyntheticFrontEndCreator(CXXSyntheticChildren *, 99061da546Spatrick lldb::ValueObjectSP valobj_sp); 100061da546Spatrick 101061da546Spatrick SyntheticChildrenFrontEnd * 102061da546Spatrick NSExceptionSyntheticFrontEndCreator(CXXSyntheticChildren *, 103061da546Spatrick lldb::ValueObjectSP valobj_sp); 104061da546Spatrick 105061da546Spatrick class NSArray_Additionals { 106061da546Spatrick public: 107061da546Spatrick static std::map<ConstString, CXXFunctionSummaryFormat::Callback> & 108061da546Spatrick GetAdditionalSummaries(); 109061da546Spatrick 110061da546Spatrick static std::map<ConstString, CXXSyntheticChildren::CreateFrontEndCallback> & 111061da546Spatrick GetAdditionalSynthetics(); 112061da546Spatrick }; 113061da546Spatrick } // namespace formatters 114061da546Spatrick } // namespace lldb_private 115061da546Spatrick 116*dda28197Spatrick #endif // LLDB_SOURCE_PLUGINS_LANGUAGE_OBJC_COCOA_H 117