From a9477b57543982cc89598cf2ba68ee7b0164bf01 Mon Sep 17 00:00:00 2001 From: Ran Benita Date: Fri, 18 May 2012 12:02:29 +0300 Subject: [PATCH] rules: reformat CheckApplyRules and ApplyPartialMatches Signed-off-by: Ran Benita --- src/xkbcomp/rules.c | 62 ++++++++++++++++++++++++++--------------------------- 1 file changed, 30 insertions(+), 32 deletions(-) diff --git a/src/xkbcomp/rules.c b/src/xkbcomp/rules.c index c6e22e0..9b9bf73 100644 --- a/src/xkbcomp/rules.c +++ b/src/xkbcomp/rules.c @@ -853,47 +853,42 @@ apply_rule_if_matches(struct rules *rules, struct rule *rule, } static void -XkbRF_ClearPartialMatches(struct rules *rules) +clear_partial_matches(struct rules *rules) { int i; - struct rule *rule; - for (i=0,rule=rules->rules;inum_rules;i++,rule++) { - rule->flags &= ~RULE_FLAG_PENDING_MATCH; - } + for (i = 0; i < rules->num_rules; i++) + rules->rules[i].flags &= ~RULE_FLAG_PENDING_MATCH; } static void -XkbRF_ApplyPartialMatches(struct rules *rules, - struct xkb_component_names *names) +apply_partial_matches(struct rules *rules, struct xkb_component_names *kccgst) { int i; - struct rule *rule; - for (rule = rules->rules, i = 0; i < rules->num_rules; i++, rule++) { - if ((rule->flags & RULE_FLAG_PENDING_MATCH)==0) - continue; - apply_rule(rule, names); - } + for (i = 0; i < rules->num_rules; i++) + if (rules->rules[i].flags & RULE_FLAG_PENDING_MATCH) + apply_rule(&rules->rules[i], kccgst); } static void -XkbRF_CheckApplyRules(struct rules *rules, struct multi_defs *mdefs, - struct xkb_component_names *names, unsigned int flags) +apply_matching_rules(struct rules *rules, struct multi_defs *mdefs, + struct xkb_component_names *kccgst, unsigned int flags) { int i; + int skip = -1; struct rule *rule; - int skip; - for (rule = rules->rules, i=0; i < rules->num_rules; rule++, i++) { - if ((rule->flags & flags) != flags) - continue; - skip = apply_rule_if_matches(rules, rule, mdefs, names); - if (skip && !(flags & RULE_FLAG_OPTION)) { - for ( ;(i < rules->num_rules) && (rule->number == skip); - rule++, i++); - rule--; i--; - } + for (i = 0; i < rules->num_rules; i++) { + rule = &rules->rules[i]; + + if ((rule->flags & flags) != flags) + continue; + + if ((flags & RULE_FLAG_OPTION) == 0 && rule->number == skip) + continue; + + skip = apply_rule_if_matches(rules, rule, mdefs, kccgst); } } @@ -1007,13 +1002,16 @@ XkbcRF_GetComponents(struct rules *rules, struct var_defs *defs, make_multi_defs(&mdefs, defs); memset(names, 0, sizeof(struct xkb_component_names)); - XkbRF_ClearPartialMatches(rules); - XkbRF_CheckApplyRules(rules, &mdefs, names, RULE_FLAG_NORMAL); - XkbRF_ApplyPartialMatches(rules, names); - XkbRF_CheckApplyRules(rules, &mdefs, names, RULE_FLAG_APPEND); - XkbRF_ApplyPartialMatches(rules, names); - XkbRF_CheckApplyRules(rules, &mdefs, names, RULE_FLAG_OPTION); - XkbRF_ApplyPartialMatches(rules, names); + clear_partial_matches(rules); + + apply_matching_rules(rules, &mdefs, names, RULE_FLAG_NORMAL); + apply_partial_matches(rules, names); + + apply_matching_rules(rules, &mdefs, names, RULE_FLAG_APPEND); + apply_partial_matches(rules, names); + + apply_matching_rules(rules, &mdefs, names, RULE_FLAG_OPTION); + apply_partial_matches(rules, names); names->keycodes = XkbRF_SubstituteVars(names->keycodes, &mdefs); names->symbols = XkbRF_SubstituteVars(names->symbols, &mdefs); -- 2.7.4