tests/c/py-varobj.py
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 18 Feb 2019 10:49:02 +0000
changeset 176 e734c17e7c37
parent 122 c939f8a4c3cd
permissions -rw-r--r--
Use `View >> pushEvent:` or `ApplicationModel >> enqueueMessage:` to post events ...rather than asking for a window sensor and then talking to it. This allows for more flexibility as the object (subscription receiver) can decide how to handle posting of events.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
122
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
import gdb
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
import gdb.types
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
import sys
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
if sys.version_info[0] > 2:
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
    long = int
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
    imap = map
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
class cons_pp(object):
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
  def __init__(self, val):
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
    self._val = val
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
  def to_string(self):
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
    if long(self._val) == 0:
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
      return "nil"
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
    else:
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
      return "(...)"
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
  def children(self):
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
    if long(self._val) == 0:
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
      return []
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
    else:
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
      return [
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
        ('car' , self._val["slots"][0]),
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
        ('cdr' , self._val["slots"][1])
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
      ]
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
def cons_pp_lookup(val):
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
  if str(val.type) == 'struct _cons *':
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
    return cons_pp(val)
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
  else:
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
    return None
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
del gdb.pretty_printers[1:]
c939f8a4c3cd Added support for dynamic varobjs
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
gdb.pretty_printers.append(cons_pp_lookup)