| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345 |
- //
- // Copyright (c) 2024 Dmitry Arkhipov (grisumbras@yandex.ru)
- //
- // Distributed under the Boost Software License, Version 1.0. (See accompanying
- // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- //
- // Official repository: https://github.com/boostorg/json
- //
- // Autogenerated from boost_json_gdb_printers.py by boost-pretty-printers
- #ifndef BOOST_JSON_DETAIL_GDB_PRINTERS_HPP
- #define BOOST_JSON_DETAIL_GDB_PRINTERS_HPP
- #if defined(__ELF__)
- #if defined(__clang__)
- # pragma clang diagnostic push
- # pragma clang diagnostic ignored "-Woverlength-strings"
- #elif defined(__GNUC__)
- # pragma GCC diagnostic push
- # pragma GCC diagnostic ignored "-Woverlength-strings"
- #endif
- __asm__(
- ".pushsection \".debug_gdb_scripts\", \"MS\",%progbits,1\n"
- ".ascii \"\\4gdb.inlined-script.BOOST_JSON_DETAIL_GDB_PRINTERS_HPP\\n\"\n"
- ".ascii \"import gdb\\n\"\n"
- ".ascii \"import gdb.printing\\n\"\n"
- ".ascii \"class PrettyPrinterBuilder():\\n\"\n"
- ".ascii \" '''decorator that accumulates pretty printers for types'''\\n\"\n"
- ".ascii \" def __init__(self, name=None):\\n\"\n"
- ".ascii \" self.result = gdb.printing.RegexpCollectionPrettyPrinter(\\n\"\n"
- ".ascii \" name or 'Boost.JSON')\\n\"\n"
- ".ascii \" def __call__(self, pp=None, ns=None, template=False):\\n\"\n"
- ".ascii \" if pp is None:\\n\"\n"
- ".ascii \" def decorator(pp):\\n\"\n"
- ".ascii \" return self(pp, ns=ns, template=template)\\n\"\n"
- ".ascii \" return decorator\\n\"\n"
- ".ascii \" typename = getattr(pp, '__name__')\\n\"\n"
- ".ascii \" ns = ns or 'boost::json'\\n\"\n"
- ".ascii \" self.result.add_printer(\\n\"\n"
- ".ascii \" typename,\\n\"\n"
- ".ascii \" '^{ns}::{typename}{marker}'.format(\\n\"\n"
- ".ascii \" ns=ns,\\n\"\n"
- ".ascii \" typename=typename,\\n\"\n"
- ".ascii \" marker='<'if template else '$'),\\n\"\n"
- ".ascii \" pp)\\n\"\n"
- ".ascii \" return pp\\n\"\n"
- ".ascii \"pretty_printer = PrettyPrinterBuilder()\\n\"\n"
- ".ascii \"class static_property:\\n\"\n"
- ".ascii \" '''decorator for lazy evaluation of static members'''\\n\"\n"
- ".ascii \" def __init__(self, wrapped):\\n\"\n"
- ".ascii \" self.wrapped = wrapped\\n\"\n"
- ".ascii \" self.__name__ = wrapped.__name__\\n\"\n"
- ".ascii \" self.__doc__ = wrapped.__doc__\\n\"\n"
- ".ascii \" def __get__(self, inst, objtype=None):\\n\"\n"
- ".ascii \" val = self.wrapped()\\n\"\n"
- ".ascii \" if objtype is not None:\\n\"\n"
- ".ascii \" setattr(objtype, self.wrapped.__name__, val)\\n\"\n"
- ".ascii \" return val\\n\"\n"
- ".ascii \"@pretty_printer\\n\"\n"
- ".ascii \"class storage_ptr:\\n\"\n"
- ".ascii \" '''boost::json::storage_ptr pretty printer'''\\n\"\n"
- ".ascii \" @static_property\\n\"\n"
- ".ascii \" def _size_t():\\n\"\n"
- ".ascii \" return gdb.lookup_type('std::size_t')\\n\"\n"
- ".ascii \" @static_property\\n\"\n"
- ".ascii \" def _shared_resource_ptr():\\n\"\n"
- ".ascii \" return gdb.lookup_type(\\n\"\n"
- ".ascii \" 'boost::json::detail::shared_resource').pointer()\\n\"\n"
- ".ascii \" @static_property\\n\"\n"
- ".ascii \" def _memory_resource_ptr():\\n\"\n"
- ".ascii \" return gdb.lookup_type(\\n\"\n"
- ".ascii \" 'boost::container::pmr::memory_resource').pointer()\\n\"\n"
- ".ascii \" def __init__(self, val):\\n\"\n"
- ".ascii \" self.val = val['i_']\\n\"\n"
- ".ascii \" def to_string(self):\\n\"\n"
- ".ascii \" items = []\\n\"\n"
- ".ascii \" if bool(self.val & 2):\\n\"\n"
- ".ascii \" items.append('trivial')\\n\"\n"
- ".ascii \" shared = bool(self.val & 1)\\n\"\n"
- ".ascii \" if shared:\\n\"\n"
- ".ascii \" items.append('shared')\\n\"\n"
- ".ascii \" pointer = self.val & ~3\\n\"\n"
- ".ascii \" if not pointer:\\n\"\n"
- ".ascii \" items.append('resource=default')\\n\"\n"
- ".ascii \" else:\\n\"\n"
- ".ascii \" if shared:\\n\"\n"
- ".ascii \" resource = pointer.cast(\\n\"\n"
- ".ascii \" self._shared_resource_ptr).dereference()\\n\"\n"
- ".ascii \" impl_t = resource.dynamic_type\\n\"\n"
- ".ascii \" impl_ptr = impl_t.pointer()\\n\"\n"
- ".ascii \" resource = resource.address.cast(impl_ptr).dereference()\\n\"\n"
- ".ascii \" items.append(\\n\"\n"
- ".ascii \" 'refs=%s' % resource['refs'].cast(self._size_t))\\n\"\n"
- ".ascii \" resource = resource['t']\\n\"\n"
- ".ascii \" else:\\n\"\n"
- ".ascii \" resource = pointer.cast(\\n\"\n"
- ".ascii \" self._memory_resource_ptr).dereference()\\n\"\n"
- ".ascii \" derived_t = resource.dynamic_type\\n\"\n"
- ".ascii \" derived_ptr = derived_t.pointer()\\n\"\n"
- ".ascii \" resource = resource.address.cast(derived_ptr).dereference()\\n\"\n"
- ".ascii \" items.append('resource=%s' % resource)\\n\"\n"
- ".ascii \" return 'storage_ptr [' + ', '.join(items) + ']'\\n\"\n"
- ".ascii \"@pretty_printer\\n\"\n"
- ".ascii \"class monotonic_resource:\\n\"\n"
- ".ascii \" '''boost::json::monotonic_resource pretty printer'''\\n\"\n"
- ".ascii \" def __init__(self, val):\\n\"\n"
- ".ascii \" self.val = val\\n\"\n"
- ".ascii \" def to_string(self):\\n\"\n"
- ".ascii \" buffer = self.val['buffer_']\\n\"\n"
- ".ascii \" buffer = buffer['p'] - ( int(buffer['size']) - int(buffer['avail']) )\\n\"\n"
- ".ascii \" head = self.val['head_'].dereference()\\n\"\n"
- ".ascii \" block = head['p'] - ( int(head['size']) - int(head['avail']) )\\n\"\n"
- ".ascii \" upstream = self.val['upstream_']\\n\"\n"
- ".ascii \" items = []\\n\"\n"
- ".ascii \" items.append('buffer=%s' % buffer)\\n\"\n"
- ".ascii \" items.append('block=%s' % block)\\n\"\n"
- ".ascii \" items.append('head=%s' % head['p'])\\n\"\n"
- ".ascii \" items.append('free=%s' % head['avail'])\\n\"\n"
- ".ascii \" if upstream['i_'] != 0:\\n\"\n"
- ".ascii \" items.append('upstream=%s' % upstream)\\n\"\n"
- ".ascii \" return 'monotonic_resource [%s]' % ', '.join(items)\\n\"\n"
- ".ascii \"@pretty_printer\\n\"\n"
- ".ascii \"class static_resource:\\n\"\n"
- ".ascii \" '''boost::json::static_resource pretty printer'''\\n\"\n"
- ".ascii \" def __init__(self, val):\\n\"\n"
- ".ascii \" self.val = val\\n\"\n"
- ".ascii \" def to_string(self):\\n\"\n"
- ".ascii \" buf = self.val['p_'] - ( int(self.val['size_']) - int(self.val['n_']) )\\n\"\n"
- ".ascii \" return 'static_resource [buffer=%s, head=%s, free=%s]' % (\\n\"\n"
- ".ascii \" buf, self.val['p_'], self.val['n_'])\\n\"\n"
- ".ascii \"@pretty_printer\\n\"\n"
- ".ascii \"class string:\\n\"\n"
- ".ascii \" '''boost::json::string pretty printer'''\\n\"\n"
- ".ascii \" @static_property\\n\"\n"
- ".ascii \" def _char_const_ptr():\\n\"\n"
- ".ascii \" return gdb.lookup_type('char').const().pointer()\\n\"\n"
- ".ascii \" def __init__(self, val):\\n\"\n"
- ".ascii \" self.impl = val['impl_']\\n\"\n"
- ".ascii \" def display_hint(self):\\n\"\n"
- ".ascii \" return 'string'\\n\"\n"
- ".ascii \" def to_string(self):\\n\"\n"
- ".ascii \" kind = self.impl['s_']['k']\\n\"\n"
- ".ascii \" if kind == self.impl['short_string_']:\\n\"\n"
- ".ascii \" sbo_size = self.impl['sbo_chars_']\\n\"\n"
- ".ascii \" size = sbo_size - self.impl['s_']['buf'][sbo_size]\\n\"\n"
- ".ascii \" pointer = self.impl['s_']['buf']\\n\"\n"
- ".ascii \" elif kind == self.impl['key_string_']:\\n\"\n"
- ".ascii \" size = self.impl['k_']['n']\\n\"\n"
- ".ascii \" pointer = self.impl['k_']['s']\\n\"\n"
- ".ascii \" else:\\n\"\n"
- ".ascii \" size = self.impl['p_']['t'].dereference()['size']\\n\"\n"
- ".ascii \" pointer = self.impl['p_']['t']\\n\"\n"
- ".ascii \" pointer += 1\\n\"\n"
- ".ascii \" pointer = pointer.cast(self._char_const_ptr)\\n\"\n"
- ".ascii \" return pointer.lazy_string(length=size)\\n\"\n"
- ".ascii \"@pretty_printer\\n\"\n"
- ".ascii \"class array:\\n\"\n"
- ".ascii \" '''boost::json::array pretty printer'''\\n\"\n"
- ".ascii \" @static_property\\n\"\n"
- ".ascii \" def _value_ptr():\\n\"\n"
- ".ascii \" return gdb.lookup_type('boost::json::value').pointer()\\n\"\n"
- ".ascii \" def __init__(self, val):\\n\"\n"
- ".ascii \" self.val = val\\n\"\n"
- ".ascii \" def display_hint(self):\\n\"\n"
- ".ascii \" return 'array'\\n\"\n"
- ".ascii \" def to_string(self):\\n\"\n"
- ".ascii \" capacity = int(self.val['t_'].dereference()['capacity'])\\n\"\n"
- ".ascii \" return 'array [size={0}, capacity={1}]'.format(\\n\"\n"
- ".ascii \" self.num_children(), capacity)\\n\"\n"
- ".ascii \" def num_children(self):\\n\"\n"
- ".ascii \" return int(self.val['t_'].dereference()['size'])\\n\"\n"
- ".ascii \" def children(self):\\n\"\n"
- ".ascii \" for i in range(0, self.num_children()):\\n\"\n"
- ".ascii \" yield self.child(i)\\n\"\n"
- ".ascii \" def child(self, n):\\n\"\n"
- ".ascii \" table = (self.val['t_'] + 1).cast(self._value_ptr)\\n\"\n"
- ".ascii \" return str(n), table[n]\\n\"\n"
- ".ascii \"@pretty_printer\\n\"\n"
- ".ascii \"class key_value_pair:\\n\"\n"
- ".ascii \" '''boost::json::key_value_pair pretty printer'''\\n\"\n"
- ".ascii \" @staticmethod\\n\"\n"
- ".ascii \" def _pair(kv):\\n\"\n"
- ".ascii \" return kv['key_'].lazy_string(length=kv['len_']), kv['value_']\\n\"\n"
- ".ascii \" def __init__(self, val):\\n\"\n"
- ".ascii \" self.val = val\\n\"\n"
- ".ascii \" def to_string(self):\\n\"\n"
- ".ascii \" k, v = self._pair(self.val)\\n\"\n"
- ".ascii \" return '[%s] = %s' % (k.value(), v)\\n\"\n"
- ".ascii \"@pretty_printer\\n\"\n"
- ".ascii \"class object:\\n\"\n"
- ".ascii \" '''boost::json::object pretty printer'''\\n\"\n"
- ".ascii \" def __init__(self, val):\\n\"\n"
- ".ascii \" self.val = val\\n\"\n"
- ".ascii \" self.kv_ptr = gdb.lookup_type('boost::json::key_value_pair').pointer()\\n\"\n"
- ".ascii \" def display_hint(self):\\n\"\n"
- ".ascii \" return 'map'\\n\"\n"
- ".ascii \" def to_string(self):\\n\"\n"
- ".ascii \" capacity = int(self.val['t_'].dereference()['capacity'])\\n\"\n"
- ".ascii \" return 'object [size={}, capacity={}]'.format(\\n\"\n"
- ".ascii \" self.num_children(), capacity)\\n\"\n"
- ".ascii \" def num_children(self):\\n\"\n"
- ".ascii \" return int(self.val['t_'].dereference()['size'])\\n\"\n"
- ".ascii \" def children(self):\\n\"\n"
- ".ascii \" table = (self.val['t_'] + 1).cast(self.kv_ptr)\\n\"\n"
- ".ascii \" for i in range(0, self.num_children()):\\n\"\n"
- ".ascii \" k, v = key_value_pair._pair(table[i])\\n\"\n"
- ".ascii \" yield str(2 * i), k\\n\"\n"
- ".ascii \" yield str(2 * i + 1), v\\n\"\n"
- ".ascii \"@pretty_printer\\n\"\n"
- ".ascii \"class value:\\n\"\n"
- ".ascii \" '''boost::json::value pretty printer'''\\n\"\n"
- ".ascii \" @static_property\\n\"\n"
- ".ascii \" def _kind_t():\\n\"\n"
- ".ascii \" result = gdb.lookup_type('boost::json::kind')\\n\"\n"
- ".ascii \" return dict(result.items())\\n\"\n"
- ".ascii \" def __init__(self, val):\\n\"\n"
- ".ascii \" self.val = val\\n\"\n"
- ".ascii \" def to_string(self):\\n\"\n"
- ".ascii \" kind = self.val['sca_']['k']\\n\"\n"
- ".ascii \" if self._compare_kind(kind, 'null'):\\n\"\n"
- ".ascii \" return 'null'\\n\"\n"
- ".ascii \" elif self._compare_kind(kind, 'bool_'):\\n\"\n"
- ".ascii \" return self.val['sca_']['b']\\n\"\n"
- ".ascii \" elif self._compare_kind(kind, 'int64'):\\n\"\n"
- ".ascii \" return self.val['sca_']['i']\\n\"\n"
- ".ascii \" elif self._compare_kind(kind, 'uint64'):\\n\"\n"
- ".ascii \" return self.val['sca_']['u']\\n\"\n"
- ".ascii \" elif self._compare_kind(kind, 'double_'):\\n\"\n"
- ".ascii \" return self.val['sca_']['d']\\n\"\n"
- ".ascii \" elif self._compare_kind(kind, 'array'):\\n\"\n"
- ".ascii \" return self.val['arr_']\\n\"\n"
- ".ascii \" elif self._compare_kind(kind, 'object'):\\n\"\n"
- ".ascii \" return self.val['obj_']\\n\"\n"
- ".ascii \" else:\\n\"\n"
- ".ascii \" return self.val['str_']\\n\"\n"
- ".ascii \" def _compare_kind(self, kind, name):\\n\"\n"
- ".ascii \" return kind == self._kind_t['boost::json::kind::' + name].enumval\\n\"\n"
- ".ascii \"def register(obj_file):\\n\"\n"
- ".ascii \" mod = obj_file or gdb\\n\"\n"
- ".ascii \" for printer in getattr(mod, 'pretty_printers', []):\\n\"\n"
- ".ascii \" if getattr(printer, 'name') == pretty_printer.result.name:\\n\"\n"
- ".ascii \" return\\n\"\n"
- ".ascii \" gdb.printing.register_pretty_printer(\\n\"\n"
- ".ascii \" obj_file,\\n\"\n"
- ".ascii \" pretty_printer.result)\\n\"\n"
- ".ascii \"if __name__ == '__main__':\\n\"\n"
- ".ascii \" register(gdb.current_objfile())\\n\"\n"
- ".byte 0\n"
- ".popsection\n");
- #if defined(__clang__)
- # pragma clang diagnostic pop
- #elif defined(__GNUC__)
- # pragma GCC diagnostic pop
- #endif
- #endif // defined(__ELF__)
- #endif // BOOST_JSON_DETAIL_GDB_PRINTERS_HPP
|