1 //===-- Cocoa.h ---------------------------------------------------*- C++
4 // The LLVM Compiler Infrastructure
6 // This file is distributed under the University of Illinois Open Source
7 // License. See LICENSE.TXT for details.
9 //===----------------------------------------------------------------------===//
11 #ifndef liblldb_Cocoa_h_
12 #define liblldb_Cocoa_h_
14 #include "lldb/Core/Stream.h"
15 #include "lldb/Core/ValueObject.h"
16 #include "lldb/DataFormatters/TypeSummary.h"
17 #include "lldb/DataFormatters/TypeSynthetic.h"
18 #include "lldb/Target/ObjCLanguageRuntime.h"
20 namespace lldb_private {
21 namespace formatters {
22 bool NSIndexSetSummaryProvider(ValueObject &valobj, Stream &stream,
23 const TypeSummaryOptions &options);
25 bool NSArraySummaryProvider(ValueObject &valobj, Stream &stream,
26 const TypeSummaryOptions &options);
28 template <bool needs_at>
29 bool NSDataSummaryProvider(ValueObject &valobj, Stream &stream,
30 const TypeSummaryOptions &options);
32 bool NSNumberSummaryProvider(ValueObject &valobj, Stream &stream,
33 const TypeSummaryOptions &options);
35 bool NSNotificationSummaryProvider(ValueObject &valobj, Stream &stream,
36 const TypeSummaryOptions &options);
38 bool NSTimeZoneSummaryProvider(ValueObject &valobj, Stream &stream,
39 const TypeSummaryOptions &options);
41 bool NSMachPortSummaryProvider(ValueObject &valobj, Stream &stream,
42 const TypeSummaryOptions &options);
44 bool NSDateSummaryProvider(ValueObject &valobj, Stream &stream,
45 const TypeSummaryOptions &options);
47 bool NSBundleSummaryProvider(ValueObject &valobj, Stream &stream,
48 const TypeSummaryOptions &options);
50 bool NSURLSummaryProvider(ValueObject &valobj, Stream &stream,
51 const TypeSummaryOptions &options);
53 extern template bool NSDataSummaryProvider<true>(ValueObject &, Stream &,
54 const TypeSummaryOptions &);
56 extern template bool NSDataSummaryProvider<false>(ValueObject &, Stream &,
57 const TypeSummaryOptions &);
59 SyntheticChildrenFrontEnd *
60 NSArraySyntheticFrontEndCreator(CXXSyntheticChildren *, lldb::ValueObjectSP);
62 SyntheticChildrenFrontEnd *
63 NSIndexPathSyntheticFrontEndCreator(CXXSyntheticChildren *,
66 bool ObjCClassSummaryProvider(ValueObject &valobj, Stream &stream,
67 const TypeSummaryOptions &options);
69 SyntheticChildrenFrontEnd *
70 ObjCClassSyntheticFrontEndCreator(CXXSyntheticChildren *, lldb::ValueObjectSP);
72 bool ObjCBOOLSummaryProvider(ValueObject &valobj, Stream &stream,
73 const TypeSummaryOptions &options);
75 bool ObjCBooleanSummaryProvider(ValueObject &valobj, Stream &stream,
76 const TypeSummaryOptions &options);
78 template <bool is_sel_ptr>
79 bool ObjCSELSummaryProvider(ValueObject &valobj, Stream &stream,
80 const TypeSummaryOptions &options);
82 extern template bool ObjCSELSummaryProvider<true>(ValueObject &, Stream &,
83 const TypeSummaryOptions &);
85 extern template bool ObjCSELSummaryProvider<false>(ValueObject &, Stream &,
86 const TypeSummaryOptions &);
88 bool NSError_SummaryProvider(ValueObject &valobj, Stream &stream,
89 const TypeSummaryOptions &options);
91 bool NSException_SummaryProvider(ValueObject &valobj, Stream &stream,
92 const TypeSummaryOptions &options);
94 SyntheticChildrenFrontEnd *
95 NSErrorSyntheticFrontEndCreator(CXXSyntheticChildren *,
96 lldb::ValueObjectSP valobj_sp);
98 SyntheticChildrenFrontEnd *
99 NSExceptionSyntheticFrontEndCreator(CXXSyntheticChildren *,
100 lldb::ValueObjectSP valobj_sp);
102 class NSArray_Additionals {
104 static std::map<ConstString, CXXFunctionSummaryFormat::Callback> &
105 GetAdditionalSummaries();
107 static std::map<ConstString, CXXSyntheticChildren::CreateFrontEndCallback> &
108 GetAdditionalSynthetics();
110 } // namespace formatters
111 } // namespace lldb_private
113 #endif // liblldb_Cocoa_h_