Home | History | Annotate | Line # | Download | only in gdb.rust
      1 # Copyright (C) 2021-2024 Free Software Foundation, Inc.
      2 
      3 # This program is free software; you can redistribute it and/or modify
      4 # it under the terms of the GNU General Public License as published by
      5 # the Free Software Foundation; either version 3 of the License, or
      6 # (at your option) any later version.
      7 #
      8 # This program is distributed in the hope that it will be useful,
      9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
     10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     11 # GNU General Public License for more details.
     12 #
     13 # You should have received a copy of the GNU General Public License
     14 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
     15 
     16 # This file is part of the GDB testsuite.  It tests python pretty
     17 # printers.
     18 
     19 import re
     20 
     21 import gdb
     22 
     23 
     24 # Printer for Inner.
     25 class inner_print(object):
     26     def __init__(self, val):
     27         self.val = val
     28 
     29     def to_string(self):
     30         return "x(" + str(self.val["x"]) + ")"
     31 
     32 
     33 def lookup_function(val):
     34     "Look-up and return a pretty-printer that can print val."
     35 
     36     # Get the type.
     37     type = val.type
     38 
     39     # Get the type name.
     40     typename = type.tag
     41 
     42     if typename is None:
     43         return None
     44 
     45     if typename == "pp::Inner":
     46         return inner_print(val)
     47     return None
     48 
     49 
     50 gdb.pretty_printers.append(lookup_function)
     51