size_t pos)
{
size_t i;
-
+
i = (idx * (patterns_max_length + 1)) + pos;
-
+
if (i < list->size)
{
if (list->has[i]) return;
}
list->has[i] = 1;
-
+
i = list->size;
list->states[i].idx = idx;
list->states[i].pos = pos;
{
switch (*cl_tok)
{
- case 0:
- return EDJE_MATCH_SYNTAX_ERROR;
-
- case '!':
+ case 0:
+ return EDJE_MATCH_SYNTAX_ERROR;
+
+ case '!':
*ret = 1;
- return EDJE_MATCH_OK;
-
- default:
- *ret = 0;
- return EDJE_MATCH_OK;
+ return EDJE_MATCH_OK;
+
+ default:
+ *ret = 0;
+ return EDJE_MATCH_OK;
}
}
enum status status = patterns_not_found;
int pos = 1;
size_t neg;
-
+
if (_edje_match_patterns_exec_class_complement(cl + 1, &neg) != EDJE_MATCH_OK)
return EDJE_MATCH_SYNTAX_ERROR;
-
+
pos += neg;
-
+
do
{
pos += _edje_match_patterns_exec_class_token(&status, cl + pos, c);
}
while (cl[pos] && cl[pos] != ']');
-
+
if (status == patterns_syntax_error || ! cl[pos])
return EDJE_MATCH_SYNTAX_ERROR;
-
+
if (status == patterns_found)
*ret = neg ? 0 : pos + 1;
else
*ret = neg ? pos + 1 : 0;
-
+
return EDJE_MATCH_OK;
}
&& source_states->states[j].pos >= source_finals[source_states->states[j].idx])
{
Edje_Program *pr;
-
+
pr = programs[signal_states->states[i].idx];
if (pr)
{
&& source_states->states[j].pos >= source_finals[source_states->states[j].idx])
{
Edje_Signal_Callback *escb;
-
+
escb = eina_list_nth(callbacks, signal_states->states[i].idx);
if (escb)
{
for (c = string; *c && states->size; ++c)
{
size_t i;
-
+
_edje_match_states_clear(new_states, ppat->patterns_size, ppat->max_length);
-
+
for (i = 0; i < states->size; ++i)
{
const size_t idx = states->states[i].idx;
const size_t pos = states->states[i].pos;
-
+
if (!ppat->patterns[idx][pos])
continue;
else if (ppat->patterns[idx][pos] == '*')
else
{
size_t m;
-
+
if (_edje_match_patterns_exec_token(ppat->patterns[idx] + pos,
*c,
&m) != EDJE_MATCH_OK)
return NULL;
-
+
if (m)
_edje_match_states_insert(new_states, ppat->max_length, idx, pos + m);
}
}
{
Edje_States *tmp = states;
-
+
states = new_states;
new_states = tmp;
}
Eina_List *result = NULL;
Eina_Rbtree *new = NULL;
unsigned int i;
-
+
for (i = 0; i < count; ++i)
{
if (programs[i]->signal && !strpbrk(programs[i]->signal, "*?[\\")
&& programs[i]->source && !strpbrk(programs[i]->source, "*?[\\"))
{
Edje_Signal_Source_Char *item;
-
+
item = (Edje_Signal_Source_Char*) eina_rbtree_inline_lookup(new, programs[i]->signal, 0,
EINA_RBTREE_CMP_KEY_CB(_edje_signal_source_key_cmp), programs[i]->source);
if (!item)
{
item = malloc(sizeof (Edje_Signal_Source_Char));
if (!item) continue;
-
+
item->signal = programs[i]->signal;
item->source = programs[i]->source;
item->list = NULL;
-
+
new = eina_rbtree_inline_insert(new, EINA_RBTREE_GET(item),
EINA_RBTREE_CMP_NODE_CB(_edje_signal_source_node_cmp), NULL);
}
-
+
item->list = eina_list_prepend(item->list, programs[i]);
}
else
result = eina_list_prepend(result, programs[i]);
}
-
+
*tree = new;
return result;
}
&& callback->source && !strpbrk(callback->source, "*?[\\"))
{
Edje_Signal_Source_Char *item;
-
+
item = (Edje_Signal_Source_Char*) eina_rbtree_inline_lookup(new, callback->signal, 0,
EINA_RBTREE_CMP_KEY_CB(_edje_signal_source_key_cmp), callback->source);
if (!item)
{
item = malloc(sizeof (Edje_Signal_Source_Char));
if (!item) continue;
-
+
item->signal = callback->signal;
item->source = callback->source;
item->list = NULL;
-
+
new = eina_rbtree_inline_insert(new, EINA_RBTREE_GET(item),
EINA_RBTREE_CMP_NODE_CB(_edje_signal_source_node_cmp), NULL);
}
-
+
item->list = eina_list_prepend(item->list, callback);
}
else