static gboolean criteria_test_greater_or_equal (GnmValue const *x, GnmCriteria *crit) { gnm_float xf, yf; GnmValue const *y = crit->x; switch (criteria_inspect_values (x, &xf, &yf, crit, FALSE)) { default: g_assert_not_reached (); case CRIT_NULL: case CRIT_WRONGTYPE: return FALSE; case CRIT_STRING: return go_utf8_collate_casefold (value_peek_string (x), value_peek_string (y)) >= 0; case CRIT_FLOAT: return xf >= yf; } }
int expr_name_cmp_by_name (GnmNamedExpr const *a, GnmNamedExpr const *b) { Sheet const *sheeta = a->pos.sheet; Sheet const *sheetb = b->pos.sheet; int res = 0; if (sheeta != sheetb) { /* Locals after non-locals. */ if (!sheeta || !sheetb) return (!sheeta) - (!sheetb); /* By non-local sheet order. */ res = g_utf8_collate (sheeta->name_case_insensitive, sheetb->name_case_insensitive); } if (res == 0) /* By name. */ res = go_utf8_collate_casefold (a->name->str, b->name->str); return res; }