summaryrefslogtreecommitdiff
path: root/lldb/source/DataFormatters/FormatManager.cpp
AgeCommit message (Collapse)Author
2013-10-08<rdar://problem/11778815>Enrico Granata
Formats (as in "type format") are now included in categories The only bit missing is caching formats along with synthetic children and summaries, which might be now desirable llvm-svn: 192217
2013-10-05<rdar://problem/15154623>Enrico Granata
Several CF* data formatters were in the AppKit category This puts them back where they belong, i.e. in category CoreFoundation llvm-svn: 192008
2013-10-04<rdar://problem/12042982>Enrico Granata
This radar extends the notion of one-liner summaries to automagically apply in a few interesting cases More specifically, this checkin changes the printout of ValueObjects to print on one-line (as if type summary add -c had been applied) iff: this ValueObject does not have a summary its children have no synthetic children its children are not a non-empty base class without a summary its children do not have a summary that asks for children to show up the aggregate length of all the names of all the children is <= 50 characters you did not ask to see the types during a printout your pointer depth is 0 This is meant to simplify the way LLDB shows data on screen for small structs and similarly compact data types (e.g. std::pair<int,int> anyone?) Feedback is especially welcome on how the feature feels and corner cases where we should apply this printout and don't (or viceversa, we are applying it when we shouldn't be) llvm-svn: 191996
2013-09-12<rdar://problem/14071463>Enrico Granata
SVN r189964 provided a sample Python script to inspect unordered(multi){set|map} with synthetic children, contribued by Jared Grubb This checkin converts that sample script to a C++ provider built into LLDB A test case is also provided llvm-svn: 190564
2013-08-07clean up about 22 warnings messagesMichael Sartain
llvm-svn: 187900
2013-07-10Adding a summary for ObjC blocksEnrico Granata
llvm-svn: 186023
2013-06-26Remove the #define USE_CACHE since the formatters cache has been operational ↵Enrico Granata
for a while now and has not caused issues that warrant disabling it Also, print the cache hits statistics if the log is in debugging mode vs. LLDB being a debug build - this should make it easier to gather useful metrics on cache success rate for real users llvm-svn: 184900
2013-06-18<rdar://problem/12717717>Enrico Granata
Modifying our data formatters matching algorithm to ensure that "const X*" is treated as equivalent to "X*" Also, a couple improvements to the "lldb types" logging llvm-svn: 184215
2013-06-11Remove eFormatHalfFloat as it isn't needed. eFormatFloat should be used and ↵Greg Clayton
the byte size will tell us how to display it. llvm-svn: 183755
2013-06-11<rdar://problem/12783351>Enrico Granata
Add support for half-floats, as specified by IEEE-754-2008 With this checkin, you can now say: (lldb) x/7hf foo to read 7 half-floats at address foo llvm-svn: 183716
2013-06-05<rdar://problem/13125225>Enrico Granata
Adding data formatters for std::set, std::multiset and std::multimap for libc++ The underlying data structure is the same as std::map, so this change is very minimal and mostly consists of test cases llvm-svn: 183323
2013-06-04<rdar://problem/14003462>Enrico Granata
Formatters for unsigned char* and const variant llvm-svn: 183254
2013-05-06<rdar://problem/11669154>Enrico Granata
Make a summary format for libc++ STL containers that shows the number of items as before, but also shows the pointer value for pointer-to-container llvm-svn: 181236
2013-04-27<rdar://problem/12529989>Enrico Granata
Synthetic children provider for NSOrderedSet llvm-svn: 180655
2013-04-26Make a synthetic children provider for the ObjC Class typeEnrico Granata
llvm-svn: 180588
2013-04-24See: ↵Enrico Granata
http://stackoverflow.com/questions/16166897/c-how-to-obtain-address-of-stdvector-object-in-lldb-xcode The user was trying to obtain the address-of an std::vector and the experience was more painful than necessary because data formatters were kicking in for vector* objects We got this right for libc++ - we should get it right for libstdc++ too llvm-svn: 180219
2013-04-23<rdar://problem/13437949>Enrico Granata
Making sure that CF*{Array|Dictionary}Ref provide synthetic children correctly. llvm-svn: 180074
2013-03-28<rdar://problem/12410225>Enrico Granata
By default, omit the children for a char[] and just show the string contents Can be overridden by appropriate command-line flags llvm-svn: 178292
2013-03-27<rdar://problem/13521159>Greg Clayton
LLDB is crashing when logging is enabled from lldb-perf-clang. This has to do with the global destructor chain as the process and its threads are being torn down. All logging channels now make one and only one instance that is kept in a global pointer which is never freed. This guarantees that logging can correctly continue as the process tears itself down. llvm-svn: 178191
2013-03-19The formatters for std::shared_ptr, std::weak_ptr, std::list, std::vector ↵Enrico Granata
and std::map as provided by libc++ are now written in C++ instead of Python std::deque is still in Python but is much less commonly used llvm-svn: 177454
2013-03-19This checkin removes the last Cocoa formatters that were implemented in ↵Enrico Granata
Python and reimplements them in C++. The Python Cocoa formatters are not shipped as part of LLDB anymore, but still exist in the source repository for user reference. Python formatters still exist for STL classes and users can still define their own Python formatters llvm-svn: 177366
2013-03-16C++ formatters for NSTimeZone and for CFBitVectorEnrico Granata
llvm-svn: 177219
2013-03-16NS(Mutable)IndexSet formatter moves from Python to C++Enrico Granata
llvm-svn: 177217
2013-03-16Converting more data formatters to C++ - NSBundle, CFBinaryHeap, NSMachPort ↵Enrico Granata
and NSNotification llvm-svn: 177213
2013-03-15Porting the Objective-C Class data type’s summary from Python to C++Enrico Granata
llvm-svn: 177172
2013-03-15Moving CFBag and NSBundle summaries from Python to C++Enrico Granata
Temporarily disabled non-code-running summaries for CF*Dictionary and NSCountedSet llvm-svn: 177171
2013-02-22The summary for const char* was not cascading.Enrico Granata
This was preventing us from providing a summary for the result of std::string.c_str() with libc++ llvm-svn: 175841
2013-02-21<rdar://problem/4529976>Enrico Granata
Adding data formatters for iterators for std::map and std::vector (both libc++ and libstdcpp) This does not include reverse iterators since they are both trickier (due to requirements the standard imposes on them) and much less useful llvm-svn: 175787
2013-02-18<rdar://problem/12529957>Enrico Granata
Synthetic children provider for NSSet llvm-svn: 175468
2013-02-15NSSet formatter is now C++ codeEnrico Granata
Split some NS* formatters in their own source files Refactored a utility function for the C++ formatters to use Fixed the skip-summary test case to be explicit about requiring libstdc++ for operation llvm-svn: 175323
2013-02-15<rdar://problem/13204647>Enrico Granata
The SEL data formatter was working hard to ensure that pointers-to-selectors could be formatted by the same block of code. In that effort, we were taking the address-of a SEL. This operation fails when the SEL lives in a register, and was causing problems. The formatter has been fixed to work correctly without assuming &selector will be a valid object. llvm-svn: 175227
2013-02-08This checkin implements the data formatter for NSURL in C++ codeEnrico Granata
llvm-svn: 174735
2013-02-08<rdar://problem/12898191>Enrico Granata
Added a summary for NSMutableAttributedString In the process, converted formatters for other NSString-based classes over to C++ code llvm-svn: 174693
2013-02-04<rdar://problem/12953018>Enrico Granata
Synthetic children and summary for std::vector<bool> (for both libcxx and libstdcpp). std::vector<bool> is a special case and is custom-implemented to be a vector of bits, which means we failed to handle it with the standard std::vector<T> formatter. This checkin provides custom formatters that work correctly llvm-svn: 174333
2013-01-28<rdar://problem/12978143>Enrico Granata
Data formatters now cache themselves. This commit provides a new formatter cache mechanism. Upon resolving a formatter (summary or synthetic), LLDB remembers the resolution for later faster retrieval. Also moved the data formatters subsystem from the core to its own group and folder for easier management, and done some code reorganization. The ObjC runtime v1 now returns a class name if asked for the dynamic type of an object. This is required for formatters caching to work with the v1 runtime. Lastly, this commit disposes of the old hack where ValueObjects had to remember whether they were queried for formatters with their static or dynamic type. Now the ValueObjectDynamicValue class works well enough that we can use its dynamic value setting for the same purpose. llvm-svn: 173728