void mowgli_global_storage_put(char *name, void *value) { mowgli_spinlock_lock(mowgli_global_storage_lock, NULL, name); mowgli_dictionary_add(mowgli_global_storage_dict, name, value); mowgli_spinlock_unlock(mowgli_global_storage_lock, NULL, name); }
static void read_all_frames (VFSFile * handle, gint version, gboolean syncsafe, gint data_size, mowgli_dictionary_t * dict) { gint pos; for (pos = 0; pos < data_size; ) { gint frame_size, size; gchar key[5]; guchar * data; GenericFrame * frame; if (! read_frame (handle, data_size - pos, version, syncsafe, & frame_size, key, & data, & size)) break; pos += frame_size; if (mowgli_dictionary_retrieve (dict, key) != NULL) { TAGDBG ("Discarding duplicate frame %s.\n", key); g_free (data); continue; } frame = g_malloc (sizeof (GenericFrame)); strcpy (frame->key, key); frame->data = data; frame->size = size; mowgli_dictionary_add (dict, key, frame); } }
static GenericFrame * add_generic_frame (gint id, gint size, mowgli_dictionary_t * dict) { GenericFrame * frame = mowgli_dictionary_retrieve (dict, id3_frames[id]); if (frame == NULL) { frame = g_malloc (sizeof (GenericFrame)); strcpy (frame->key, id3_frames[id]); mowgli_dictionary_add (dict, frame->key, frame); } else g_free (frame->data); frame->data = g_malloc (size); frame->size = size; return frame; }
Formatter * formatter_register(const gchar *key, const gchar *format, int args) { Formatter *f; if (!formatter_initialized) { formatters = mowgli_dictionary_create(g_ascii_strcasecmp); formatter_initialized++; } f = g_slice_new0(Formatter); f->key = g_strdup(key); f->format = g_strdup(format); f->args = args; mowgli_dictionary_add(formatters, key, f); return f; }
int main(int argc, const char *argv[]) { mowgli_dictionary_t *test_dict; mowgli_random_t *r; char key[10]; long ans[100], i; int pass = 0, fail = 0; mowgli_init(); test_dict = mowgli_dictionary_create(strcasecmp); r = mowgli_random_create(); for (i = 0; i < 100; i++) { ans[i] = mowgli_random_int(r); snprintf(key, 10, "%ldkey%ld", i, i); mowgli_dictionary_add(test_dict, key, (void *) ans[i]); } for (i = 0; i < 100; i++) { snprintf(key, 10, "%ldkey%ld", i, i); if ( (long) mowgli_dictionary_retrieve(test_dict, key) != ans[i]) { printf("FAIL %ld %p[%p]\n", i, mowgli_dictionary_retrieve(test_dict, key), (void*) ans[i]); fail++; } else { printf("PASS %ld %p[%p]\n", i, mowgli_dictionary_retrieve(test_dict, key), (void*) ans[i]); pass++; } } printf("%d tests failed, %d tests passed.\n", fail, pass); return 0; }