Ping.
On Mon, Jun 30, 2014 at 6:07 PM, Siva Chandra <sivachan...@google.com> wrote: > On Mon, Jun 30, 2014 at 8:00 AM, Tom Tromey <tro...@redhat.com> wrote: >>>>>>> "Siva" == Siva Chandra <sivachan...@google.com> writes: >> >> Siva> +# Load the xmethods. >> Siva> +from libstdcxx.v6.xmethods import register_libstdcxx_xmethods >> Siva> +register_libstdcxx_xmethods (gdb.current_objfile ()) >> >> I don't think any addition to the hook file should be needed. > > I removed it in the attached patch. > >> Siva> + # The object to be returned is the 0-th element in the tuple >> _m_t. >> Siva> + # The following retrieves the 0-th element of this tuple. >> Siva> + _m_t_base = _m_t[_m_t.type.fields()[0]] # std::tuple has a >> single base >> Siva> + # class and no data >> members. >> Siva> + for f in _m_t_base.type.fields(): >> Siva> + # The object is embedded in the _Head_base<> base class of >> Siva> + # _m_t_base. >> Siva> + if f.is_base_class and f.name.find('std::_Head_base<') == >> 0: >> Siva> + _head_base = _m_t_base[f] >> >> Did you investigate sharing any code with the printers? >> If so, why did you choose not to? >> If not, could you please look into that? > > I have considered this. I tried to be too smart in the above snippet. > But, look at the attached patch; All that can be replaced by a simple > one-liner. In which case, would trying to make it common for > prettyprinters and xmethods become an overkill? For std::vector, I do > not think there is an overlap between xmethods and prettyprinters. I > will keep this in mind for future xmethods though. > > ChangeLog > > libstdc++-v3/ > > 2014-06-30 Siva Chandra Reddy <sivachan...@google.com> > > * python/libstdcxx/v6/xmethods.py: New file. > * testsuite/lib/gdb-test.exp (gdb_version_check_xmethods): New > function. > (gdb-test): New optional argument LOAD_XMETHODS. Load xmethods > python script if LOAD_XMETHODS is true. > * testsuite/libstdc++-xmethods/unique_ptr.cc: New file. > * testsuite/libstdc++-xmethods/vector.cc: New file. > * testsuite/libstdc++-xmethods/xmethods.exp: New file.