Lines Matching defs:rule
372 RemapSpec * remap, XkbRF_RulePtr rule, XkbRF_GroupPtr group)
440 rule->flags = 0;
441 rule->number = remap->number;
443 rule->flags |= XkbRF_Option;
445 rule->flags |= XkbRF_Append;
447 rule->flags |= XkbRF_Normal;
448 rule->model = Xstrdup(tmp.name[MODEL]);
449 rule->layout = Xstrdup(tmp.name[LAYOUT]);
450 rule->variant = Xstrdup(tmp.name[VARIANT]);
451 rule->option = Xstrdup(tmp.name[OPTION]);
453 rule->keycodes = Xstrdup(tmp.name[KEYCODES]);
454 rule->symbols = Xstrdup(tmp.name[SYMBOLS]);
455 rule->types = Xstrdup(tmp.name[TYPES]);
456 rule->compat = Xstrdup(tmp.name[COMPAT]);
457 rule->geometry = Xstrdup(tmp.name[GEOMETRY]);
459 rule->layout_num = rule->variant_num = 0;
463 rule->layout_num = remap->remap[i].index;
465 rule->variant_num = remap->remap[i].index;
592 XkbRF_ApplyRule(XkbRF_RulePtr rule, XkbComponentNamesPtr names)
594 rule->flags &= ~XkbRF_PendingMatch; /* clear the flag because it's applied */
596 Apply(rule->keycodes, &names->keycodes);
597 Apply(rule->symbols, &names->symbols);
598 Apply(rule->types, &names->types);
599 Apply(rule->compat, &names->compat);
600 Apply(rule->geometry, &names->geometry);
626 XkbRF_CheckApplyRule(XkbRF_RulePtr rule,
632 if (rule->model != NULL) {
635 if (strcmp(rule->model, "*") == 0) {
639 if (rule->model[0] == '$') {
640 if (!CheckGroup(rules, rule->model, mdefs->model))
644 if (strcmp(rule->model, mdefs->model) != 0)
649 if (rule->option != NULL) {
652 if ((!MatchOneOf(rule->option, mdefs->options)))
656 if (rule->layout != NULL) {
657 if (mdefs->layout[rule->layout_num] == NULL ||
658 *mdefs->layout[rule->layout_num] == '\0')
660 if (strcmp(rule->layout, "*") == 0) {
664 if (rule->layout[0] == '$') {
665 if (!CheckGroup(rules, rule->layout,
666 mdefs->layout[rule->layout_num]))
670 if (strcmp(rule->layout, mdefs->layout[rule->layout_num]) != 0)
675 if (rule->variant != NULL) {
676 if (mdefs->variant[rule->variant_num] == NULL ||
677 *mdefs->variant[rule->variant_num] == '\0')
679 if (strcmp(rule->variant, "*") == 0) {
683 if (rule->variant[0] == '$') {
684 if (!CheckGroup(rules, rule->variant,
685 mdefs->variant[rule->variant_num]))
689 if (strcmp(rule->variant,
690 mdefs->variant[rule->variant_num]) != 0)
696 rule->flags |= XkbRF_PendingMatch;
697 return rule->number;
700 XkbRF_ApplyRule(rule, names);
701 return rule->number;
708 XkbRF_RulePtr rule;
710 for (i = 0, rule = rules->rules; i < rules->num_rules; i++, rule++) {
711 rule->flags &= ~XkbRF_PendingMatch;
719 XkbRF_RulePtr rule;
721 for (rule = rules->rules, i = 0; i < rules->num_rules; i++, rule++) {
722 if ((rule->flags & XkbRF_PendingMatch) == 0)
724 XkbRF_ApplyRule(rule, names);
734 XkbRF_RulePtr rule;
737 for (rule = rules->rules, i = 0; i < rules->num_rules; rule++, i++) {
738 if ((rule->flags & flags) != flags)
740 skip = XkbRF_CheckApplyRule(rule, mdefs, names, rules);
742 for (; (i < rules->num_rules) && (rule->number == skip);
743 rule++, i++);
744 rule--;
940 XkbRF_RuleRec trule, *rule;
957 if ((rule = XkbRF_AddRule(rules)) != NULL) {
958 *rule = trule;
1014 XkbRF_RulePtr rule;
1020 for (i = 0, rule = rules->rules; i < rules->num_rules; i++, rule++) {
1021 free((void *) rule->model);
1022 free((void *) rule->layout);
1023 free((void *) rule->variant);
1024 free((void *) rule->option);
1025 free((void *) rule->keycodes);
1026 free((void *) rule->symbols);
1027 free((void *) rule->types);
1028 free((void *) rule->compat);
1029 free((void *) rule->geometry);
1030 memset((char *) rule, 0, sizeof(XkbRF_RuleRec));