struct mail_search_register {
ARRAY_DEFINE(args, struct mail_search_register_arg);
mail_search_register_fallback_t *fallback;
+
+ unsigned int args_sorted:1;
};
struct mail_search_register *mail_search_register_init(void)
unsigned int count)
{
array_append(®->args, arg, count);
- array_sort(®->args, mail_search_register_arg_cmp);
+ reg->args_sorted = FALSE;
}
void mail_search_register_fallback(struct mail_search_register *reg,
{
struct mail_search_register_arg arg;
+ if (!reg->args_sorted) {
+ array_sort(®->args, mail_search_register_arg_cmp);
+ reg->args_sorted = TRUE;
+ }
+
arg.key = key;
return array_bsearch(®->args, &arg, mail_search_register_arg_cmp);
}
*fallback_r = reg->fallback;
return TRUE;
}
-