Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-09-17 08:34:41

0001 // 
0002 //  Copyright (c) 2024 Dmitry Arkhipov (grisumbras@yandex.ru)
0003 // 
0004 //  Distributed under the Boost Software License, Version 1.0. (See accompanying
0005 //  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
0006 // 
0007 //  Official repository: https://github.com/boostorg/json
0008 // 
0009 
0010 // Autogenerated from boost_json_gdb_printers.py by boost-pretty-printers
0011 
0012 #ifndef BOOST_JSON_DETAIL_GDB_PRINTERS_HPP
0013 #define BOOST_JSON_DETAIL_GDB_PRINTERS_HPP
0014 
0015 #if defined(__ELF__)
0016 
0017 #if defined(__clang__)
0018 # pragma clang diagnostic push
0019 # pragma clang diagnostic ignored "-Woverlength-strings"
0020 #elif defined(__GNUC__)
0021 # pragma GCC diagnostic push
0022 # pragma GCC diagnostic ignored "-Woverlength-strings"
0023 #endif
0024 
0025 __asm__(
0026   ".pushsection \".debug_gdb_scripts\", \"MS\",%progbits,1\n"
0027   ".ascii \"\\4gdb.inlined-script.BOOST_JSON_DETAIL_GDB_PRINTERS_HPP\\n\"\n"
0028   ".ascii \"import gdb\\n\"\n"
0029   ".ascii \"import gdb.printing\\n\"\n"
0030 
0031 
0032   ".ascii \"class PrettyPrinterBuilder():\\n\"\n"
0033   ".ascii \"    '''decorator that accumulates pretty printers for types'''\\n\"\n"
0034 
0035   ".ascii \"    def __init__(self, name=None):\\n\"\n"
0036   ".ascii \"        self.result = gdb.printing.RegexpCollectionPrettyPrinter(\\n\"\n"
0037   ".ascii \"            name or 'Boost.JSON')\\n\"\n"
0038 
0039   ".ascii \"    def __call__(self, pp=None, ns=None, template=False):\\n\"\n"
0040   ".ascii \"        if pp is None:\\n\"\n"
0041   ".ascii \"            def decorator(pp):\\n\"\n"
0042   ".ascii \"                return self(pp, ns=ns, template=template)\\n\"\n"
0043   ".ascii \"            return decorator\\n\"\n"
0044 
0045   ".ascii \"        typename = getattr(pp, '__name__')\\n\"\n"
0046   ".ascii \"        ns = ns or 'boost::json'\\n\"\n"
0047   ".ascii \"        self.result.add_printer(\\n\"\n"
0048   ".ascii \"            typename,\\n\"\n"
0049   ".ascii \"            '^{ns}::{typename}{marker}'.format(\\n\"\n"
0050   ".ascii \"                ns=ns,\\n\"\n"
0051   ".ascii \"                typename=typename,\\n\"\n"
0052   ".ascii \"                marker='<'if template else '$'),\\n\"\n"
0053   ".ascii \"            pp)\\n\"\n"
0054   ".ascii \"        return pp\\n\"\n"
0055 
0056   ".ascii \"pretty_printer = PrettyPrinterBuilder()\\n\"\n"
0057 
0058 
0059   ".ascii \"class static_property:\\n\"\n"
0060   ".ascii \"    '''decorator for lazy evaluation of static members'''\\n\"\n"
0061 
0062   ".ascii \"    def __init__(self, wrapped):\\n\"\n"
0063   ".ascii \"        self.wrapped = wrapped\\n\"\n"
0064   ".ascii \"        self.__name__ = wrapped.__name__\\n\"\n"
0065   ".ascii \"        self.__doc__ = wrapped.__doc__\\n\"\n"
0066 
0067   ".ascii \"    def __get__(self, inst, objtype=None):\\n\"\n"
0068   ".ascii \"        val = self.wrapped()\\n\"\n"
0069   ".ascii \"        if objtype is not None:\\n\"\n"
0070   ".ascii \"            setattr(objtype, self.wrapped.__name__, val)\\n\"\n"
0071   ".ascii \"        return val\\n\"\n"
0072 
0073 
0074   ".ascii \"@pretty_printer\\n\"\n"
0075   ".ascii \"class storage_ptr:\\n\"\n"
0076   ".ascii \"    '''boost::json::storage_ptr pretty printer'''\\n\"\n"
0077 
0078   ".ascii \"    @static_property\\n\"\n"
0079   ".ascii \"    def _size_t():\\n\"\n"
0080   ".ascii \"        return gdb.lookup_type('std::size_t')\\n\"\n"
0081 
0082   ".ascii \"    @static_property\\n\"\n"
0083   ".ascii \"    def _shared_resource_ptr():\\n\"\n"
0084   ".ascii \"        return gdb.lookup_type(\\n\"\n"
0085   ".ascii \"            'boost::json::detail::shared_resource').pointer()\\n\"\n"
0086 
0087   ".ascii \"    @static_property\\n\"\n"
0088   ".ascii \"    def _memory_resource_ptr():\\n\"\n"
0089   ".ascii \"        return gdb.lookup_type(\\n\"\n"
0090   ".ascii \"            'boost::container::pmr::memory_resource').pointer()\\n\"\n"
0091 
0092   ".ascii \"    def __init__(self, val):\\n\"\n"
0093   ".ascii \"        self.val = val['i_']\\n\"\n"
0094 
0095   ".ascii \"    def to_string(self):\\n\"\n"
0096   ".ascii \"        items = []\\n\"\n"
0097 
0098   ".ascii \"        if bool(self.val & 2):\\n\"\n"
0099   ".ascii \"            items.append('trivial')\\n\"\n"
0100   ".ascii \"        shared = bool(self.val & 1)\\n\"\n"
0101   ".ascii \"        if shared:\\n\"\n"
0102   ".ascii \"            items.append('shared')\\n\"\n"
0103 
0104   ".ascii \"        pointer = self.val & ~3\\n\"\n"
0105   ".ascii \"        if not pointer:\\n\"\n"
0106   ".ascii \"            items.append('resource=default')\\n\"\n"
0107   ".ascii \"        else:\\n\"\n"
0108   ".ascii \"            if shared:\\n\"\n"
0109   ".ascii \"                resource = pointer.cast(\\n\"\n"
0110   ".ascii \"                    self._shared_resource_ptr).dereference()\\n\"\n"
0111   ".ascii \"                impl_t = resource.dynamic_type\\n\"\n"
0112   ".ascii \"                impl_ptr = impl_t.pointer()\\n\"\n"
0113   ".ascii \"                resource = resource.address.cast(impl_ptr).dereference()\\n\"\n"
0114 
0115   ".ascii \"                items.append(\\n\"\n"
0116   ".ascii \"                    'refs=%s' % resource['refs'].cast(self._size_t))\\n\"\n"
0117 
0118   ".ascii \"                resource = resource['t']\\n\"\n"
0119   ".ascii \"            else:\\n\"\n"
0120   ".ascii \"                resource = pointer.cast(\\n\"\n"
0121   ".ascii \"                    self._memory_resource_ptr).dereference()\\n\"\n"
0122 
0123 
0124   ".ascii \"            derived_t = resource.dynamic_type\\n\"\n"
0125   ".ascii \"            derived_ptr = derived_t.pointer()\\n\"\n"
0126   ".ascii \"            resource = resource.address.cast(derived_ptr).dereference()\\n\"\n"
0127   ".ascii \"            items.append('resource=%s' % resource)\\n\"\n"
0128 
0129   ".ascii \"        return 'storage_ptr [' + ', '.join(items) + ']'\\n\"\n"
0130 
0131 
0132   ".ascii \"@pretty_printer\\n\"\n"
0133   ".ascii \"class monotonic_resource:\\n\"\n"
0134   ".ascii \"    '''boost::json::monotonic_resource pretty printer'''\\n\"\n"
0135 
0136   ".ascii \"    def __init__(self, val):\\n\"\n"
0137   ".ascii \"        self.val = val\\n\"\n"
0138 
0139   ".ascii \"    def to_string(self):\\n\"\n"
0140   ".ascii \"        buffer = self.val['buffer_']\\n\"\n"
0141   ".ascii \"        buffer = buffer['p'] - ( int(buffer['size']) - int(buffer['avail']) )\\n\"\n"
0142 
0143   ".ascii \"        head = self.val['head_'].dereference()\\n\"\n"
0144 
0145   ".ascii \"        block = head['p'] - ( int(head['size']) - int(head['avail']) )\\n\"\n"
0146 
0147   ".ascii \"        upstream = self.val['upstream_']\\n\"\n"
0148 
0149   ".ascii \"        items = []\\n\"\n"
0150   ".ascii \"        items.append('buffer=%s' % buffer)\\n\"\n"
0151   ".ascii \"        items.append('block=%s' % block)\\n\"\n"
0152   ".ascii \"        items.append('head=%s' % head['p'])\\n\"\n"
0153   ".ascii \"        items.append('free=%s' % head['avail'])\\n\"\n"
0154   ".ascii \"        if upstream['i_'] != 0:\\n\"\n"
0155   ".ascii \"            items.append('upstream=%s' % upstream)\\n\"\n"
0156 
0157   ".ascii \"        return 'monotonic_resource [%s]' % ', '.join(items)\\n\"\n"
0158 
0159 
0160   ".ascii \"@pretty_printer\\n\"\n"
0161   ".ascii \"class static_resource:\\n\"\n"
0162   ".ascii \"    '''boost::json::static_resource pretty printer'''\\n\"\n"
0163 
0164   ".ascii \"    def __init__(self, val):\\n\"\n"
0165   ".ascii \"        self.val = val\\n\"\n"
0166 
0167   ".ascii \"    def to_string(self):\\n\"\n"
0168   ".ascii \"        buf = self.val['p_'] - ( int(self.val['size_']) - int(self.val['n_']) )\\n\"\n"
0169   ".ascii \"        return 'static_resource [buffer=%s, head=%s, free=%s]' % (\\n\"\n"
0170   ".ascii \"            buf, self.val['p_'], self.val['n_'])\\n\"\n"
0171 
0172 
0173   ".ascii \"@pretty_printer\\n\"\n"
0174   ".ascii \"class string:\\n\"\n"
0175   ".ascii \"    '''boost::json::string pretty printer'''\\n\"\n"
0176 
0177   ".ascii \"    @static_property\\n\"\n"
0178   ".ascii \"    def _char_const_ptr():\\n\"\n"
0179   ".ascii \"        return gdb.lookup_type('char').const().pointer()\\n\"\n"
0180 
0181   ".ascii \"    def __init__(self, val):\\n\"\n"
0182   ".ascii \"        self.impl = val['impl_']\\n\"\n"
0183 
0184   ".ascii \"    def display_hint(self):\\n\"\n"
0185   ".ascii \"        return 'string'\\n\"\n"
0186 
0187   ".ascii \"    def to_string(self):\\n\"\n"
0188   ".ascii \"        kind = self.impl['s_']['k']\\n\"\n"
0189   ".ascii \"        if kind == self.impl['short_string_']:\\n\"\n"
0190   ".ascii \"            sbo_size = self.impl['sbo_chars_']\\n\"\n"
0191   ".ascii \"            size = sbo_size - self.impl['s_']['buf'][sbo_size]\\n\"\n"
0192   ".ascii \"            pointer = self.impl['s_']['buf']\\n\"\n"
0193   ".ascii \"        elif kind == self.impl['key_string_']:\\n\"\n"
0194   ".ascii \"            size = self.impl['k_']['n']\\n\"\n"
0195   ".ascii \"            pointer = self.impl['k_']['s']\\n\"\n"
0196   ".ascii \"        else:\\n\"\n"
0197   ".ascii \"            size = self.impl['p_']['t'].dereference()['size']\\n\"\n"
0198   ".ascii \"            pointer = self.impl['p_']['t']\\n\"\n"
0199   ".ascii \"            pointer += 1\\n\"\n"
0200   ".ascii \"            pointer = pointer.cast(self._char_const_ptr)\\n\"\n"
0201   ".ascii \"        return pointer.lazy_string(length=size)\\n\"\n"
0202 
0203 
0204   ".ascii \"@pretty_printer\\n\"\n"
0205   ".ascii \"class array:\\n\"\n"
0206   ".ascii \"    '''boost::json::array pretty printer'''\\n\"\n"
0207 
0208   ".ascii \"    @static_property\\n\"\n"
0209   ".ascii \"    def _value_ptr():\\n\"\n"
0210   ".ascii \"        return gdb.lookup_type('boost::json::value').pointer()\\n\"\n"
0211 
0212   ".ascii \"    def __init__(self, val):\\n\"\n"
0213   ".ascii \"        self.val = val\\n\"\n"
0214 
0215   ".ascii \"    def display_hint(self):\\n\"\n"
0216   ".ascii \"        return 'array'\\n\"\n"
0217 
0218   ".ascii \"    def to_string(self):\\n\"\n"
0219   ".ascii \"        capacity = int(self.val['t_'].dereference()['capacity'])\\n\"\n"
0220   ".ascii \"        return 'array [size={0}, capacity={1}]'.format(\\n\"\n"
0221   ".ascii \"            self.num_children(), capacity)\\n\"\n"
0222 
0223   ".ascii \"    def num_children(self):\\n\"\n"
0224   ".ascii \"        return int(self.val['t_'].dereference()['size'])\\n\"\n"
0225 
0226   ".ascii \"    def children(self):\\n\"\n"
0227   ".ascii \"        for i in range(0, self.num_children()):\\n\"\n"
0228   ".ascii \"            yield self.child(i)\\n\"\n"
0229 
0230   ".ascii \"    def child(self, n):\\n\"\n"
0231   ".ascii \"        table = (self.val['t_'] + 1).cast(self._value_ptr)\\n\"\n"
0232   ".ascii \"        return str(n), table[n]\\n\"\n"
0233 
0234 
0235   ".ascii \"@pretty_printer\\n\"\n"
0236   ".ascii \"class key_value_pair:\\n\"\n"
0237   ".ascii \"    '''boost::json::key_value_pair pretty printer'''\\n\"\n"
0238 
0239   ".ascii \"    @staticmethod\\n\"\n"
0240   ".ascii \"    def _pair(kv):\\n\"\n"
0241   ".ascii \"        return kv['key_'].lazy_string(length=kv['len_']), kv['value_']\\n\"\n"
0242 
0243   ".ascii \"    def __init__(self, val):\\n\"\n"
0244   ".ascii \"        self.val = val\\n\"\n"
0245 
0246   ".ascii \"    def to_string(self):\\n\"\n"
0247   ".ascii \"        k, v = self._pair(self.val)\\n\"\n"
0248   ".ascii \"        return '[%s] = %s' % (k.value(), v)\\n\"\n"
0249 
0250 
0251   ".ascii \"@pretty_printer\\n\"\n"
0252   ".ascii \"class object:\\n\"\n"
0253   ".ascii \"    '''boost::json::object pretty printer'''\\n\"\n"
0254 
0255   ".ascii \"    def __init__(self, val):\\n\"\n"
0256   ".ascii \"        self.val = val\\n\"\n"
0257   ".ascii \"        self.kv_ptr = gdb.lookup_type('boost::json::key_value_pair').pointer()\\n\"\n"
0258 
0259   ".ascii \"    def display_hint(self):\\n\"\n"
0260   ".ascii \"        return 'map'\\n\"\n"
0261 
0262   ".ascii \"    def to_string(self):\\n\"\n"
0263   ".ascii \"        capacity = int(self.val['t_'].dereference()['capacity'])\\n\"\n"
0264   ".ascii \"        return 'object [size={}, capacity={}]'.format(\\n\"\n"
0265   ".ascii \"            self.num_children(), capacity)\\n\"\n"
0266 
0267   ".ascii \"    def num_children(self):\\n\"\n"
0268   ".ascii \"        return int(self.val['t_'].dereference()['size'])\\n\"\n"
0269 
0270   ".ascii \"    def children(self):\\n\"\n"
0271   ".ascii \"        table = (self.val['t_'] + 1).cast(self.kv_ptr)\\n\"\n"
0272   ".ascii \"        for i in range(0, self.num_children()):\\n\"\n"
0273   ".ascii \"            k, v = key_value_pair._pair(table[i])\\n\"\n"
0274   ".ascii \"            yield str(2 * i), k\\n\"\n"
0275   ".ascii \"            yield str(2 * i + 1), v\\n\"\n"
0276 
0277 
0278   ".ascii \"@pretty_printer\\n\"\n"
0279   ".ascii \"class value:\\n\"\n"
0280   ".ascii \"    '''boost::json::value pretty printer'''\\n\"\n"
0281 
0282   ".ascii \"    @static_property\\n\"\n"
0283   ".ascii \"    def _kind_t():\\n\"\n"
0284   ".ascii \"        result = gdb.lookup_type('boost::json::kind')\\n\"\n"
0285   ".ascii \"        return dict(result.items())\\n\"\n"
0286 
0287   ".ascii \"    def __init__(self, val):\\n\"\n"
0288   ".ascii \"        self.val = val\\n\"\n"
0289 
0290   ".ascii \"    def to_string(self):\\n\"\n"
0291   ".ascii \"        kind = self.val['sca_']['k']\\n\"\n"
0292 
0293   ".ascii \"        if self._compare_kind(kind, 'null'):\\n\"\n"
0294   ".ascii \"            return 'null'\\n\"\n"
0295 
0296   ".ascii \"        elif self._compare_kind(kind, 'bool_'):\\n\"\n"
0297   ".ascii \"            return self.val['sca_']['b']\\n\"\n"
0298 
0299   ".ascii \"        elif self._compare_kind(kind, 'int64'):\\n\"\n"
0300   ".ascii \"            return self.val['sca_']['i']\\n\"\n"
0301 
0302   ".ascii \"        elif self._compare_kind(kind, 'uint64'):\\n\"\n"
0303   ".ascii \"            return self.val['sca_']['u']\\n\"\n"
0304 
0305   ".ascii \"        elif self._compare_kind(kind, 'double_'):\\n\"\n"
0306   ".ascii \"            return self.val['sca_']['d']\\n\"\n"
0307 
0308   ".ascii \"        elif self._compare_kind(kind, 'array'):\\n\"\n"
0309   ".ascii \"            return self.val['arr_']\\n\"\n"
0310 
0311   ".ascii \"        elif self._compare_kind(kind, 'object'):\\n\"\n"
0312   ".ascii \"            return self.val['obj_']\\n\"\n"
0313 
0314   ".ascii \"        else:\\n\"\n"
0315   ".ascii \"            return self.val['str_']\\n\"\n"
0316 
0317   ".ascii \"    def _compare_kind(self, kind, name):\\n\"\n"
0318   ".ascii \"        return kind == self._kind_t['boost::json::kind::' + name].enumval\\n\"\n"
0319 
0320 
0321   ".ascii \"def register(obj_file):\\n\"\n"
0322   ".ascii \"    mod = obj_file or gdb\\n\"\n"
0323   ".ascii \"    for printer in getattr(mod, 'pretty_printers', []):\\n\"\n"
0324   ".ascii \"        if getattr(printer, 'name') == pretty_printer.result.name:\\n\"\n"
0325   ".ascii \"            return\\n\"\n"
0326 
0327   ".ascii \"    gdb.printing.register_pretty_printer(\\n\"\n"
0328   ".ascii \"        obj_file,\\n\"\n"
0329   ".ascii \"        pretty_printer.result)\\n\"\n"
0330 
0331 
0332   ".ascii \"if __name__ == '__main__':\\n\"\n"
0333   ".ascii \"    register(gdb.current_objfile())\\n\"\n"
0334   ".byte 0\n"
0335   ".popsection\n");
0336 #if defined(__clang__)
0337 #  pragma clang diagnostic pop
0338 #elif defined(__GNUC__)
0339 #  pragma GCC diagnostic pop
0340 #endif
0341 
0342 #endif // defined(__ELF__)
0343 
0344 #endif // BOOST_JSON_DETAIL_GDB_PRINTERS_HPP