/* Create and init matcher. */ struct _vte_matcher * _vte_matcher_new(const char *emulation, struct _vte_termcap *termcap) { struct _vte_matcher *ret = NULL; g_static_mutex_lock(&_vte_matcher_mutex); if (emulation == NULL) { emulation = ""; } if (_vte_matcher_cache == NULL) { _vte_matcher_cache = g_cache_new(_vte_matcher_create, _vte_matcher_destroy, (GCacheDupFunc) g_strdup, g_free, g_str_hash, g_direct_hash, g_str_equal); } ret = g_cache_insert(_vte_matcher_cache, (gpointer) emulation); if (ret->match == NULL) { ret->impl = ret->impl->klass->create(); ret->match = ret->impl->klass->match; _vte_matcher_init(ret, emulation, termcap); } g_static_mutex_unlock(&_vte_matcher_mutex); return ret; }
static void gtk_gc_init (void) { initialize = FALSE; gc_cache = g_cache_new ((GCacheNewFunc) gtk_gc_new, (GCacheDestroyFunc) gtk_gc_destroy, (GCacheDupFunc) gtk_gc_key_dup, (GCacheDestroyFunc) gtk_gc_key_destroy, (GHashFunc) gtk_gc_key_hash, (GHashFunc) gtk_gc_value_hash, (GCompareFunc) gtk_gc_key_compare); gc_drawable_ht = g_hash_table_new ((GHashFunc) gtk_gc_drawable_hash, (GCompareFunc) gtk_gc_drawable_compare); }
VteTermcap * _vte_termcap_new(const char *filename) { VteTermcap *result; g_static_mutex_lock (&_vte_termcap_mutex); if (_vte_termcap_cache == NULL) _vte_termcap_cache = g_cache_new((GCacheNewFunc) _vte_termcap_create, (GCacheDestroyFunc) _vte_termcap_destroy, (GCacheDupFunc) g_strdup, (GCacheDestroyFunc) g_free, g_str_hash, g_direct_hash, g_str_equal); result = g_cache_insert (_vte_termcap_cache, (gpointer) filename); g_static_mutex_unlock (&_vte_termcap_mutex); return result; }
void cache_test() { char *str1,*str2,*str3; GCache *cache = NULL; gint user_data = 0; g_assert((cache = g_cache_new( (GCacheNewFunc) g_ascii_strup, g_free, (GCacheDupFunc) g_strdup, g_free, g_str_hash, g_str_hash, g_str_equal)) != NULL); str1 = g_cache_insert(cache,"test"); g_assert(!strcmp("TEST",str1)); str2 = g_cache_insert(cache,"test"); g_assert(!strcmp("TEST",str1)); str3 = g_cache_insert(cache,"glib"); g_assert(!strcmp("GLIB",str3)); g_cache_key_foreach (cache,(GHFunc)function,&user_data); //g_cache_key_foreach would call function twice and make user_data == 2 g_assert(user_data == 2); g_cache_value_foreach (cache,(GHFunc)function,&user_data); //g_cache_value_foreach would call function twice and make user_data == 4 g_assert(user_data == 4); g_cache_remove(cache,str1); g_cache_remove(cache,str2); g_cache_remove(cache,str3); g_cache_destroy(cache); }
else if (strcmp (file, "<default-inradio>") == 0) pixbuf = gdk_pixbuf_from_pixdata (&inradio_img, TRUE, &err); else pixbuf = gdk_pixbuf_new_from_file (file, &err); if (err != NULL) g_warning ("Unable to load \"%s\" (%s).", file, err->message); return pixbuf; } static void mgicchikn_rc_style_base_init (MgicChiknRcStyleClass * class) { class->raw_pixbufs = g_cache_new ((GCacheNewFunc) load_raw_pixbuf, g_object_unref, (GCacheDupFunc) g_strdup, g_free, g_str_hash, g_direct_hash, g_str_equal); } static void mgicchikn_rc_style_base_finalize (MgicChiknRcStyleClass * class) { g_cache_destroy (class->raw_pixbufs); } static void mgicchikn_rc_style_class_init (MgicChiknRcStyleClass * class) { GtkRcStyleClass *rc_style_class = GTK_RC_STYLE_CLASS (class);