Exemplo n.º 1
0
static void handle_triggers(struct term_client *client, char *data,
                            size_t length)
{
    struct term_trigger *trigger = NULL;

    collections_list_traverse_start(client->triggers);

    while ((trigger = collections_list_traverse_next(client->triggers)) != NULL)
    {
        for (int i = 0; i < length; i++) {
            if (data[i] == trigger->trigger_character) {
                /* call closure associated with trigger */
                trigger->closure.handler(trigger->closure.arg);
            }
        }
    }

    collections_list_traverse_end(client->triggers);
}
Exemplo n.º 2
0
static collections_listnode* collections_hash_get_next_valid_bucket(collections_hash_table* t)
{
	collections_listnode* bucket;

	do {
		t->cur_bucket_num ++;
		if (t->cur_bucket_num < t->num_buckets) {
			if (!t->buckets[t->cur_bucket_num]) {
				continue;
			}
		} else {
			return NULL;
		}
	} while (collections_list_size(t->buckets[t->cur_bucket_num]) <= 0);

	bucket = t->buckets[t->cur_bucket_num];
	collections_list_traverse_start(bucket);

	return bucket;
}