seq-range-array.c revision 6646bd844c85d5b27451199d8868b6d2357cd293
bcb4e51a409d94ae670de96afb8483a4f7855294Stephan Bosch/* Copyright (c) 2005-2008 Dovecot authors, see the included COPYING file */
662bb64be818407c6719a69780411f7ca8d6c96fAki Tuomistatic bool seq_range_lookup(const ARRAY_TYPE(seq_range) *array,
662bb64be818407c6719a69780411f7ca8d6c96fAki Tuomi /* it's already in the range */
662bb64be818407c6719a69780411f7ca8d6c96fAki Tuomivoid seq_range_array_add(ARRAY_TYPE(seq_range) *array,
662bb64be818407c6719a69780411f7ca8d6c96fAki Tuomi /* quick checks */
662bb64be818407c6719a69780411f7ca8d6c96fAki Tuomi /* grow last range */
662bb64be818407c6719a69780411f7ca8d6c96fAki Tuomi /* grow down first range */
662bb64be818407c6719a69780411f7ca8d6c96fAki Tuomi /* somewhere in the middle, array is sorted so find it with
662bb64be818407c6719a69780411f7ca8d6c96fAki Tuomi binary search */
662bb64be818407c6719a69780411f7ca8d6c96fAki Tuomi /* idx == count couldn't happen because we already handle it above */
662bb64be818407c6719a69780411f7ca8d6c96fAki Tuomi i_assert(data[idx].seq1 > seq || data[idx].seq2 < seq);
662bb64be818407c6719a69780411f7ca8d6c96fAki Tuomi i_assert(idx+1 < count); /* already handled above */
662bb64be818407c6719a69780411f7ca8d6c96fAki Tuomivoid seq_range_array_add_range(ARRAY_TYPE(seq_range) *array,
662bb64be818407c6719a69780411f7ca8d6c96fAki Tuomi /* no overlapping */
unsigned int i, count;
for (i = 0; i < count; i++)
return FALSE;
if (count == 0)
return FALSE;
return FALSE;
return TRUE;
return TRUE;
return TRUE;
return FALSE;
remove_count++;
return remove_count;
seq1++;
remove_count++;
return remove_count;
return remove_count;
return remove_count;
unsigned int ret = 0;
unsigned int i, count;
for (i = 0; i < count; i++) {
return ret;
for (i = 0; i < count; i++) {
return ret;
unsigned int idx;
unsigned int i, count;
count = 0;
if (count == 0) {
for (i = 0; i < count; ) {
return TRUE;
return FALSE;