python/vdb.py
changeset 206 c606b8fc373f
parent 198 1d26f35595b2
--- a/python/vdb.py	Wed Nov 18 07:08:41 2020 +0000
+++ b/python/vdb.py	Tue Nov 17 22:02:29 2020 +0000
@@ -22,7 +22,7 @@
         self._value = value
 
     def to_string(self):
-        return self._value
+        return str(self._value)
 
 class _VarObjRegistry(object):
 
@@ -223,6 +223,27 @@
         """
         return self._expr
 
+
+def contents_visualizer(value):
+    """
+    Find and return the "contents" visualizer for a gdb.Value.
+    If value's `gdb.default_visualizer` defines a property
+    `contents_visualizer`, property value is used as a factory
+    function to create contents visualizer. Otherwise, a
+    `gdb.default_visualizer()` is returned.
+
+    This is to be used by UI to implement "Inspect" on
+    variables.
+    """
+    default_visualizer = gdb.default_visualizer(value)
+    if default_visualizer != None:
+        if hasattr(default_visualizer, "contents_visualizer"):
+            return default_visualizer.contents_visualizer(value)
+        else:
+            return default_visualizer
+    else:
+        return BasicPrinter(value)
+
 _VarEvaluators = []
 
 def register_evaluator(callable, replace = True):
@@ -399,4 +420,4 @@
 # Set prompt for both, GDBCLI and Python CLI
 gdb.prompt_hook = lambda x: 'vdb > '
 sys.ps1 = 'vdb pi > '
-sys.ps2 = '       > '
\ No newline at end of file
+sys.ps2 = '       > '