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
20namespace lldb_private {
21namespace formatters {
22bool NSIndexSetSummaryProvider(ValueObject &valobj, Stream &stream,
23 const TypeSummaryOptions &options);
24
25bool NSArraySummaryProvider(ValueObject &valobj, Stream &stream,
26 const TypeSummaryOptions &options);
27
28template <bool needs_at>
29bool NSDataSummaryProvider(ValueObject &valobj, Stream &stream,
30 const TypeSummaryOptions &options);
31
32bool NSNumberSummaryProvider(ValueObject &valobj, Stream &stream,
33 const TypeSummaryOptions &options);
34
35bool NSDecimalNumberSummaryProvider(ValueObject &valobj, Stream &stream,
36 const TypeSummaryOptions &options);
37
38bool NSNotificationSummaryProvider(ValueObject &valobj, Stream &stream,
39 const TypeSummaryOptions &options);
40
41bool NSTimeZoneSummaryProvider(ValueObject &valobj, Stream &stream,
42 const TypeSummaryOptions &options);
43
44bool NSMachPortSummaryProvider(ValueObject &valobj, Stream &stream,
45 const TypeSummaryOptions &options);
46
47bool NSDateSummaryProvider(ValueObject &valobj, Stream &stream,
48 const TypeSummaryOptions &options);
49
50bool NSBundleSummaryProvider(ValueObject &valobj, Stream &stream,
51 const TypeSummaryOptions &options);
52
53bool NSURLSummaryProvider(ValueObject &valobj, Stream &stream,
54 const TypeSummaryOptions &options);
55
56extern template bool NSDataSummaryProvider<true>(ValueObject &, Stream &,
57 const TypeSummaryOptions &);
58
59extern template bool NSDataSummaryProvider<false>(ValueObject &, Stream &,
60 const TypeSummaryOptions &);
61
62SyntheticChildrenFrontEnd *
63NSArraySyntheticFrontEndCreator(CXXSyntheticChildren *, lldb::ValueObjectSP);
64
65SyntheticChildrenFrontEnd *
66NSIndexPathSyntheticFrontEndCreator(CXXSyntheticChildren *,
67 lldb::ValueObjectSP);
68
69bool ObjCClassSummaryProvider(ValueObject &valobj, Stream &stream,
70 const TypeSummaryOptions &options);
71
72SyntheticChildrenFrontEnd *
73ObjCClassSyntheticFrontEndCreator(CXXSyntheticChildren *, lldb::ValueObjectSP);
74
75bool ObjCBOOLSummaryProvider(ValueObject &valobj, Stream &stream,
76 const TypeSummaryOptions &options);
77
78bool ObjCBooleanSummaryProvider(ValueObject &valobj, Stream &stream,
79 const TypeSummaryOptions &options);
80
81template <bool is_sel_ptr>
82bool ObjCSELSummaryProvider(ValueObject &valobj, Stream &stream,
83 const TypeSummaryOptions &options);
84
85extern template bool ObjCSELSummaryProvider<true>(ValueObject &, Stream &,
86 const TypeSummaryOptions &);
87
88extern template bool ObjCSELSummaryProvider<false>(ValueObject &, Stream &,
89 const TypeSummaryOptions &);
90
91bool NSError_SummaryProvider(ValueObject &valobj, Stream &stream,
92 const TypeSummaryOptions &options);
93
94bool NSException_SummaryProvider(ValueObject &valobj, Stream &stream,
95 const TypeSummaryOptions &options);
96
97SyntheticChildrenFrontEnd *
98NSErrorSyntheticFrontEndCreator(CXXSyntheticChildren *,
99 lldb::ValueObjectSP valobj_sp);
100
101SyntheticChildrenFrontEnd *
102NSExceptionSyntheticFrontEndCreator(CXXSyntheticChildren *,
103 lldb::ValueObjectSP valobj_sp);
104
105class NSArray_Additionals {
106public:
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

source code of lldb/source/Plugins/Language/ObjC/Cocoa.h