Simplify code that uses g_queue_insert_before() and insert_after()
[platform/upstream/glib.git] / glib / glib.py
index 494eb69..f7fe22b 100644 (file)
@@ -1,4 +1,8 @@
 import gdb
+import sys
+
+if sys.version_info[0] >= 3:
+    long = int
 
 # This is not quite right, as local vars may override symname
 def read_global_var (symname):
@@ -10,8 +14,15 @@ def g_quark_to_string (quark):
     quark = long(quark)
     if quark == 0:
         return None
-    val = read_global_var ("g_quarks")
-    max_q = long(read_global_var ("g_quark_seq_id"))
+    try:
+        val = read_global_var ("quarks")
+        max_q = long(read_global_var ("quark_seq_id"))
+    except:
+        try:
+            val = read_global_var ("g_quarks")
+            max_q = long(read_global_var ("g_quark_seq_id"))
+        except:
+            return None;
     if quark < max_q:
         return val[quark].string()
     return None
@@ -76,7 +87,9 @@ class GHashPrinter:
         def __init__(self, ht, keys_are_strings):
             self.ht = ht
             if ht != 0:
-                self.array = ht["nodes"]
+                self.keys = ht["keys"]
+                self.values = ht["values"]
+                self.hashes = ht["hashes"]
                 self.size = ht["size"]
             self.pos = 0
             self.keys_are_strings = keys_are_strings
@@ -93,11 +106,10 @@ class GHashPrinter:
                 self.value = None
                 return v
             while long(self.pos) < long(self.size):
-                node = self.array[self.pos]
                 self.pos = self.pos + 1
-                if long (node["key_hash"]) >= 2:
-                    key = node["key"]
-                    val = node["value"]
+                if long (self.hashes[self.pos]) >= 2:
+                    key = self.keys[self.pos]
+                    val = self.values[self.pos]
 
                     if self.keys_are_strings:
                         key = key.cast (gdb.lookup_type("char").pointer())
@@ -115,10 +127,7 @@ class GHashPrinter:
         try:
             string_hash = read_global_var ("g_str_hash")
         except:
-            try:
-                string_hash = read_global_var ("IA__g_str_hash")
-            except:
-                string_hash = None
+            string_hash = None
         if self.val != 0 and string_hash != None and self.val["hash_func"] == string_hash:
             self.keys_are_strings = True
 
@@ -132,10 +141,6 @@ class GHashPrinter:
         return "map"
 
 def pretty_printer_lookup (val):
-    if is_g_type_instance (val):
-        return GTypePrettyPrinter (val)
-
-def pretty_printer_lookup (val):
     # None yet, want things like hash table and list
 
     type = val.type.unqualified()
@@ -214,7 +219,7 @@ class ForeachCommand (gdb.Command):
         return (var, val, command)
 
     def do_iter(self, arg, item, command):
-        item.cast (gdb.lookup_type("void").pointer())
+        item = item.cast (gdb.lookup_type("void").pointer())
         item = long(item)
         to_eval = "set $%s = (void *)0x%x\n"%(arg, item)
         gdb.execute(to_eval)