libstdc++: Format Python docstrings according to PEP 357
libstdc++-v3/ChangeLog: * python/libstdcxx/v6/printers.py: Format docstrings according to PEP 257. * python/libstdcxx/v6/xmethods.py: Likewise.
This commit is contained in:
parent
918a691a39
commit
0ef4cc8225
2 changed files with 112 additions and 97 deletions
|
@ -69,7 +69,7 @@ else:
|
|||
|
||||
# Python 2 does not provide the datetime.UTC singleton.
|
||||
class UTC(datetime.tzinfo):
|
||||
"""Concrete tzinfo class representing the UTC time zone"""
|
||||
"""Concrete tzinfo class representing the UTC time zone."""
|
||||
|
||||
def utcoffset(self, dt):
|
||||
return datetime.timedelta(0)
|
||||
|
@ -126,7 +126,7 @@ _versioned_namespace = '__8::'
|
|||
|
||||
def lookup_templ_spec(templ, *args):
|
||||
"""
|
||||
Lookup template specialization templ<args...>
|
||||
Lookup template specialization templ<args...>.
|
||||
"""
|
||||
t = '{}<{}>'.format(templ, ', '.join([str(a) for a in args]))
|
||||
try:
|
||||
|
@ -146,17 +146,23 @@ def lookup_templ_spec(templ, *args):
|
|||
# Use this to find container node types instead of find_type,
|
||||
# see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91997 for details.
|
||||
|
||||
|
||||
def lookup_node_type(nodename, containertype):
|
||||
"""
|
||||
Lookup specialization of template NODENAME corresponding to CONTAINERTYPE.
|
||||
e.g. if NODENAME is '_List_node' and CONTAINERTYPE is std::list<int>
|
||||
then return the type std::_List_node<int>.
|
||||
Returns None if not found.
|
||||
Lookup specialization of template nodename corresponding to containertype.
|
||||
|
||||
nodename - The name of a class template, as a String
|
||||
containertype - The container, as a gdb.Type
|
||||
|
||||
Return a gdb.Type for the corresponding specialization of nodename,
|
||||
or None if the type cannot be found.
|
||||
|
||||
e.g. lookup_node_type('_List_node', gdb.lookup_type('std::list<int>'))
|
||||
will return a gdb.Type for the type std::_List_node<int>.
|
||||
"""
|
||||
# If nodename is unqualified, assume it's in namespace std.
|
||||
if '::' not in nodename:
|
||||
nodename = 'std::' + nodename
|
||||
# Use either containertype's value_type or its first template argument.
|
||||
try:
|
||||
valtype = find_type(containertype, 'value_type')
|
||||
except:
|
||||
|
@ -214,7 +220,7 @@ def strip_versioned_namespace(typename):
|
|||
|
||||
|
||||
def strip_inline_namespaces(type_str):
|
||||
"Remove known inline namespaces from the canonical name of a type."
|
||||
"""Remove known inline namespaces from the canonical name of a type."""
|
||||
type_str = strip_versioned_namespace(type_str)
|
||||
type_str = type_str.replace('std::__cxx11::', 'std::')
|
||||
expt_ns = 'std::experimental::'
|
||||
|
@ -226,7 +232,7 @@ def strip_inline_namespaces(type_str):
|
|||
|
||||
|
||||
def get_template_arg_list(type_obj):
|
||||
"Return a type's template arguments as a list"
|
||||
"""Return a type's template arguments as a list."""
|
||||
n = 0
|
||||
template_args = []
|
||||
while True:
|
||||
|
@ -238,7 +244,7 @@ def get_template_arg_list(type_obj):
|
|||
|
||||
|
||||
class SmartPtrIterator(Iterator):
|
||||
"An iterator for smart pointer types with a single 'child' value"
|
||||
"""An iterator for smart pointer types with a single 'child' value."""
|
||||
|
||||
def __init__(self, val):
|
||||
self.val = val
|
||||
|
@ -254,7 +260,9 @@ class SmartPtrIterator(Iterator):
|
|||
|
||||
|
||||
class SharedPointerPrinter:
|
||||
"Print a shared_ptr, weak_ptr, atomic<shared_ptr>, or atomic<weak_ptr>"
|
||||
"""
|
||||
Print a shared_ptr, weak_ptr, atomic<shared_ptr>, or atomic<weak_ptr>.
|
||||
"""
|
||||
|
||||
def __init__(self, typename, val):
|
||||
self.typename = strip_versioned_namespace(typename)
|
||||
|
@ -292,7 +300,7 @@ class SharedPointerPrinter:
|
|||
|
||||
|
||||
def _tuple_impl_get(val):
|
||||
"Return the tuple element stored in a _Tuple_impl<N, T> base class."
|
||||
"""Return the tuple element stored in a _Tuple_impl<N, T> base class."""
|
||||
bases = val.type.fields()
|
||||
if not bases[-1].is_base_class:
|
||||
raise ValueError(
|
||||
|
@ -316,7 +324,7 @@ def _tuple_impl_get(val):
|
|||
|
||||
|
||||
def tuple_get(n, val):
|
||||
"Return the result of std::get<n>(val) on a std::tuple"
|
||||
"""Return the result of std::get<n>(val) on a std::tuple."""
|
||||
tuple_size = len(get_template_arg_list(val.type))
|
||||
if n > tuple_size:
|
||||
raise ValueError("Out of range index for std::get<N> on std::tuple")
|
||||
|
@ -330,7 +338,7 @@ def tuple_get(n, val):
|
|||
|
||||
|
||||
def unique_ptr_get(val):
|
||||
"Return the result of val.get() on a std::unique_ptr"
|
||||
"""Return the result of val.get() on a std::unique_ptr."""
|
||||
# std::unique_ptr<T, D> contains a std::tuple<D::pointer, D>,
|
||||
# either as a direct data member _M_t (the old implementation)
|
||||
# or within a data member of type __uniq_ptr_data.
|
||||
|
@ -348,7 +356,7 @@ def unique_ptr_get(val):
|
|||
|
||||
|
||||
class UniquePointerPrinter:
|
||||
"Print a unique_ptr"
|
||||
"""Print a unique_ptr."""
|
||||
|
||||
def __init__(self, typename, val):
|
||||
self.val = val
|
||||
|
@ -361,12 +369,12 @@ class UniquePointerPrinter:
|
|||
|
||||
|
||||
def get_value_from_aligned_membuf(buf, valtype):
|
||||
"""Returns the value held in a __gnu_cxx::__aligned_membuf."""
|
||||
"""Return the value held in a __gnu_cxx::__aligned_membuf."""
|
||||
return buf['_M_storage'].address.cast(valtype.pointer()).dereference()
|
||||
|
||||
|
||||
def get_value_from_list_node(node):
|
||||
"""Returns the value held in an _List_node<_Val>"""
|
||||
"""Return the value held in an _List_node<_Val>."""
|
||||
try:
|
||||
member = node.type.fields()[1].name
|
||||
if member == '_M_data':
|
||||
|
@ -382,7 +390,7 @@ def get_value_from_list_node(node):
|
|||
|
||||
|
||||
class StdListPrinter:
|
||||
"Print a std::list"
|
||||
"""Print a std::list."""
|
||||
|
||||
class _iterator(Iterator):
|
||||
def __init__(self, nodetype, head):
|
||||
|
@ -434,14 +442,14 @@ class NodeIteratorPrinter:
|
|||
|
||||
|
||||
class StdListIteratorPrinter(NodeIteratorPrinter):
|
||||
"Print std::list::iterator"
|
||||
"""Print std::list::iterator."""
|
||||
|
||||
def __init__(self, typename, val):
|
||||
NodeIteratorPrinter.__init__(self, typename, val, 'list', '_List_node')
|
||||
|
||||
|
||||
class StdFwdListIteratorPrinter(NodeIteratorPrinter):
|
||||
"Print std::forward_list::iterator"
|
||||
"""Print std::forward_list::iterator."""
|
||||
|
||||
def __init__(self, typename, val):
|
||||
NodeIteratorPrinter.__init__(self, typename, val, 'forward_list',
|
||||
|
@ -449,7 +457,7 @@ class StdFwdListIteratorPrinter(NodeIteratorPrinter):
|
|||
|
||||
|
||||
class StdSlistPrinter:
|
||||
"Print a __gnu_cxx::slist"
|
||||
"""Print a __gnu_cxx::slist."""
|
||||
|
||||
class _iterator(Iterator):
|
||||
def __init__(self, nodetype, head):
|
||||
|
@ -483,7 +491,7 @@ class StdSlistPrinter:
|
|||
|
||||
|
||||
class StdSlistIteratorPrinter:
|
||||
"Print __gnu_cxx::slist::iterator"
|
||||
"""Print __gnu_cxx::slist::iterator."""
|
||||
|
||||
def __init__(self, typename, val):
|
||||
self.val = val
|
||||
|
@ -497,7 +505,7 @@ class StdSlistIteratorPrinter:
|
|||
|
||||
|
||||
class StdVectorPrinter:
|
||||
"Print a std::vector"
|
||||
"""Print a std::vector."""
|
||||
|
||||
class _iterator(Iterator):
|
||||
def __init__(self, start, finish, bitvec):
|
||||
|
@ -569,7 +577,7 @@ class StdVectorPrinter:
|
|||
|
||||
|
||||
class StdVectorIteratorPrinter:
|
||||
"Print std::vector::iterator"
|
||||
"""Print std::vector::iterator."""
|
||||
|
||||
def __init__(self, typename, val):
|
||||
self.val = val
|
||||
|
@ -581,7 +589,7 @@ class StdVectorIteratorPrinter:
|
|||
|
||||
|
||||
class StdBitIteratorPrinter:
|
||||
"Print std::vector<bool>'s _Bit_iterator and _Bit_const_iterator"
|
||||
"""Print std::vector<bool>'s _Bit_iterator and _Bit_const_iterator."""
|
||||
|
||||
def __init__(self, typename, val):
|
||||
self.val = val
|
||||
|
@ -593,7 +601,7 @@ class StdBitIteratorPrinter:
|
|||
|
||||
|
||||
class StdBitReferencePrinter:
|
||||
"Print std::vector<bool>::reference"
|
||||
"""Print std::vector<bool>::reference."""
|
||||
|
||||
def __init__(self, typename, val):
|
||||
self.val = val
|
||||
|
@ -605,7 +613,7 @@ class StdBitReferencePrinter:
|
|||
|
||||
|
||||
class StdTuplePrinter:
|
||||
"Print a std::tuple"
|
||||
"""Print a std::tuple."""
|
||||
|
||||
class _iterator(Iterator):
|
||||
@staticmethod
|
||||
|
@ -690,7 +698,7 @@ class StdTuplePrinter:
|
|||
|
||||
|
||||
class StdStackOrQueuePrinter:
|
||||
"Print a std::stack or std::queue"
|
||||
"""Print a std::stack or std::queue."""
|
||||
|
||||
def __init__(self, typename, val):
|
||||
self.typename = strip_versioned_namespace(typename)
|
||||
|
@ -750,7 +758,7 @@ class RbtreeIterator(Iterator):
|
|||
|
||||
|
||||
def get_value_from_Rb_tree_node(node):
|
||||
"""Returns the value held in an _Rb_tree_node<_Val>"""
|
||||
"""Return the value held in an _Rb_tree_node<_Val>."""
|
||||
try:
|
||||
member = node.type.fields()[1].name
|
||||
if member == '_M_value_field':
|
||||
|
@ -770,7 +778,7 @@ def get_value_from_Rb_tree_node(node):
|
|||
|
||||
|
||||
class StdRbtreeIteratorPrinter:
|
||||
"Print std::map::iterator, std::set::iterator, etc."
|
||||
"""Print std::map::iterator, std::set::iterator, etc."""
|
||||
|
||||
def __init__(self, typename, val):
|
||||
self.val = val
|
||||
|
@ -785,7 +793,7 @@ class StdRbtreeIteratorPrinter:
|
|||
|
||||
|
||||
class StdDebugIteratorPrinter:
|
||||
"Print a debug enabled version of an iterator"
|
||||
"""Print a debug enabled version of an iterator."""
|
||||
|
||||
def __init__(self, typename, val):
|
||||
self.val = val
|
||||
|
@ -809,7 +817,7 @@ def num_elements(num):
|
|||
|
||||
|
||||
class StdMapPrinter:
|
||||
"Print a std::map or std::multimap"
|
||||
"""Print a std::map or std::multimap."""
|
||||
|
||||
# Turn an RbtreeIterator into a pretty-print iterator.
|
||||
class _iter(Iterator):
|
||||
|
@ -851,7 +859,7 @@ class StdMapPrinter:
|
|||
|
||||
|
||||
class StdSetPrinter:
|
||||
"Print a std::set or std::multiset"
|
||||
"""Print a std::set or std::multiset."""
|
||||
|
||||
# Turn an RbtreeIterator into a pretty-print iterator.
|
||||
class _iter(Iterator):
|
||||
|
@ -887,7 +895,7 @@ class StdSetPrinter:
|
|||
|
||||
|
||||
class StdBitsetPrinter:
|
||||
"Print a std::bitset"
|
||||
"""Print a std::bitset."""
|
||||
|
||||
def __init__(self, typename, val):
|
||||
self.typename = strip_versioned_namespace(typename)
|
||||
|
@ -934,7 +942,7 @@ class StdBitsetPrinter:
|
|||
|
||||
|
||||
class StdDequePrinter:
|
||||
"Print a std::deque"
|
||||
"""Print a std::deque."""
|
||||
|
||||
class _iter(Iterator):
|
||||
def __init__(self, node, start, end, last, buffer_size):
|
||||
|
@ -999,7 +1007,7 @@ class StdDequePrinter:
|
|||
|
||||
|
||||
class StdDequeIteratorPrinter:
|
||||
"Print std::deque::iterator"
|
||||
"""Print std::deque::iterator."""
|
||||
|
||||
def __init__(self, typename, val):
|
||||
self.val = val
|
||||
|
@ -1011,7 +1019,7 @@ class StdDequeIteratorPrinter:
|
|||
|
||||
|
||||
class StdStringPrinter:
|
||||
"Print a std::basic_string of some kind"
|
||||
"""Print a std::basic_string of some kind."""
|
||||
|
||||
def __init__(self, typename, val):
|
||||
self.val = val
|
||||
|
@ -1045,7 +1053,7 @@ class StdStringPrinter:
|
|||
|
||||
|
||||
def access_streambuf_ptrs(streambuf):
|
||||
"Access the streambuf put area pointers"
|
||||
"""Access the streambuf put area pointers."""
|
||||
pbase = streambuf['_M_out_beg']
|
||||
pptr = streambuf['_M_out_cur']
|
||||
egptr = streambuf['_M_in_end']
|
||||
|
@ -1053,7 +1061,7 @@ def access_streambuf_ptrs(streambuf):
|
|||
|
||||
|
||||
class StdStringBufPrinter:
|
||||
"Print a std::basic_stringbuf"
|
||||
"""Print a std::basic_stringbuf."""
|
||||
|
||||
def __init__(self, _, val):
|
||||
self.val = val
|
||||
|
@ -1073,7 +1081,7 @@ class StdStringBufPrinter:
|
|||
|
||||
|
||||
class StdStringStreamPrinter:
|
||||
"Print a std::basic_stringstream"
|
||||
"""Print a std::basic_stringstream."""
|
||||
|
||||
def __init__(self, typename, val):
|
||||
self.val = val
|
||||
|
@ -1153,7 +1161,7 @@ class StdHashtableIterator(Iterator):
|
|||
|
||||
|
||||
class Tr1UnorderedSetPrinter:
|
||||
"Print a std::unordered_set or tr1::unordered_set"
|
||||
"""Print a std::unordered_set or tr1::unordered_set."""
|
||||
|
||||
def __init__(self, typename, val):
|
||||
self.typename = strip_versioned_namespace(typename)
|
||||
|
@ -1180,7 +1188,7 @@ class Tr1UnorderedSetPrinter:
|
|||
|
||||
|
||||
class Tr1UnorderedMapPrinter:
|
||||
"Print a std::unordered_map or tr1::unordered_map"
|
||||
"""Print a std::unordered_map or tr1::unordered_map."""
|
||||
|
||||
def __init__(self, typename, val):
|
||||
self.typename = strip_versioned_namespace(typename)
|
||||
|
@ -1227,7 +1235,7 @@ class Tr1UnorderedMapPrinter:
|
|||
|
||||
|
||||
class StdForwardListPrinter:
|
||||
"Print a std::forward_list"
|
||||
"""Print a std::forward_list."""
|
||||
|
||||
class _iterator(Iterator):
|
||||
def __init__(self, nodetype, head):
|
||||
|
@ -1264,7 +1272,7 @@ class StdForwardListPrinter:
|
|||
|
||||
|
||||
class SingleObjContainerPrinter(object):
|
||||
"Base class for printers of containers of single objects"
|
||||
"""Base class for printers of containers of single objects."""
|
||||
|
||||
def __init__(self, val, viz, hint=None):
|
||||
self.contained_value = val
|
||||
|
@ -1272,7 +1280,7 @@ class SingleObjContainerPrinter(object):
|
|||
self.hint = hint
|
||||
|
||||
def _recognize(self, type):
|
||||
"""Return TYPE as a string after applying type printers"""
|
||||
"""Return type as a string after applying type printers."""
|
||||
global _use_type_printing
|
||||
if not _use_type_printing:
|
||||
return str(type)
|
||||
|
@ -1308,8 +1316,8 @@ class SingleObjContainerPrinter(object):
|
|||
|
||||
|
||||
def function_pointer_to_name(f):
|
||||
"Find the name of the function referred to by the gdb.Value f, "
|
||||
" which should contain a function pointer from the program."
|
||||
"""Find the name of the function referred to by the gdb.Value f,
|
||||
which should contain a function pointer from the program."""
|
||||
|
||||
# Turn the function pointer into an actual address.
|
||||
# This is needed to unpack ppc64 function descriptors.
|
||||
|
@ -1332,7 +1340,7 @@ def function_pointer_to_name(f):
|
|||
|
||||
|
||||
class StdExpAnyPrinter(SingleObjContainerPrinter):
|
||||
"Print a std::any or std::experimental::any"
|
||||
"""Print a std::any or std::experimental::any."""
|
||||
|
||||
def __init__(self, typename, val):
|
||||
self.typename = strip_versioned_namespace(typename)
|
||||
|
@ -1413,7 +1421,7 @@ class StdExpAnyPrinter(SingleObjContainerPrinter):
|
|||
|
||||
|
||||
class StdExpOptionalPrinter(SingleObjContainerPrinter):
|
||||
"Print a std::optional or std::experimental::optional"
|
||||
"""Print a std::optional or std::experimental::optional."""
|
||||
|
||||
def __init__(self, typename, val):
|
||||
valtype = self._recognize(val.type.template_argument(0))
|
||||
|
@ -1448,7 +1456,7 @@ class StdExpOptionalPrinter(SingleObjContainerPrinter):
|
|||
|
||||
|
||||
class StdVariantPrinter(SingleObjContainerPrinter):
|
||||
"Print a std::variant"
|
||||
"""Print a std::variant."""
|
||||
|
||||
def __init__(self, typename, val):
|
||||
alternatives = get_template_arg_list(val.type)
|
||||
|
@ -1477,7 +1485,7 @@ class StdVariantPrinter(SingleObjContainerPrinter):
|
|||
|
||||
|
||||
class StdNodeHandlePrinter(SingleObjContainerPrinter):
|
||||
"Print a container node handle"
|
||||
"""Print a container node handle."""
|
||||
|
||||
def __init__(self, typename, val):
|
||||
self.value_type = val.type.template_argument(1)
|
||||
|
@ -1521,7 +1529,9 @@ class StdNodeHandlePrinter(SingleObjContainerPrinter):
|
|||
|
||||
|
||||
class StdExpStringViewPrinter:
|
||||
"Print a std::basic_string_view or std::experimental::basic_string_view"
|
||||
"""
|
||||
Print a std::basic_string_view or std::experimental::basic_string_view
|
||||
"""
|
||||
|
||||
def __init__(self, typename, val):
|
||||
self.val = val
|
||||
|
@ -1538,7 +1548,7 @@ class StdExpStringViewPrinter:
|
|||
|
||||
|
||||
class StdExpPathPrinter:
|
||||
"Print a std::experimental::filesystem::path"
|
||||
"""Print a std::experimental::filesystem::path."""
|
||||
|
||||
def __init__(self, typename, val):
|
||||
self.val = val
|
||||
|
@ -1591,7 +1601,7 @@ class StdExpPathPrinter:
|
|||
|
||||
|
||||
class StdPathPrinter:
|
||||
"Print a std::filesystem::path"
|
||||
"""Print a std::filesystem::path."""
|
||||
|
||||
def __init__(self, typename, val):
|
||||
self.val = val
|
||||
|
@ -1664,13 +1674,13 @@ class StdPathPrinter:
|
|||
|
||||
|
||||
class StdPairPrinter:
|
||||
"Print a std::pair object, with 'first' and 'second' as children"
|
||||
"""Print a std::pair object, with 'first' and 'second' as children."""
|
||||
|
||||
def __init__(self, typename, val):
|
||||
self.val = val
|
||||
|
||||
class _iter(Iterator):
|
||||
"An iterator for std::pair types. Returns 'first' then 'second'."
|
||||
"""An iterator for std::pair types. Returns 'first' then 'second'."""
|
||||
|
||||
def __init__(self, val):
|
||||
self.val = val
|
||||
|
@ -1697,7 +1707,7 @@ class StdPairPrinter:
|
|||
|
||||
|
||||
class StdCmpCatPrinter:
|
||||
"Print a comparison category object"
|
||||
"""Print a comparison category object."""
|
||||
|
||||
def __init__(self, typename, val):
|
||||
self.typename = typename[typename.rfind(':')+1:]
|
||||
|
@ -1713,7 +1723,7 @@ class StdCmpCatPrinter:
|
|||
|
||||
|
||||
class StdErrorCodePrinter:
|
||||
"Print a std::error_code or std::error_condition"
|
||||
"""Print a std::error_code or std::error_condition."""
|
||||
|
||||
_system_is_posix = None # Whether std::system_category() use errno values.
|
||||
|
||||
|
@ -1803,7 +1813,9 @@ class StdErrorCodePrinter:
|
|||
|
||||
@staticmethod
|
||||
def _unqualified_name(name):
|
||||
"Strip any nested-name-specifier from NAME to give an unqualified name"
|
||||
"""
|
||||
Strip any nested-name-specifier from name to give an unqualified name.
|
||||
"""
|
||||
return name.split('::')[-1]
|
||||
|
||||
def to_string(self):
|
||||
|
@ -1833,7 +1845,7 @@ class StdErrorCodePrinter:
|
|||
|
||||
|
||||
class StdRegexStatePrinter:
|
||||
"Print a state node in the NFA for a std::regex"
|
||||
"""Print a state node in the NFA for a std::regex."""
|
||||
|
||||
def __init__(self, typename, val):
|
||||
self.val = val
|
||||
|
@ -1862,7 +1874,7 @@ class StdRegexStatePrinter:
|
|||
|
||||
|
||||
class StdSpanPrinter:
|
||||
"Print a std::span"
|
||||
"""Print a std::span."""
|
||||
|
||||
class iterator(Iterator):
|
||||
def __init__(self, begin, size):
|
||||
|
@ -1900,7 +1912,7 @@ class StdSpanPrinter:
|
|||
|
||||
|
||||
class StdInitializerListPrinter:
|
||||
"Print a std::initializer_list"
|
||||
"""Print a std::initializer_list."""
|
||||
|
||||
def __init__(self, typename, val):
|
||||
self.typename = typename
|
||||
|
@ -1918,7 +1930,7 @@ class StdInitializerListPrinter:
|
|||
|
||||
|
||||
class StdAtomicPrinter:
|
||||
"Print a std:atomic"
|
||||
"""Print a std:atomic."""
|
||||
|
||||
def __init__(self, typename, val):
|
||||
self.typename = strip_versioned_namespace(typename)
|
||||
|
@ -1953,7 +1965,7 @@ class StdAtomicPrinter:
|
|||
|
||||
|
||||
class StdFormatArgsPrinter:
|
||||
"Print a std::basic_format_args"
|
||||
"""Print a std::basic_format_args."""
|
||||
# TODO: add printer for basic_format_arg<Context> and print out children.
|
||||
# TODO: add printer for __format::_ArgStore<Context, Args...>.
|
||||
|
||||
|
@ -1988,7 +2000,7 @@ def std_ratio_t_tuple(ratio_type):
|
|||
|
||||
|
||||
class StdChronoDurationPrinter:
|
||||
"Print a std::chrono::duration"
|
||||
"""Print a std::chrono::duration."""
|
||||
|
||||
def __init__(self, typename, val):
|
||||
self.typename = strip_versioned_namespace(typename)
|
||||
|
@ -2030,7 +2042,7 @@ class StdChronoDurationPrinter:
|
|||
|
||||
|
||||
class StdChronoTimePointPrinter:
|
||||
"Print a std::chrono::time_point"
|
||||
"""Print a std::chrono::time_point."""
|
||||
|
||||
def __init__(self, typename, val):
|
||||
self.typename = strip_versioned_namespace(typename)
|
||||
|
@ -2077,7 +2089,7 @@ class StdChronoTimePointPrinter:
|
|||
|
||||
|
||||
class StdChronoZonedTimePrinter:
|
||||
"Print a std::chrono::zoned_time"
|
||||
"""Print a std::chrono::zoned_time."""
|
||||
|
||||
def __init__(self, typename, val):
|
||||
self.typename = strip_versioned_namespace(typename)
|
||||
|
@ -2099,7 +2111,7 @@ weekdays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday',
|
|||
|
||||
|
||||
class StdChronoCalendarPrinter:
|
||||
"Print a std::chrono::day, std::chrono::month, std::chrono::year etc."
|
||||
"""Print a std::chrono::day, std::chrono::month, std::chrono::year etc."""
|
||||
|
||||
def __init__(self, typename, val):
|
||||
self.typename = strip_versioned_namespace(typename)
|
||||
|
@ -2162,7 +2174,7 @@ class StdChronoCalendarPrinter:
|
|||
|
||||
|
||||
class StdChronoTimeZonePrinter:
|
||||
"Print a chrono::time_zone or chrono::time_zone_link"
|
||||
"""Print a chrono::time_zone or chrono::time_zone_link."""
|
||||
|
||||
def __init__(self, typename, val):
|
||||
self.typename = strip_versioned_namespace(typename)
|
||||
|
@ -2176,7 +2188,7 @@ class StdChronoTimeZonePrinter:
|
|||
|
||||
|
||||
class StdChronoLeapSecondPrinter:
|
||||
"Print a chrono::leap_second"
|
||||
"""Print a chrono::leap_second."""
|
||||
|
||||
def __init__(self, typename, val):
|
||||
self.typename = strip_versioned_namespace(typename)
|
||||
|
@ -2189,7 +2201,7 @@ class StdChronoLeapSecondPrinter:
|
|||
|
||||
|
||||
class StdChronoTzdbPrinter:
|
||||
"Print a chrono::tzdb"
|
||||
"""Print a chrono::tzdb."""
|
||||
|
||||
def __init__(self, typename, val):
|
||||
self.typename = strip_versioned_namespace(typename)
|
||||
|
@ -2200,7 +2212,7 @@ class StdChronoTzdbPrinter:
|
|||
|
||||
|
||||
class StdChronoTimeZoneRulePrinter:
|
||||
"Print a chrono::time_zone rule"
|
||||
"""Print a chrono::time_zone rule."""
|
||||
|
||||
def __init__(self, typename, val):
|
||||
self.typename = strip_versioned_namespace(typename)
|
||||
|
@ -2234,7 +2246,7 @@ class StdChronoTimeZoneRulePrinter:
|
|||
|
||||
|
||||
class StdLocalePrinter:
|
||||
"Print a std::locale"
|
||||
"""Print a std::locale."""
|
||||
|
||||
def __init__(self, typename, val):
|
||||
self.val = val
|
||||
|
@ -2372,14 +2384,14 @@ libstdcxx_printer = None
|
|||
|
||||
|
||||
class TemplateTypePrinter(object):
|
||||
r"""
|
||||
"""
|
||||
A type printer for class templates with default template arguments.
|
||||
|
||||
Recognizes specializations of class templates and prints them without
|
||||
any template arguments that use a default template argument.
|
||||
Type printers are recursively applied to the template arguments.
|
||||
|
||||
e.g. replace "std::vector<T, std::allocator<T> >" with "std::vector<T>".
|
||||
e.g. replace 'std::vector<T, std::allocator<T> >' with 'std::vector<T>'.
|
||||
"""
|
||||
|
||||
def __init__(self, name, defargs):
|
||||
|
@ -2388,7 +2400,7 @@ class TemplateTypePrinter(object):
|
|||
self.enabled = True
|
||||
|
||||
class _recognizer(object):
|
||||
"The recognizer class for TemplateTypePrinter."
|
||||
"""The recognizer class for TemplateTypePrinter."""
|
||||
|
||||
def __init__(self, name, defargs):
|
||||
self.name = name
|
||||
|
@ -2468,12 +2480,12 @@ class TemplateTypePrinter(object):
|
|||
return str(type_obj)
|
||||
|
||||
def instantiate(self):
|
||||
"Return a recognizer object for this type printer."
|
||||
"""Return a recognizer object for this type printer."""
|
||||
return self._recognizer(self.name, self.defargs)
|
||||
|
||||
|
||||
def add_one_template_type_printer(obj, name, defargs):
|
||||
r"""
|
||||
"""
|
||||
Add a type printer for a class template with default template arguments.
|
||||
|
||||
Args:
|
||||
|
@ -2487,7 +2499,6 @@ def add_one_template_type_printer(obj, name, defargs):
|
|||
{ 2: 'std::hash<{0}>',
|
||||
3: 'std::equal_to<{0}>',
|
||||
4: 'std::allocator<std::pair<const {0}, {1}> >' }
|
||||
|
||||
"""
|
||||
printer = TemplateTypePrinter('std::'+name, defargs)
|
||||
gdb.types.register_type_printer(obj, printer)
|
||||
|
@ -2511,7 +2522,7 @@ def add_one_template_type_printer(obj, name, defargs):
|
|||
|
||||
|
||||
class FilteringTypePrinter(object):
|
||||
r"""
|
||||
"""
|
||||
A type printer that uses typedef names for common template specializations.
|
||||
|
||||
Args:
|
||||
|
@ -2539,7 +2550,7 @@ class FilteringTypePrinter(object):
|
|||
self.enabled = True
|
||||
|
||||
class _recognizer(object):
|
||||
"The recognizer class for FilteringTypePrinter."
|
||||
"""The recognizer class for FilteringTypePrinter."""
|
||||
|
||||
def __init__(self, template, name, targ1):
|
||||
self.template = template
|
||||
|
@ -2583,7 +2594,7 @@ class FilteringTypePrinter(object):
|
|||
return None
|
||||
|
||||
def instantiate(self):
|
||||
"Return a recognizer object for this type printer."
|
||||
"""Return a recognizer object for this type printer."""
|
||||
return self._recognizer(self.template, self.name, self.targ1)
|
||||
|
||||
|
||||
|
@ -2708,7 +2719,7 @@ def register_type_printers(obj):
|
|||
|
||||
|
||||
def register_libstdcxx_printers(obj):
|
||||
"Register libstdc++ pretty-printers with objfile Obj."
|
||||
"""Register libstdc++ pretty-printers with objfile Obj."""
|
||||
|
||||
global _use_gdb_pp
|
||||
global libstdcxx_printer
|
||||
|
|
|
@ -607,7 +607,9 @@ class AssociativeContainerMethodsMatcher(gdb.xmethod.XMethodMatcher):
|
|||
|
||||
|
||||
class UniquePtrGetWorker(gdb.xmethod.XMethodWorker):
|
||||
"Implements std::unique_ptr<T>::get() and std::unique_ptr<T>::operator->()"
|
||||
"""
|
||||
Implement std::unique_ptr<T>::get() and std::unique_ptr<T>::operator->().
|
||||
"""
|
||||
|
||||
def __init__(self, elem_type):
|
||||
self._is_array = elem_type.code == gdb.TYPE_CODE_ARRAY
|
||||
|
@ -623,7 +625,7 @@ class UniquePtrGetWorker(gdb.xmethod.XMethodWorker):
|
|||
return self._elem_type.pointer()
|
||||
|
||||
def _supports(self, method_name):
|
||||
"operator-> is not supported for unique_ptr<T[]>"
|
||||
# operator-> is not supported for unique_ptr<T[]>
|
||||
return method_name == 'get' or not self._is_array
|
||||
|
||||
def __call__(self, obj):
|
||||
|
@ -647,7 +649,7 @@ class UniquePtrGetWorker(gdb.xmethod.XMethodWorker):
|
|||
|
||||
|
||||
class UniquePtrDerefWorker(UniquePtrGetWorker):
|
||||
"Implements std::unique_ptr<T>::operator*()"
|
||||
"""Implement std::unique_ptr<T>::operator*()."""
|
||||
|
||||
def __init__(self, elem_type):
|
||||
UniquePtrGetWorker.__init__(self, elem_type)
|
||||
|
@ -656,7 +658,7 @@ class UniquePtrDerefWorker(UniquePtrGetWorker):
|
|||
return self._elem_type
|
||||
|
||||
def _supports(self, method_name):
|
||||
"operator* is not supported for unique_ptr<T[]>"
|
||||
# operator* is not supported for unique_ptr<T[]>
|
||||
return not self._is_array
|
||||
|
||||
def __call__(self, obj):
|
||||
|
@ -664,7 +666,7 @@ class UniquePtrDerefWorker(UniquePtrGetWorker):
|
|||
|
||||
|
||||
class UniquePtrSubscriptWorker(UniquePtrGetWorker):
|
||||
"Implements std::unique_ptr<T>::operator[](size_t)"
|
||||
"""Implement std::unique_ptr<T>::operator[](size_t)."""
|
||||
|
||||
def __init__(self, elem_type):
|
||||
UniquePtrGetWorker.__init__(self, elem_type)
|
||||
|
@ -676,7 +678,7 @@ class UniquePtrSubscriptWorker(UniquePtrGetWorker):
|
|||
return self._elem_type
|
||||
|
||||
def _supports(self, method_name):
|
||||
"operator[] is only supported for unique_ptr<T[]>"
|
||||
# operator[] is only supported for unique_ptr<T[]>
|
||||
return self._is_array
|
||||
|
||||
def __call__(self, obj, index):
|
||||
|
@ -710,7 +712,9 @@ class UniquePtrMethodsMatcher(gdb.xmethod.XMethodMatcher):
|
|||
|
||||
|
||||
class SharedPtrGetWorker(gdb.xmethod.XMethodWorker):
|
||||
"Implements std::shared_ptr<T>::get() and std::shared_ptr<T>::operator->()"
|
||||
"""
|
||||
Implements std::shared_ptr<T>::get() and std::shared_ptr<T>::operator->().
|
||||
"""
|
||||
|
||||
def __init__(self, elem_type):
|
||||
self._is_array = elem_type.code == gdb.TYPE_CODE_ARRAY
|
||||
|
@ -726,7 +730,7 @@ class SharedPtrGetWorker(gdb.xmethod.XMethodWorker):
|
|||
return self._elem_type.pointer()
|
||||
|
||||
def _supports(self, method_name):
|
||||
"operator-> is not supported for shared_ptr<T[]>"
|
||||
# operator-> is not supported for shared_ptr<T[]>
|
||||
return method_name == 'get' or not self._is_array
|
||||
|
||||
def __call__(self, obj):
|
||||
|
@ -734,7 +738,7 @@ class SharedPtrGetWorker(gdb.xmethod.XMethodWorker):
|
|||
|
||||
|
||||
class SharedPtrDerefWorker(SharedPtrGetWorker):
|
||||
"Implements std::shared_ptr<T>::operator*()"
|
||||
"""Implement std::shared_ptr<T>::operator*()."""
|
||||
|
||||
def __init__(self, elem_type):
|
||||
SharedPtrGetWorker.__init__(self, elem_type)
|
||||
|
@ -743,7 +747,7 @@ class SharedPtrDerefWorker(SharedPtrGetWorker):
|
|||
return self._elem_type
|
||||
|
||||
def _supports(self, method_name):
|
||||
"operator* is not supported for shared_ptr<T[]>"
|
||||
# operator* is not supported for shared_ptr<T[]>
|
||||
return not self._is_array
|
||||
|
||||
def __call__(self, obj):
|
||||
|
@ -751,7 +755,7 @@ class SharedPtrDerefWorker(SharedPtrGetWorker):
|
|||
|
||||
|
||||
class SharedPtrSubscriptWorker(SharedPtrGetWorker):
|
||||
"Implements std::shared_ptr<T>::operator[](size_t)"
|
||||
"""Implement std::shared_ptr<T>::operator[](size_t)."""
|
||||
|
||||
def __init__(self, elem_type):
|
||||
SharedPtrGetWorker.__init__(self, elem_type)
|
||||
|
@ -763,7 +767,7 @@ class SharedPtrSubscriptWorker(SharedPtrGetWorker):
|
|||
return self._elem_type
|
||||
|
||||
def _supports(self, method_name):
|
||||
"operator[] is only supported for shared_ptr<T[]>"
|
||||
# operator[] is only supported for shared_ptr<T[]>
|
||||
return self._is_array
|
||||
|
||||
def __call__(self, obj, index):
|
||||
|
@ -776,7 +780,7 @@ class SharedPtrSubscriptWorker(SharedPtrGetWorker):
|
|||
|
||||
|
||||
class SharedPtrUseCountWorker(gdb.xmethod.XMethodWorker):
|
||||
"Implements std::shared_ptr<T>::use_count()"
|
||||
"""Implement std::shared_ptr<T>::use_count()."""
|
||||
|
||||
def __init__(self, elem_type):
|
||||
pass
|
||||
|
@ -796,7 +800,7 @@ class SharedPtrUseCountWorker(gdb.xmethod.XMethodWorker):
|
|||
|
||||
|
||||
class SharedPtrUniqueWorker(SharedPtrUseCountWorker):
|
||||
"Implements std::shared_ptr<T>::unique()"
|
||||
"""Implement std::shared_ptr<T>::unique()."""
|
||||
|
||||
def __init__(self, elem_type):
|
||||
SharedPtrUseCountWorker.__init__(self, elem_type)
|
||||
|
|
Loading…
Add table
Reference in a new issue