adapt to new gbsearcharray.h code. (g_value_register_transform_func): turn
authorTim Janik <timj@gtk.org>
Tue, 19 Aug 2003 02:15:40 +0000 (02:15 +0000)
committerTim Janik <timj@src.gnome.org>
Tue, 19 Aug 2003 02:15:40 +0000 (02:15 +0000)
Tue Aug 19 04:08:14 2003  Tim Janik  <timj@gtk.org>

        * gvalue.c: adapt to new gbsearcharray.h code.
        (g_value_register_transform_func): turn transform function
        replacement into a valid operation.

        * gsignal.c: adapt to new gbsearcharray.h code.

        * gboxed.c: adapt to new gbsearcharray.h code.

gobject/ChangeLog
gobject/gboxed.c
gobject/gsignal.c
gobject/gvalue.c

index aacac34ea807918d427738735ca9c672b2e2e8cc..dbf542bc9f8c4367ba6a3c8023537dc372b118b0 100644 (file)
@@ -1,3 +1,13 @@
+Tue Aug 19 04:08:14 2003  Tim Janik  <timj@gtk.org>
+
+       * gvalue.c: adapt to new gbsearcharray.h code.
+       (g_value_register_transform_func): turn transform function
+       replacement into a valid operation.
+
+        * gsignal.c: adapt to new gbsearcharray.h code.
+       
+       * gboxed.c: adapt to new gbsearcharray.h code.
+
 Tue Aug 19 01:31:28 2003  Tim Janik  <timj@gtk.org>
 
        * gsignal.c: added optimizations to skip NOP signal emissions.
index ee6e432ea7ae49ba17abda9a6ee6e52b27323bad..15c59af49f28a7394fdee5705ae9e5dd6f475b86 100644 (file)
@@ -42,7 +42,11 @@ static gint  boxed_nodes_cmp         (gconstpointer  p1,
 
 /* --- variables --- */
 static GBSearchArray *boxed_bsa = NULL;
-static GBSearchConfig boxed_bconfig = G_STATIC_BCONFIG (sizeof (BoxedNode), boxed_nodes_cmp, 0);
+static const GBSearchConfig boxed_bconfig = {
+  sizeof (BoxedNode),
+  boxed_nodes_cmp,
+  0,
+};
 
 
 /* --- functions --- */
@@ -121,7 +125,7 @@ g_boxed_type_init (void)  /* sync with gtype.c */
   const GTypeFundamentalInfo finfo = { G_TYPE_FLAG_DERIVABLE, };
   GType type;
 
-  boxed_bsa = g_bsearch_array_new (&boxed_bconfig);
+  boxed_bsa = g_bsearch_array_create (&boxed_bconfig);
 
   /* G_TYPE_BOXED
    */
@@ -317,7 +321,7 @@ g_boxed_type_register_static (const gchar   *name,
       key.type = type;
       key.copy = boxed_copy;
       key.free = boxed_free;
-      boxed_bsa = g_bsearch_array_insert (boxed_bsa, &boxed_bconfig, &key, TRUE);
+      boxed_bsa = g_bsearch_array_insert (boxed_bsa, &boxed_bconfig, &key);
     }
 
   return type;
index 0ba055ffc3aa95afb307ed8cd9eb62892a720082..c5fae21122cb273dee3c1a1d71322498226b7784 100644 (file)
@@ -241,15 +241,21 @@ typedef struct
 
 /* --- variables --- */
 static GBSearchArray *g_signal_key_bsa = NULL;
-static GBSearchConfig g_signal_key_bconfig = G_STATIC_BCONFIG (sizeof (SignalKey),
-                                                              signal_key_cmp,
-                                                              G_BSEARCH_ARRAY_ALIGN_POWER2);
-static GBSearchConfig g_signal_hlbsa_bconfig = G_STATIC_BCONFIG (sizeof (HandlerList),
-                                                                handler_lists_cmp,
-                                                                G_BSEARCH_ARRAY_DEFER_SHRINK);
-static GBSearchConfig g_class_closure_bconfig = G_STATIC_BCONFIG (sizeof (ClassClosure),
-                                                                 class_closures_cmp,
-                                                                 0);
+static const GBSearchConfig g_signal_key_bconfig = {
+  sizeof (SignalKey),
+  signal_key_cmp,
+  G_BSEARCH_ARRAY_ALIGN_POWER2,
+};
+static GBSearchConfig g_signal_hlbsa_bconfig = {
+  sizeof (HandlerList),
+  handler_lists_cmp,
+  0,
+};
+static GBSearchConfig g_class_closure_bconfig = {
+  sizeof (ClassClosure),
+  class_closures_cmp,
+  0,
+};
 static GHashTable    *g_handler_list_bsa_ht = NULL;
 static Emission      *g_recursive_emissions = NULL;
 static Emission      *g_restart_emissions = NULL;
@@ -351,15 +357,15 @@ handler_list_ensure (guint    signal_id,
   key.handlers = NULL;
   if (!hlbsa)
     {
-      hlbsa = g_bsearch_array_new (&g_signal_hlbsa_bconfig);
-      hlbsa = g_bsearch_array_insert (hlbsa, &g_signal_hlbsa_bconfig, &key, FALSE);
+      hlbsa = g_bsearch_array_create (&g_signal_hlbsa_bconfig);
+      hlbsa = g_bsearch_array_insert (hlbsa, &g_signal_hlbsa_bconfig, &key);
       g_hash_table_insert (g_handler_list_bsa_ht, instance, hlbsa);
     }
   else
     {
       GBSearchArray *o = hlbsa;
 
-      hlbsa = g_bsearch_array_insert (o, &g_signal_hlbsa_bconfig, &key, FALSE);
+      hlbsa = g_bsearch_array_insert (o, &g_signal_hlbsa_bconfig, &key);
       if (hlbsa != o)
        g_hash_table_insert (g_handler_list_bsa_ht, instance, hlbsa);
     }
@@ -713,7 +719,7 @@ g_signal_init (void) /* sync with gtype.c */
       
       /* setup handler list binary searchable array hash table (in german, that'd be one word ;) */
       g_handler_list_bsa_ht = g_hash_table_new (g_direct_hash, NULL);
-      g_signal_key_bsa = g_bsearch_array_new (&g_signal_key_bconfig);
+      g_signal_key_bsa = g_bsearch_array_create (&g_signal_key_bconfig);
       
       /* invalid (0) signal_id */
       g_n_signal_nodes = 1;
@@ -1029,8 +1035,8 @@ g_signal_list_ids (GType  itype,
   g_return_val_if_fail (n_ids != NULL, NULL);
   
   SIGNAL_LOCK ();
-  keys = G_BSEARCH_ARRAY_NODES (g_signal_key_bsa);
-  n_nodes = g_signal_key_bsa->n_nodes;
+  keys = g_bsearch_array_get_nth (g_signal_key_bsa, &g_signal_key_bconfig, 0);
+  n_nodes = g_bsearch_array_get_n_nodes (g_signal_key_bsa);
   result = g_array_new (FALSE, FALSE, sizeof (guint));
   
   for (i = 0; i < n_nodes; i++)
@@ -1175,8 +1181,8 @@ signal_lookup_closure (SignalNode    *node,
 {
   ClassClosure *cc;
 
-  if (node->class_closure_bsa && node->class_closure_bsa->n_nodes == 1)
-    cc = G_BSEARCH_ARRAY_NODES (node->class_closure_bsa);
+  if (node->class_closure_bsa && g_bsearch_array_get_n_nodes (node->class_closure_bsa) == 1)
+    cc = g_bsearch_array_get_nth (node->class_closure_bsa, &g_class_closure_bconfig, 0);
   else
     cc = signal_find_class_closure (node, G_TYPE_FROM_INSTANCE (instance));
   return cc ? cc->closure : NULL;
@@ -1193,13 +1199,12 @@ signal_add_class_closure (SignalNode *node,
   node->test_class_offset = 0;
 
   if (!node->class_closure_bsa)
-    node->class_closure_bsa = g_bsearch_array_new (&g_class_closure_bconfig);
+    node->class_closure_bsa = g_bsearch_array_create (&g_class_closure_bconfig);
   key.instance_type = itype;
   key.closure = g_closure_ref (closure);
   node->class_closure_bsa = g_bsearch_array_insert (node->class_closure_bsa,
                                                    &g_class_closure_bconfig,
-                                                   &key,
-                                                   FALSE);
+                                                   &key);
   g_closure_sink (closure);
   if (node->c_marshaller && closure && G_CLOSURE_NEEDS_MARSHAL (closure))
     g_closure_set_marshal (closure, node->c_marshaller);
@@ -1300,10 +1305,10 @@ g_signal_newv (const gchar       *signal_name,
       key.itype = itype;
       key.quark = g_quark_from_string (node->name);
       key.signal_id = signal_id;
-      g_signal_key_bsa = g_bsearch_array_insert (g_signal_key_bsa, &g_signal_key_bconfig, &key, FALSE);
+      g_signal_key_bsa = g_bsearch_array_insert (g_signal_key_bsa, &g_signal_key_bconfig, &key);
       g_strdelimit (node->name, "_", '-');
       key.quark = g_quark_from_static_string (node->name);
-      g_signal_key_bsa = g_bsearch_array_insert (g_signal_key_bsa, &g_signal_key_bconfig, &key, FALSE);
+      g_signal_key_bsa = g_bsearch_array_insert (g_signal_key_bsa, &g_signal_key_bconfig, &key);
     }
   node->destroyed = FALSE;
   node->test_class_offset = 0;
@@ -1414,7 +1419,7 @@ signal_destroy_R (SignalNode *signal_node)
 
          g_closure_unref (cc->closure);
        }
-      g_bsearch_array_destroy (node.class_closure_bsa, &g_class_closure_bconfig);
+      g_bsearch_array_free (node.class_closure_bsa, &g_class_closure_bconfig);
     }
   g_free (node.accumulator);
   if (node.emission_hooks)
@@ -1789,7 +1794,7 @@ g_signal_handlers_destroy (gpointer instance)
                }
             }
         }
-      g_bsearch_array_destroy (hlbsa, &g_signal_hlbsa_bconfig);
+      g_bsearch_array_free (hlbsa, &g_signal_hlbsa_bconfig);
     }
   SIGNAL_UNLOCK ();
 }
index 67de4602a7f83db7c572f15710461314b6a43af4..1a9572c247f7c3bad55232dd019e37643107020d 100644 (file)
@@ -43,16 +43,18 @@ static gint transform_entries_cmp   (gconstpointer bsearch_node1,
 
 /* --- variables --- */
 static GBSearchArray *transform_array = NULL;
-static GBSearchConfig transform_bconfig = G_STATIC_BCONFIG (sizeof (TransformEntry),
-                                                           transform_entries_cmp,
-                                                           0);
+static GBSearchConfig transform_bconfig = {
+  sizeof (TransformEntry),
+  transform_entries_cmp,
+  0,
+};
 
 
 /* --- functions --- */
 void
 g_value_c_init (void)  /* sync with gtype.c */
 {
-  transform_array = g_bsearch_array_new (&transform_bconfig);
+  transform_array = g_bsearch_array_create (&transform_bconfig);
 }
 
 static inline void             /* keep this function in sync with gvaluecollector.h and gboxed.c */
@@ -285,16 +287,17 @@ g_value_register_transform_func (GType           src_type,
 
   entry.src_type = src_type;
   entry.dest_type = dest_type;
-  
+
+#if 0 /* let transform function replacement be a valid operation */
   if (g_bsearch_array_lookup (transform_array, &transform_bconfig, &entry))
     g_warning ("reregistering value transformation function (%p) for `%s' to `%s'",
               transform_func,
               g_type_name (src_type),
               g_type_name (dest_type));
+#endif
 
   entry.func = transform_func;
-
-  transform_array = g_bsearch_array_insert (transform_array, &transform_bconfig, &entry, TRUE);
+  transform_array = g_bsearch_array_replace (transform_array, &transform_bconfig, &entry);
 }
 
 gboolean