Author: enrico Date: Mon Aug 22 13:07:52 2016 New Revision: 279446 URL: http://llvm.org/viewvc/llvm-project?rev=279446&view=rev Log: Add a non-code-running data formatter for __NSCFBoolean
Modified: lldb/trunk/source/Plugins/Language/ObjC/Cocoa.cpp lldb/trunk/source/Plugins/Language/ObjC/Cocoa.h Modified: lldb/trunk/source/Plugins/Language/ObjC/Cocoa.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Language/ObjC/Cocoa.cpp?rev=279446&r1=279445&r2=279446&view=diff ============================================================================== --- lldb/trunk/source/Plugins/Language/ObjC/Cocoa.cpp (original) +++ lldb/trunk/source/Plugins/Language/ObjC/Cocoa.cpp Mon Aug 22 13:07:52 2016 @@ -30,6 +30,8 @@ #include "lldb/Target/Process.h" #include "lldb/Utility/ProcessStructReader.h" +#include "Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntime.h" + #include "NSString.h" using namespace lldb; @@ -466,6 +468,9 @@ lldb_private::formatters::NSNumberSummar if (!class_name || !*class_name) return false; + if (!strcmp(class_name, "__NSCFBoolean")) + return ObjCBooleanSummaryProvider(valobj, stream, options); + if (!strcmp(class_name,"NSNumber") || !strcmp(class_name,"__NSCFNumber")) { uint64_t value = 0; @@ -889,6 +894,37 @@ lldb_private::formatters::ObjCBOOLSummar return true; } +bool +lldb_private::formatters::ObjCBooleanSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options) +{ + lldb::addr_t valobj_ptr_value = valobj.GetValueAsUnsigned(LLDB_INVALID_ADDRESS); + if (valobj_ptr_value == LLDB_INVALID_ADDRESS) + return false; + + ProcessSP process_sp(valobj.GetProcessSP()); + if (!process_sp) + return false; + + if (AppleObjCRuntime *objc_runtime = (AppleObjCRuntime*)process_sp->GetObjCLanguageRuntime()) + { + lldb::addr_t cf_true = LLDB_INVALID_ADDRESS, + cf_false = LLDB_INVALID_ADDRESS; + objc_runtime->GetValuesForGlobalCFBooleans(cf_true, cf_false); + if (valobj_ptr_value == cf_true) + { + stream.PutCString("YES"); + return true; + } + if (valobj_ptr_value == cf_false) + { + stream.PutCString("NO"); + return true; + } + } + + return false; +} + template <bool is_sel_ptr> bool lldb_private::formatters::ObjCSELSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options) Modified: lldb/trunk/source/Plugins/Language/ObjC/Cocoa.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Language/ObjC/Cocoa.h?rev=279446&r1=279445&r2=279446&view=diff ============================================================================== --- lldb/trunk/source/Plugins/Language/ObjC/Cocoa.h (original) +++ lldb/trunk/source/Plugins/Language/ObjC/Cocoa.h Mon Aug 22 13:07:52 2016 @@ -67,6 +67,9 @@ namespace lldb_private { bool ObjCBOOLSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options); + + bool + ObjCBooleanSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options); template <bool is_sel_ptr> bool _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits