Exemplo n.º 1
0
Arquivo: dict.c Projeto: HarmtH/vim
/*
 * Return TRUE when two dictionaries have exactly the same key/values.
 */
    int
dict_equal(
    dict_T	*d1,
    dict_T	*d2,
    int		ic,	/* ignore case for strings */
    int		recursive) /* TRUE when used recursively */
{
    hashitem_T	*hi;
    dictitem_T	*item2;
    int		todo;

    if (d1 == NULL && d2 == NULL)
	return TRUE;
    if (d1 == NULL || d2 == NULL)
	return FALSE;
    if (d1 == d2)
	return TRUE;
    if (dict_len(d1) != dict_len(d2))
	return FALSE;

    todo = (int)d1->dv_hashtab.ht_used;
    for (hi = d1->dv_hashtab.ht_array; todo > 0; ++hi)
    {
	if (!HASHITEM_EMPTY(hi))
	{
	    item2 = dict_find(d2, hi->hi_key, -1);
	    if (item2 == NULL)
		return FALSE;
	    if (!tv_equal(&HI2DI(hi)->di_tv, &item2->di_tv, ic, recursive))
		return FALSE;
	    --todo;
	}
    }
    return TRUE;
}
Exemplo n.º 2
0
void
case_dict_clear()
{
    struct dict *dict = dict();
    assert(dict_set(dict, "key1", 4, "val1") == DICT_OK);
    assert(dict_set(dict, "key2", 4, "val2") == DICT_OK);
    assert(dict_set(dict, "key3", 4, "val3") == DICT_OK);
    assert(dict_set(dict, "key4", 4, "val4") == DICT_OK);
    assert(dict_len(dict) == 4);
    dict_clear(dict);
    assert(dict_len(dict) == 0);
    dict_free(dict);
}
Exemplo n.º 3
0
void
case_dict_pop()
{
    struct dict *dict = dict();
    char *key = "key", *val = "val";
    size_t len = strlen(key);
    assert(dict_set(dict, key, len, val) == DICT_OK);
    assert(dict_len(dict) == 1);
    assert(dict_pop(dict, key, len) == val);
    assert(dict_len(dict) == 0);
    assert(dict_pop(dict, key, len) == NULL);
    assert(dict_len(dict) == 0);
    dict_free(dict);
}
Exemplo n.º 4
0
void
case_dict_resize()
{
    struct dict *dict = dict();
    assert(dict_set(dict, "key1", 4, "val1") == DICT_OK);
    assert(dict_set(dict, "key2", 4, "val2") == DICT_OK);
    assert(dict_set(dict, "key3", 4, "val3") == DICT_OK);
    assert(dict_set(dict, "key4", 4, "val4") == DICT_OK);
    assert(dict_len(dict) == 4);
    assert(dict->idx == 0 && dict_cap(dict) == 7);
    assert(dict_set(dict, "key5", 4, "val5") == DICT_OK);
    assert(dict_set(dict, "key6", 4, "val6") == DICT_OK);
    assert(dict_len(dict) == 6);
    assert(dict->idx == 1 && dict_cap(dict) == 17);
    dict_free(dict);
}